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