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.
		
		
		
		
		
			
		
			
				
					92 lines
				
				2.2 KiB
			
		
		
			
		
	
	
					92 lines
				
				2.2 KiB
			| 
											2 years ago
										 | /** | ||
|  |  * 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' | ||
|  |     }] | ||
|  |   } */ | ||
|  |   ] | ||
|  | }; |