You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
| import { getCliOptions, getPrintableError } from './common';
 | |
| import { keyPair } from './curve';
 | |
| import { writeHexToPath } from './signature';
 | |
| 
 | |
| /* tslint:disable:no-console */
 | |
| 
 | |
| const OPTIONS = [
 | |
|   {
 | |
|     names: ['help', 'h'],
 | |
|     type: 'bool',
 | |
|     help: 'Print this help and exit.',
 | |
|   },
 | |
|   {
 | |
|     names: ['key', 'k'],
 | |
|     type: 'string',
 | |
|     help: 'Path where public key will go',
 | |
|     default: 'public.key',
 | |
|   },
 | |
|   {
 | |
|     names: ['private', 'p'],
 | |
|     type: 'string',
 | |
|     help: 'Path where private key will go',
 | |
|     default: 'private.key',
 | |
|   },
 | |
| ];
 | |
| 
 | |
| type OptionsType = {
 | |
|   key: string;
 | |
|   private: string;
 | |
| };
 | |
| 
 | |
| const cliOptions = getCliOptions<OptionsType>(OPTIONS);
 | |
| go(cliOptions).catch(error => {
 | |
|   console.error('Something went wrong!', getPrintableError(error));
 | |
| });
 | |
| 
 | |
| async function go(options: OptionsType) {
 | |
|   const { key: publicKeyPath, private: privateKeyPath } = options;
 | |
|   const { publicKey, privateKey } = keyPair();
 | |
| 
 | |
|   await Promise.all([
 | |
|     writeHexToPath(publicKeyPath, publicKey),
 | |
|     writeHexToPath(privateKeyPath, privateKey),
 | |
|   ]);
 | |
| }
 |