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