92 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /**
 | |
|  * 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'
 | |
|     }]
 | |
|   } */
 | |
|   ]
 | |
| };
 |