From 5e246ee9215ddc492e4fdda3b1dbdf3162fd60ab Mon Sep 17 00:00:00 2001 From: Tankred Hase Date: Tue, 10 Feb 2015 18:37:41 +0100 Subject: [PATCH] Fix invalid user id in PGP keys when realname is left empty --- src/js/crypto/pgp.js | 4 ++-- test/unit/crypto/pgp-test.js | 12 ++++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/js/crypto/pgp.js b/src/js/crypto/pgp.js index 75df80f..b805cf4 100644 --- a/src/js/crypto/pgp.js +++ b/src/js/crypto/pgp.js @@ -28,8 +28,8 @@ PGP.prototype.generateKeys = function(options) { } // generate keypair - name = options.realname ? options.realname.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '').trim() + ' ' : ''; - userId = name + '<' + options.emailAddress + '>'; + name = options.realname ? options.realname.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '').trim() : ''; + userId = name + ' <' + options.emailAddress + '>'; passphrase = (options.passphrase) ? options.passphrase : undefined; resolve({ diff --git a/test/unit/crypto/pgp-test.js b/test/unit/crypto/pgp-test.js index d8e5c98..4225255 100644 --- a/test/unit/crypto/pgp-test.js +++ b/test/unit/crypto/pgp-test.js @@ -86,6 +86,10 @@ describe('PGP Crypto Api unit tests', function() { publicKeyArmored: keys.publicKeyArmored }); }).then(function() { + var keyParams = pgp.getKeyParams(); + expect(keyParams.userIds[0].name).to.equal(''); + expect(keyParams.userIds[0].emailAddress).to.equal(user); + return pgp.encrypt('secret', [keyObject.publicKeyArmored]); }).then(function(ct) { expect(ct).to.exist; @@ -117,7 +121,9 @@ describe('PGP Crypto Api unit tests', function() { publicKeyArmored: keys.publicKeyArmored }); }).then(function() { - expect(pgp.getKeyParams().userIds[0].name).to.equal('Jon Doe'); + var keyParams = pgp.getKeyParams(); + expect(keyParams.userIds[0].name).to.equal('Jon Doe'); + expect(keyParams.userIds[0].emailAddress).to.equal(user); return pgp.encrypt('secret', [keyObject.publicKeyArmored]); }).then(function(ct) { @@ -150,7 +156,9 @@ describe('PGP Crypto Api unit tests', function() { publicKeyArmored: keys.publicKeyArmored }); }).then(function() { - expect(pgp.getKeyParams().userIds[0].name).to.equal('Jon Doe'); + var keyParams = pgp.getKeyParams(); + expect(keyParams.userIds[0].name).to.equal('Jon Doe'); + expect(keyParams.userIds[0].emailAddress).to.equal(user); return pgp.encrypt('secret', [keyObject.publicKeyArmored]); }).then(function(ct) {