forked from coolaj86/eckles.js
		
	Compare commits
	
		
			1 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 1d5f58ff10 | 
							
								
								
									
										36
									
								
								lib/generate-privkey-node-v6.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								lib/generate-privkey-node-v6.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,36 @@ | |||||||
|  | // Copyright 2016-2018 AJ ONeal. All rights reserved
 | ||||||
|  | /* This Source Code Form is subject to the terms of the Mozilla Public | ||||||
|  |  * License, v. 2.0. If a copy of the MPL was not distributed with this | ||||||
|  |  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | ||||||
|  | 'use strict'; | ||||||
|  | 
 | ||||||
|  | var curves = { | ||||||
|  |   "P-256": "prime256v1" // 65
 | ||||||
|  | , "secp256r1": "prime256v1" | ||||||
|  | , "P-384": "secp384r1" // 97
 | ||||||
|  | , "P-521": "secp521r1" // 133
 | ||||||
|  | }; | ||||||
|  | var crv = "P-256"; | ||||||
|  | var ecdh = require('crypto').createECDH(curves[crv] || crv); | ||||||
|  | var keys = ecdh.generateKeys(null, 'uncompressed'); | ||||||
|  | console.log(keys.length); | ||||||
|  | console.log(keys.toString('hex')); | ||||||
|  | keys = keys.slice(1); | ||||||
|  | var x = keys.slice(0, keys.byteLength / 2); | ||||||
|  | var y = keys.slice(keys.byteLength / 2); | ||||||
|  | while (0 === x[0]) { x = x.slice(1); } | ||||||
|  | while (0 === y[0]) { y = y.slice(1); } | ||||||
|  | console.log({ | ||||||
|  |   kty: "EC" | ||||||
|  | , crv: "P-XXX" | ||||||
|  | , x: _toUrlBase64(x) | ||||||
|  | , y: _toUrlBase64(y) | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | function _toUrlBase64(buf) { | ||||||
|  |   return buf.toString('base64') | ||||||
|  |     .replace(/\+/g, "-") | ||||||
|  |     .replace(/\//g, "_") | ||||||
|  |     .replace(/=/g,"") | ||||||
|  |   ; | ||||||
|  | } | ||||||
							
								
								
									
										22
									
								
								lib/generate-privkey-node.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								lib/generate-privkey-node.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | |||||||
|  | // Copyright 2016-2018 AJ ONeal. All rights reserved
 | ||||||
|  | /* This Source Code Form is subject to the terms of the Mozilla Public | ||||||
|  |  * License, v. 2.0. If a copy of the MPL was not distributed with this | ||||||
|  |  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | ||||||
|  | 'use strict'; | ||||||
|  | 
 | ||||||
|  | module.exports = function (crv) { | ||||||
|  |   var keypair = require('crypto').generateKeyPairSync( | ||||||
|  |     'ec' | ||||||
|  |   , { namedCurve: crv | ||||||
|  |     , privateKeyEncoding: { type: 'sec1', format: 'pem' } | ||||||
|  |     , publicKeyEncoding: { type: 'spki', format: 'pem' } | ||||||
|  |     } | ||||||
|  |   ); | ||||||
|  |   var result = { privateKeyPem: keypair.privateKey.trim() }; | ||||||
|  |   return result; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | if (require.main === module) { | ||||||
|  |   var keypair = module.exports('P-256'); | ||||||
|  |   console.info(keypair.privateKeyPem); | ||||||
|  | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user