diff --git a/test/general/armor.js b/test/general/armor.js index f5ceb2e3..7988df98 100644 --- a/test/general/armor.js +++ b/test/general/armor.js @@ -131,7 +131,7 @@ describe("ASCII armor", function() { expect(msg).to.throw(Error, /Unknown ASCII armor type/); }); - it('Armor checksum validation', function () { + it('Armor checksum validation - mismatch', function () { var privKey = ['-----BEGIN PGP PRIVATE KEY BLOCK-----', 'Version: OpenPGP.js v0.3.0', @@ -152,9 +152,96 @@ describe("ASCII armor", function() { '=wJN@', '-----END PGP PRIVATE KEY BLOCK-----'].join('\n'); - var result = openpgp.key.readArmored(privKey); - expect(result.err).to.exist; - expect(result.err[0].message).to.match(/Ascii armor integrity check on message failed/); + // try with default config + var result_1 = openpgp.key.readArmored(privKey); + expect(result_1.err).to.exist; + expect(result_1.err[0].message).to.match(/Ascii armor integrity check on message failed/); + + // try opposite config + openpgp.config.checksum_required = !openpgp.config.checksum_required; + var result_2 = openpgp.key.readArmored(privKey); + expect(result_2.err).to.exist; + expect(result_2.err[0].message).to.match(/Ascii armor integrity check on message failed/); + + // back to default + openpgp.config.checksum_required = !openpgp.config.checksum_required; + }); + + it('Armor checksum validation - valid', function () { + var privKey = + ['-----BEGIN PGP PRIVATE KEY BLOCK-----', + 'Version: OpenPGP.js v0.3.0', + 'Comment: http://openpgpjs.org', + '', + 'xbYEUubX7gEBANDWhzoP+Tr/IyRSv++vl5jBesQIPTYGQBdzF4YDnGEBABEB', + 'AAH+CQMIfzdw4/PKNl5gVXdtfDFdSIN8yJT2rbeg3+SsWexXZNNdRaONWaiB', + 'Z5cG9Q6+BoXKsEshIdcYOgwsAgRxlPpRA34Vvmg2QBk7PhdrkbK7aqENsJ1w', + 'dIlLD6p9GmLE20yVff58/fMiUtPRgsD83SpKTAX6EM1ulpkuQQNjmrVc5qc8', + '7AMdF80JdW5kZWZpbmVkwj8EEAEIABMFAlLm1+4JEBD8MASZrpALAhsDAAAs', + 'QgD8CUrwv7Hrp/INR0/UvAvzS52VztREQwQWTJMrgTNHBGjHtgRS5tfuAQEA', + 'nys9SaSgR+l6iZc/M8hGIUmbuahE2/+mtw+/l0RO+WcAEQEAAf4JAwjr39Yi', + 'FzjxImDN1IoYVsonA9M+BtIIJHafuQUHjyEr1paJJK5xS6KlyGgpMTXTD6y/', + 'qxS3ZSPPzHGRrs2CmkVEiPmurn9Ed05tb0y9OnJkWtuh3z9VVq9d8zHzuENa', + 'bUfli+P/v+dRaZ+1rSOxUFbFYbFB5XK/A9b/OPFrv+mb4KrtLxugwj8EGAEI', + 'ABMFAlLm1+4JEBD8MASZrpALAhsMAAC3IgD8DnLGbMnpLtrX72RCkPW1ffLq', + '71vlXMJNXvoCeuejiRw=', + '=wJNM', + '-----END PGP PRIVATE KEY BLOCK-----'].join('\n'); + + // try with default config + var result_1 = openpgp.key.readArmored(privKey); + expect(result_1.err).to.not.exist; + + // try opposite config + openpgp.config.checksum_required = !openpgp.config.checksum_required; + var result_2 = openpgp.key.readArmored(privKey); + expect(result_2.err).to.not.exist; + + // back to default + openpgp.config.checksum_required = !openpgp.config.checksum_required; + }); + + it('Armor checksum validation - missing', function () { + var privKeyNoCheckSum = + ['-----BEGIN PGP PRIVATE KEY BLOCK-----', + 'Version: OpenPGP.js v0.3.0', + 'Comment: http://openpgpjs.org', + '', + 'xbYEUubX7gEBANDWhzoP+Tr/IyRSv++vl5jBesQIPTYGQBdzF4YDnGEBABEB', + 'AAH+CQMIfzdw4/PKNl5gVXdtfDFdSIN8yJT2rbeg3+SsWexXZNNdRaONWaiB', + 'Z5cG9Q6+BoXKsEshIdcYOgwsAgRxlPpRA34Vvmg2QBk7PhdrkbK7aqENsJ1w', + 'dIlLD6p9GmLE20yVff58/fMiUtPRgsD83SpKTAX6EM1ulpkuQQNjmrVc5qc8', + '7AMdF80JdW5kZWZpbmVkwj8EEAEIABMFAlLm1+4JEBD8MASZrpALAhsDAAAs', + 'QgD8CUrwv7Hrp/INR0/UvAvzS52VztREQwQWTJMrgTNHBGjHtgRS5tfuAQEA', + 'nys9SaSgR+l6iZc/M8hGIUmbuahE2/+mtw+/l0RO+WcAEQEAAf4JAwjr39Yi', + 'FzjxImDN1IoYVsonA9M+BtIIJHafuQUHjyEr1paJJK5xS6KlyGgpMTXTD6y/', + 'qxS3ZSPPzHGRrs2CmkVEiPmurn9Ed05tb0y9OnJkWtuh3z9VVq9d8zHzuENa', + 'bUfli+P/v+dRaZ+1rSOxUFbFYbFB5XK/A9b/OPFrv+mb4KrtLxugwj8EGAEI', + 'ABMFAlLm1+4JEBD8MASZrpALAhsMAAC3IgD8DnLGbMnpLtrX72RCkPW1ffLq', + '71vlXMJNXvoCeuejiRw=', + '-----END PGP PRIVATE KEY BLOCK-----'].join('\n'); + + // try with default config + var result_1 = openpgp.key.readArmored(privKeyNoCheckSum); + if(openpgp.config.checksum_required) { + expect(result_1.err).to.exist; + expect(result_1.err[0].message).to.match(/Ascii armor integrity check on message failed/); + } else { + expect(result_1.err).to.not.exist; + } + + // try opposite config + openpgp.config.checksum_required = !openpgp.config.checksum_required; + var result_2 = openpgp.key.readArmored(privKeyNoCheckSum); + if(openpgp.config.checksum_required) { + expect(result_2.err).to.exist; + expect(result_2.err[0].message).to.match(/Ascii armor integrity check on message failed/); + } else { + expect(result_2.err).to.not.exist; + } + + // back to default + openpgp.config.checksum_required = !openpgp.config.checksum_required; }); it('Accept header with trailing whitespace', function () {