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