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