37 lines
		
	
	
		
			796 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			796 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import * as crypto from 'node:crypto';
 | |
| import * as util from 'node:util';
 | |
| 
 | |
| const generateKeyPair = util.promisify(crypto.generateKeyPair);
 | |
| 
 | |
| export async function genRsaKeyPair(modulusLength = 2048) {
 | |
| 	return await generateKeyPair('rsa', {
 | |
| 		modulusLength,
 | |
| 		publicKeyEncoding: {
 | |
| 			type: 'spki',
 | |
| 			format: 'pem',
 | |
| 		},
 | |
| 		privateKeyEncoding: {
 | |
| 			type: 'pkcs8',
 | |
| 			format: 'pem',
 | |
| 			cipher: undefined,
 | |
| 			passphrase: undefined,
 | |
| 		},
 | |
| 	});
 | |
| }
 | |
| 
 | |
| export async function genEcKeyPair(namedCurve: 'prime256v1' | 'secp384r1' | 'secp521r1' | 'curve25519' = 'prime256v1') {
 | |
| 	return await generateKeyPair('ec', {
 | |
| 		namedCurve,
 | |
| 		publicKeyEncoding: {
 | |
| 			type: 'spki',
 | |
| 			format: 'pem',
 | |
| 		},
 | |
| 		privateKeyEncoding: {
 | |
| 			type: 'pkcs8',
 | |
| 			format: 'pem',
 | |
| 			cipher: undefined,
 | |
| 			passphrase: undefined,
 | |
| 		},
 | |
| 	});
 | |
| }
 | 
