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