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.
		
		
		
		
		
			
		
			
				
					
					
						
							79 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							79 lines
						
					
					
						
							1.5 KiB
						
					
					
				'use strict'
 | 
						|
 | 
						|
const crypto = require('crypto')
 | 
						|
 | 
						|
function generateKeyPair () {
 | 
						|
  const options = {
 | 
						|
    modulusLength: 2048,
 | 
						|
    publicExponent: 0x10001,
 | 
						|
    publicKeyEncoding: {
 | 
						|
      type: 'spki',
 | 
						|
      format: 'pem'
 | 
						|
    },
 | 
						|
    privateKeyEncoding: {
 | 
						|
      type: 'pkcs8',
 | 
						|
      format: 'pem'
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return crypto.generateKeyPairSync('rsa', options)
 | 
						|
}
 | 
						|
 | 
						|
function generateKeyPairProtected (passphrase) {
 | 
						|
  const options = {
 | 
						|
    modulusLength: 2048,
 | 
						|
    publicExponent: 0x10001,
 | 
						|
    publicKeyEncoding: {
 | 
						|
      type: 'spki',
 | 
						|
      format: 'pem'
 | 
						|
    },
 | 
						|
    privateKeyEncoding: {
 | 
						|
      type: 'pkcs8',
 | 
						|
      format: 'pem',
 | 
						|
      cipher: 'aes-256-cbc',
 | 
						|
      passphrase
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return crypto.generateKeyPairSync('rsa', options)
 | 
						|
}
 | 
						|
 | 
						|
function generateKeyPairECDSA () {
 | 
						|
  const options = {
 | 
						|
    modulusLength: 2048,
 | 
						|
    namedCurve: 'prime256v1',
 | 
						|
    publicKeyEncoding: {
 | 
						|
      type: 'spki',
 | 
						|
      format: 'pem'
 | 
						|
    },
 | 
						|
    privateKeyEncoding: {
 | 
						|
      type: 'pkcs8',
 | 
						|
      format: 'pem'
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return crypto.generateKeyPairSync('ec', options)
 | 
						|
}
 | 
						|
 | 
						|
function generateKeyPairECDSAProtected (passphrase) {
 | 
						|
  const options = {
 | 
						|
    modulusLength: 2048,
 | 
						|
    namedCurve: 'prime256v1',
 | 
						|
    publicKeyEncoding: {
 | 
						|
      type: 'spki',
 | 
						|
      format: 'pem'
 | 
						|
    },
 | 
						|
    privateKeyEncoding: {
 | 
						|
      type: 'pkcs8',
 | 
						|
      format: 'pem',
 | 
						|
      cipher: 'aes-256-cbc',
 | 
						|
      passphrase
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return crypto.generateKeyPairSync('ec', options)
 | 
						|
}
 | 
						|
 | 
						|
module.exports = {
 | 
						|
  generateKeyPair,
 | 
						|
  generateKeyPairProtected,
 | 
						|
  generateKeyPairECDSA,
 | 
						|
  generateKeyPairECDSAProtected
 | 
						|
}
 |