You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
2.2 KiB
91 lines
2.2 KiB
/** |
|
* Copyright (c) 2019 Digital Bazaar, Inc. |
|
*/ |
|
|
|
var forge = require('./forge'); |
|
require('./asn1'); |
|
var asn1 = forge.asn1; |
|
|
|
exports.privateKeyValidator = { |
|
// PrivateKeyInfo |
|
name: 'PrivateKeyInfo', |
|
tagClass: asn1.Class.UNIVERSAL, |
|
type: asn1.Type.SEQUENCE, |
|
constructed: true, |
|
value: [{ |
|
// Version (INTEGER) |
|
name: 'PrivateKeyInfo.version', |
|
tagClass: asn1.Class.UNIVERSAL, |
|
type: asn1.Type.INTEGER, |
|
constructed: false, |
|
capture: 'privateKeyVersion' |
|
}, { |
|
// privateKeyAlgorithm |
|
name: 'PrivateKeyInfo.privateKeyAlgorithm', |
|
tagClass: asn1.Class.UNIVERSAL, |
|
type: asn1.Type.SEQUENCE, |
|
constructed: true, |
|
value: [{ |
|
name: 'AlgorithmIdentifier.algorithm', |
|
tagClass: asn1.Class.UNIVERSAL, |
|
type: asn1.Type.OID, |
|
constructed: false, |
|
capture: 'privateKeyOid' |
|
}] |
|
}, { |
|
// PrivateKey |
|
name: 'PrivateKeyInfo', |
|
tagClass: asn1.Class.UNIVERSAL, |
|
type: asn1.Type.OCTETSTRING, |
|
constructed: false, |
|
capture: 'privateKey' |
|
}] |
|
}; |
|
|
|
exports.publicKeyValidator = { |
|
name: 'SubjectPublicKeyInfo', |
|
tagClass: asn1.Class.UNIVERSAL, |
|
type: asn1.Type.SEQUENCE, |
|
constructed: true, |
|
captureAsn1: 'subjectPublicKeyInfo', |
|
value: [{ |
|
name: 'SubjectPublicKeyInfo.AlgorithmIdentifier', |
|
tagClass: asn1.Class.UNIVERSAL, |
|
type: asn1.Type.SEQUENCE, |
|
constructed: true, |
|
value: [{ |
|
name: 'AlgorithmIdentifier.algorithm', |
|
tagClass: asn1.Class.UNIVERSAL, |
|
type: asn1.Type.OID, |
|
constructed: false, |
|
capture: 'publicKeyOid' |
|
}] |
|
}, |
|
// capture group for ed25519PublicKey |
|
{ |
|
tagClass: asn1.Class.UNIVERSAL, |
|
type: asn1.Type.BITSTRING, |
|
constructed: false, |
|
composed: true, |
|
captureBitStringValue: 'ed25519PublicKey' |
|
} |
|
// FIXME: this is capture group for rsaPublicKey, use it in this API or |
|
// discard? |
|
/* { |
|
// subjectPublicKey |
|
name: 'SubjectPublicKeyInfo.subjectPublicKey', |
|
tagClass: asn1.Class.UNIVERSAL, |
|
type: asn1.Type.BITSTRING, |
|
constructed: false, |
|
value: [{ |
|
// RSAPublicKey |
|
name: 'SubjectPublicKeyInfo.subjectPublicKey.RSAPublicKey', |
|
tagClass: asn1.Class.UNIVERSAL, |
|
type: asn1.Type.SEQUENCE, |
|
constructed: true, |
|
optional: true, |
|
captureAsn1: 'rsaPublicKey' |
|
}] |
|
} */ |
|
] |
|
};
|
|
|