add openpgp.key.read() function for unarmored serialized keys
This commit is contained in:
parent
63b387d5b9
commit
58031cfaca
34
src/key.js
34
src/key.js
|
@ -1060,24 +1060,20 @@ SubKey.prototype.update = function(subKey, primaryKey) {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reads an OpenPGP armored text and returns one or multiple key objects
|
* Reads an unarmored OpenPGP key list and returns one or multiple key objects
|
||||||
* @param {String} armoredText text to be parsed
|
* @param {Uint8Array} data to be parsed
|
||||||
* @return {{keys: Array<module:key~Key>, err: (Array<Error>|null)}} result object with key and error arrays
|
* @return {{keys: Array<module:key~Key>, err: (Array<Error>|null)}} result object with key and error arrays
|
||||||
* @static
|
* @static
|
||||||
*/
|
*/
|
||||||
export function readArmored(armoredText) {
|
export function read(data) {
|
||||||
var result = {};
|
var result = {};
|
||||||
result.keys = [];
|
result.keys = [];
|
||||||
try {
|
try {
|
||||||
var input = armor.decode(armoredText);
|
|
||||||
if (!(input.type === enums.armor.public_key || input.type === enums.armor.private_key)) {
|
|
||||||
throw new Error('Armored text not of type key');
|
|
||||||
}
|
|
||||||
var packetlist = new packet.List();
|
var packetlist = new packet.List();
|
||||||
packetlist.read(input.data);
|
packetlist.read(data);
|
||||||
var keyIndex = packetlist.indexOfTag(enums.packet.publicKey, enums.packet.secretKey);
|
var keyIndex = packetlist.indexOfTag(enums.packet.publicKey, enums.packet.secretKey);
|
||||||
if (keyIndex.length === 0) {
|
if (keyIndex.length === 0) {
|
||||||
throw new Error('No key packet found in armored text');
|
throw new Error('No key packet found');
|
||||||
}
|
}
|
||||||
for (var i = 0; i < keyIndex.length; i++) {
|
for (var i = 0; i < keyIndex.length; i++) {
|
||||||
var oneKeyList = packetlist.slice(keyIndex[i], keyIndex[i + 1]);
|
var oneKeyList = packetlist.slice(keyIndex[i], keyIndex[i + 1]);
|
||||||
|
@ -1096,6 +1092,26 @@ export function readArmored(armoredText) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads an OpenPGP armored text and returns one or multiple key objects
|
||||||
|
* @param {String} armoredText text to be parsed
|
||||||
|
* @return {{keys: Array<module:key~Key>, err: (Array<Error>|null)}} result object with key and error arrays
|
||||||
|
* @static
|
||||||
|
*/
|
||||||
|
export function readArmored(armoredText) {
|
||||||
|
try {
|
||||||
|
var input = armor.decode(armoredText);
|
||||||
|
if (!(input.type === enums.armor.public_key || input.type === enums.armor.private_key)) {
|
||||||
|
throw new Error('Armored text not of type key');
|
||||||
|
}
|
||||||
|
return read(input.data);
|
||||||
|
} catch (e) {
|
||||||
|
var result = {keys: [], err: []};
|
||||||
|
result.err.push(e);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates a new OpenPGP key. Currently only supports RSA keys.
|
* Generates a new OpenPGP key. Currently only supports RSA keys.
|
||||||
* Primary and subkey will be of same type.
|
* Primary and subkey will be of same type.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user