| /** |
| * 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' |
| }] |
| } */ |
| ] |
| }; |