Use \n instead of \r\n for EOL when armoring (#1183)

This commit is contained in:
larabr 2020-12-15 21:28:04 +01:00 committed by Daniel Huigens
parent 4efeac3ad1
commit c34dede6de
6 changed files with 34 additions and 34 deletions

View File

@ -103,15 +103,15 @@ function getType(text) {
function addheader(customComment) { function addheader(customComment) {
let result = ""; let result = "";
if (config.showVersion) { if (config.showVersion) {
result += "Version: " + config.versionString + '\r\n'; result += "Version: " + config.versionString + '\n';
} }
if (config.showComment) { if (config.showComment) {
result += "Comment: " + config.commentString + '\r\n'; result += "Comment: " + config.commentString + '\n';
} }
if (customComment) { if (customComment) {
result += "Comment: " + customComment + '\r\n'; result += "Comment: " + customComment + '\n';
} }
result += '\r\n'; result += '\n';
return result; return result;
} }
@ -331,7 +331,7 @@ export function unarmor(input) {
}); });
const writer = stream.getWriter(writable); const writer = stream.getWriter(writable);
try { try {
const checksumVerifiedString = (await checksumVerified).replace('\r\n', ''); const checksumVerifiedString = (await checksumVerified).replace('\n', '');
if (checksum !== checksumVerifiedString && (checksum || config.checksumRequired)) { if (checksum !== checksumVerifiedString && (checksum || config.checksumRequired)) {
throw new Error("Ascii armor integrity check on message failed: '" + checksum + "' should be '" + throw new Error("Ascii armor integrity check on message failed: '" + checksum + "' should be '" +
checksumVerifiedString + "'"); checksumVerifiedString + "'");
@ -371,56 +371,56 @@ export function armor(messagetype, body, partindex, parttotal, customComment) {
const result = []; const result = [];
switch (messagetype) { switch (messagetype) {
case enums.armor.multipartSection: case enums.armor.multipartSection:
result.push("-----BEGIN PGP MESSAGE, PART " + partindex + "/" + parttotal + "-----\r\n"); result.push("-----BEGIN PGP MESSAGE, PART " + partindex + "/" + parttotal + "-----\n");
result.push(addheader(customComment)); result.push(addheader(customComment));
result.push(base64.encode(body)); result.push(base64.encode(body));
result.push("=", getCheckSum(bodyClone)); result.push("=", getCheckSum(bodyClone));
result.push("-----END PGP MESSAGE, PART " + partindex + "/" + parttotal + "-----\r\n"); result.push("-----END PGP MESSAGE, PART " + partindex + "/" + parttotal + "-----\n");
break; break;
case enums.armor.multipartLast: case enums.armor.multipartLast:
result.push("-----BEGIN PGP MESSAGE, PART " + partindex + "-----\r\n"); result.push("-----BEGIN PGP MESSAGE, PART " + partindex + "-----\n");
result.push(addheader(customComment)); result.push(addheader(customComment));
result.push(base64.encode(body)); result.push(base64.encode(body));
result.push("=", getCheckSum(bodyClone)); result.push("=", getCheckSum(bodyClone));
result.push("-----END PGP MESSAGE, PART " + partindex + "-----\r\n"); result.push("-----END PGP MESSAGE, PART " + partindex + "-----\n");
break; break;
case enums.armor.signed: case enums.armor.signed:
result.push("\r\n-----BEGIN PGP SIGNED MESSAGE-----\r\n"); result.push("\n-----BEGIN PGP SIGNED MESSAGE-----\n");
result.push("Hash: " + hash + "\r\n\r\n"); result.push("Hash: " + hash + "\n\n");
result.push(text.replace(/^-/mg, "- -")); result.push(text.replace(/^-/mg, "- -"));
result.push("\r\n-----BEGIN PGP SIGNATURE-----\r\n"); result.push("\n-----BEGIN PGP SIGNATURE-----\n");
result.push(addheader(customComment)); result.push(addheader(customComment));
result.push(base64.encode(body)); result.push(base64.encode(body));
result.push("=", getCheckSum(bodyClone)); result.push("=", getCheckSum(bodyClone));
result.push("-----END PGP SIGNATURE-----\r\n"); result.push("-----END PGP SIGNATURE-----\n");
break; break;
case enums.armor.message: case enums.armor.message:
result.push("-----BEGIN PGP MESSAGE-----\r\n"); result.push("-----BEGIN PGP MESSAGE-----\n");
result.push(addheader(customComment)); result.push(addheader(customComment));
result.push(base64.encode(body)); result.push(base64.encode(body));
result.push("=", getCheckSum(bodyClone)); result.push("=", getCheckSum(bodyClone));
result.push("-----END PGP MESSAGE-----\r\n"); result.push("-----END PGP MESSAGE-----\n");
break; break;
case enums.armor.publicKey: case enums.armor.publicKey:
result.push("-----BEGIN PGP PUBLIC KEY BLOCK-----\r\n"); result.push("-----BEGIN PGP PUBLIC KEY BLOCK-----\n");
result.push(addheader(customComment)); result.push(addheader(customComment));
result.push(base64.encode(body)); result.push(base64.encode(body));
result.push("=", getCheckSum(bodyClone)); result.push("=", getCheckSum(bodyClone));
result.push("-----END PGP PUBLIC KEY BLOCK-----\r\n"); result.push("-----END PGP PUBLIC KEY BLOCK-----\n");
break; break;
case enums.armor.privateKey: case enums.armor.privateKey:
result.push("-----BEGIN PGP PRIVATE KEY BLOCK-----\r\n"); result.push("-----BEGIN PGP PRIVATE KEY BLOCK-----\n");
result.push(addheader(customComment)); result.push(addheader(customComment));
result.push(base64.encode(body)); result.push(base64.encode(body));
result.push("=", getCheckSum(bodyClone)); result.push("=", getCheckSum(bodyClone));
result.push("-----END PGP PRIVATE KEY BLOCK-----\r\n"); result.push("-----END PGP PRIVATE KEY BLOCK-----\n");
break; break;
case enums.armor.signature: case enums.armor.signature:
result.push("-----BEGIN PGP SIGNATURE-----\r\n"); result.push("-----BEGIN PGP SIGNATURE-----\n");
result.push(addheader(customComment)); result.push(addheader(customComment));
result.push(base64.encode(body)); result.push(base64.encode(body));
result.push("=", getCheckSum(bodyClone)); result.push("=", getCheckSum(bodyClone));
result.push("-----END PGP SIGNATURE-----\r\n"); result.push("-----END PGP SIGNATURE-----\n");
break; break;
} }

View File

@ -52,11 +52,11 @@ export function encode(data) {
const encoded = encodeChunk(buf.subarray(0, bytes)); const encoded = encodeChunk(buf.subarray(0, bytes));
for (let i = 0; i < lines; i++) { for (let i = 0; i < lines; i++) {
r.push(encoded.substr(i * 60, 60)); r.push(encoded.substr(i * 60, 60));
r.push('\r\n'); r.push('\n');
} }
buf = buf.subarray(bytes); buf = buf.subarray(bytes);
return r.join(''); return r.join('');
}, () => (buf.length ? encodeChunk(buf) + '\r\n' : '')); }, () => (buf.length ? encodeChunk(buf) + '\n' : ''));
} }
/** /**

View File

@ -381,11 +381,11 @@ NJCB6+LWtabSoVIjNVgKwyKqyTLaESNwC2ogZwkdE8qPGiDFEHo4Gg9zuRof
const armor = await openpgp.stream.readToEnd(openpgp.armor(type, data)); const armor = await openpgp.stream.readToEnd(openpgp.armor(type, data));
expect( expect(
armor armor
.replace(/^(Version|Comment): .*$\r\n/mg, '') .replace(/^(Version|Comment): .*$\n/mg, '')
).to.equal( ).to.equal(
pubKey pubKey
.replace('\n=', '=') .replace('\n=', '=')
.replace(/\n/g, '\r\n') .replace(/\n\r/g, '\n')
); );
}); });

View File

@ -3110,7 +3110,7 @@ module.exports = () => describe('Key', function() {
await packetlist.read(input.data, { SignaturePacket: openpgp.SignaturePacket }); await packetlist.read(input.data, { SignaturePacket: openpgp.SignaturePacket });
const armored = openpgp.armor(openpgp.enums.armor.publicKey, packetlist.write()); const armored = openpgp.armor(openpgp.enums.armor.publicKey, packetlist.write());
expect(revocationCertificate.replace(/^Comment: .*$\r\n/mg, '')).to.equal(armored.replace(/^Comment: .*$\r\n/mg, '')); expect(revocationCertificate.replace(/^Comment: .*$\n/mg, '')).to.equal(armored.replace(/^Comment: .*$\n/mg, ''));
}); });
it('getRevocationCertificate() should have an appropriate comment', async function() { it('getRevocationCertificate() should have an appropriate comment', async function() {

View File

@ -894,7 +894,7 @@ hUhMKMuiM3pRwdIyDOItkUWQmjEEw7/XmhgInkXsCw==
const priv_key_gnupg_ext = await openpgp.readArmoredKey(flowcrypt_stripped_key); const priv_key_gnupg_ext = await openpgp.readArmoredKey(flowcrypt_stripped_key);
await priv_key_gnupg_ext.decrypt('FlowCrypt'); await priv_key_gnupg_ext.decrypt('FlowCrypt');
const sig = await openpgp.sign({ message: openpgp.Message.fromText('test'), privateKeys: [priv_key_gnupg_ext], date: new Date('2018-12-17T03:24:00') }); const sig = await openpgp.sign({ message: openpgp.Message.fromText('test'), privateKeys: [priv_key_gnupg_ext], date: new Date('2018-12-17T03:24:00') });
expect(sig).to.match(/-----END PGP MESSAGE-----\r\n$/); expect(sig).to.match(/-----END PGP MESSAGE-----\n$/);
}); });
it('Supports non-human-readable notations', async function() { it('Supports non-human-readable notations', async function() {

View File

@ -196,7 +196,7 @@ function tests() {
passwords: ['test'], passwords: ['test'],
}); });
const reader = openpgp.stream.getReader(encrypted); const reader = openpgp.stream.getReader(encrypted);
expect(await reader.peekBytes(1024)).to.match(/^-----BEGIN PGP MESSAGE-----\r\n/); expect(await reader.peekBytes(1024)).to.match(/^-----BEGIN PGP MESSAGE-----\n/);
dataArrived(); dataArrived();
reader.releaseLock(); reader.releaseLock();
const msgAsciiArmored = await openpgp.stream.readToEnd(encrypted); const msgAsciiArmored = await openpgp.stream.readToEnd(encrypted);
@ -215,7 +215,7 @@ function tests() {
passwords: ['test'], passwords: ['test'],
}); });
const reader = openpgp.stream.getReader(encrypted); const reader = openpgp.stream.getReader(encrypted);
expect(await reader.readBytes(1024)).to.match(/^-----BEGIN PGP MESSAGE-----\r\n/); expect(await reader.readBytes(1024)).to.match(/^-----BEGIN PGP MESSAGE-----\n/);
dataArrived(); dataArrived();
reader.releaseLock(); reader.releaseLock();
await openpgp.stream.cancel(encrypted); await openpgp.stream.cancel(encrypted);
@ -228,7 +228,7 @@ function tests() {
privateKeys: privKey privateKeys: privKey
}); });
const reader = openpgp.stream.getReader(signed); const reader = openpgp.stream.getReader(signed);
expect(await reader.readBytes(1024)).to.match(/^-----BEGIN PGP MESSAGE-----\r\n/); expect(await reader.readBytes(1024)).to.match(/^-----BEGIN PGP MESSAGE-----\n/);
dataArrived(); dataArrived();
reader.releaseLock(); reader.releaseLock();
await openpgp.stream.cancel(signed); await openpgp.stream.cancel(signed);
@ -658,7 +658,7 @@ function tests() {
expect(openpgp.stream.isStream(encrypted)).to.equal(expectedType); expect(openpgp.stream.isStream(encrypted)).to.equal(expectedType);
const reader = openpgp.stream.getReader(encrypted); const reader = openpgp.stream.getReader(encrypted);
expect(await reader.readBytes(1024)).to.match(/^-----BEGIN PGP MESSAGE-----\r\n/); expect(await reader.readBytes(1024)).to.match(/^-----BEGIN PGP MESSAGE-----\n/);
dataArrived(); dataArrived();
await new Promise(resolve => setTimeout(resolve, 3000)); await new Promise(resolve => setTimeout(resolve, 3000));
expect(i).to.be.lessThan(expectedType === 'web' ? 50 : 100); expect(i).to.be.lessThan(expectedType === 'web' ? 50 : 100);
@ -672,7 +672,7 @@ function tests() {
expect(openpgp.stream.isStream(signed)).to.equal(expectedType); expect(openpgp.stream.isStream(signed)).to.equal(expectedType);
const reader = openpgp.stream.getReader(signed); const reader = openpgp.stream.getReader(signed);
expect(await reader.readBytes(1024)).to.match(/^-----BEGIN PGP MESSAGE-----\r\n/); expect(await reader.readBytes(1024)).to.match(/^-----BEGIN PGP MESSAGE-----\n/);
dataArrived(); dataArrived();
await new Promise(resolve => setTimeout(resolve, 3000)); await new Promise(resolve => setTimeout(resolve, 3000));
expect(i).to.be.lessThan(expectedType === 'web' ? 50 : 100); expect(i).to.be.lessThan(expectedType === 'web' ? 50 : 100);
@ -860,7 +860,7 @@ function tests() {
}); });
expect(openpgp.stream.isStream(signed)).to.equal(expectedType); expect(openpgp.stream.isStream(signed)).to.equal(expectedType);
const reader = openpgp.stream.getReader(signed); const reader = openpgp.stream.getReader(signed);
expect((await reader.readBytes(31)).toString('utf8')).to.equal('-----BEGIN PGP SIGNATURE-----\r\n'); expect((await reader.readBytes(30)).toString('utf8')).to.equal('-----BEGIN PGP SIGNATURE-----\n');
dataArrived(); dataArrived();
await new Promise(resolve => setTimeout(resolve, 3000)); await new Promise(resolve => setTimeout(resolve, 3000));
expect(i).to.be.greaterThan(100); expect(i).to.be.greaterThan(100);
@ -874,7 +874,7 @@ function tests() {
}); });
expect(openpgp.stream.isStream(signed)).to.equal(expectedType); expect(openpgp.stream.isStream(signed)).to.equal(expectedType);
const reader = openpgp.stream.getReader(signed); const reader = openpgp.stream.getReader(signed);
expect((await reader.readBytes(31)).toString('utf8')).to.equal('-----BEGIN PGP SIGNATURE-----\r\n'); expect((await reader.readBytes(30)).toString('utf8')).to.equal('-----BEGIN PGP SIGNATURE-----\n');
dataArrived(); dataArrived();
reader.releaseLock(); reader.releaseLock();
await openpgp.stream.cancel(signed, new Error('canceled by test')); await openpgp.stream.cancel(signed, new Error('canceled by test'));