Put comment before email when generating UIDs (#892)
This commit is contained in:
parent
cc4a9119a3
commit
d2c38693f5
18
src/util.js
18
src/util.js
|
@ -652,11 +652,23 @@ export default {
|
||||||
* Format user id for internal use.
|
* Format user id for internal use.
|
||||||
*/
|
*/
|
||||||
formatUserId: function(id) {
|
formatUserId: function(id) {
|
||||||
// name and email address can be empty but must be of the correct type
|
// name, email address and comment can be empty but must be of the correct type
|
||||||
if ((id.name && !util.isString(id.name)) || (id.email && !util.isEmailAddress(id.email))) {
|
if ((id.name && !util.isString(id.name)) ||
|
||||||
|
(id.email && !util.isEmailAddress(id.email)) ||
|
||||||
|
(id.comment && !util.isString(id.comment))) {
|
||||||
throw new Error('Invalid user id format');
|
throw new Error('Invalid user id format');
|
||||||
}
|
}
|
||||||
return new rfc2822.Address(id.name, id.email, id.comment).format();
|
const components = [];
|
||||||
|
if (id.name) {
|
||||||
|
components.push(id.name);
|
||||||
|
}
|
||||||
|
if (id.comment) {
|
||||||
|
components.push(`(${id.comment})`);
|
||||||
|
}
|
||||||
|
if (id.email) {
|
||||||
|
components.push(`<${id.email}>`);
|
||||||
|
}
|
||||||
|
return components.join(' ');
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1737,7 +1737,49 @@ function versionSpecificTests() {
|
||||||
return openpgp.generateKey(opt).then(function(key) {
|
return openpgp.generateKey(opt).then(function(key) {
|
||||||
key = key.key;
|
key = key.key;
|
||||||
expect(key.users.length).to.equal(1);
|
expect(key.users.length).to.equal(1);
|
||||||
expect(key.users[0].userId.userid).to.equal('test <a@b.com> (test comment)');
|
expect(key.users[0].userId.userid).to.equal('test (test comment) <a@b.com>');
|
||||||
|
expect(key.users[0].userId.name).to.equal(userId.name);
|
||||||
|
expect(key.users[0].userId.email).to.equal(userId.email);
|
||||||
|
expect(key.users[0].userId.comment).to.equal(userId.comment);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Generate key - single userid (all missing)', function() {
|
||||||
|
const userId = { name: '', email: '', comment: '' };
|
||||||
|
const opt = {numBits: 512, userIds: userId, passphrase: '123'};
|
||||||
|
if (openpgp.util.getWebCryptoAll()) { opt.numBits = 2048; } // webkit webcrypto accepts minimum 2048 bit keys
|
||||||
|
return openpgp.generateKey(opt).then(function(key) {
|
||||||
|
key = key.key;
|
||||||
|
expect(key.users.length).to.equal(1);
|
||||||
|
expect(key.users[0].userId.userid).to.equal('');
|
||||||
|
expect(key.users[0].userId.name).to.equal(userId.name);
|
||||||
|
expect(key.users[0].userId.email).to.equal(userId.email);
|
||||||
|
expect(key.users[0].userId.comment).to.equal(userId.comment);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Generate key - single userid (missing email)', function() {
|
||||||
|
const userId = { name: 'test', email: '', comment: 'test comment' };
|
||||||
|
const opt = {numBits: 512, userIds: userId, passphrase: '123'};
|
||||||
|
if (openpgp.util.getWebCryptoAll()) { opt.numBits = 2048; } // webkit webcrypto accepts minimum 2048 bit keys
|
||||||
|
return openpgp.generateKey(opt).then(function(key) {
|
||||||
|
key = key.key;
|
||||||
|
expect(key.users.length).to.equal(1);
|
||||||
|
expect(key.users[0].userId.userid).to.equal('test (test comment)');
|
||||||
|
expect(key.users[0].userId.name).to.equal(userId.name);
|
||||||
|
expect(key.users[0].userId.email).to.equal(userId.email);
|
||||||
|
expect(key.users[0].userId.comment).to.equal(userId.comment);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Generate key - single userid (missing comment)', function() {
|
||||||
|
const userId = { name: 'test', email: 'a@b.com', comment: '' };
|
||||||
|
const opt = {numBits: 512, userIds: userId, passphrase: '123'};
|
||||||
|
if (openpgp.util.getWebCryptoAll()) { opt.numBits = 2048; } // webkit webcrypto accepts minimum 2048 bit keys
|
||||||
|
return openpgp.generateKey(opt).then(function(key) {
|
||||||
|
key = key.key;
|
||||||
|
expect(key.users.length).to.equal(1);
|
||||||
|
expect(key.users[0].userId.userid).to.equal('test <a@b.com>');
|
||||||
expect(key.users[0].userId.name).to.equal(userId.name);
|
expect(key.users[0].userId.name).to.equal(userId.name);
|
||||||
expect(key.users[0].userId.email).to.equal(userId.email);
|
expect(key.users[0].userId.email).to.equal(userId.email);
|
||||||
expect(key.users[0].userId.comment).to.equal(userId.comment);
|
expect(key.users[0].userId.comment).to.equal(userId.comment);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user