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.
		
		
		
		
		
			
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
import { randomBytes } from 'crypto';
 | 
						|
 | 
						|
const g = global as any;
 | 
						|
 | 
						|
// Because curve wrapper will populate this
 | 
						|
g.Internal = {};
 | 
						|
 | 
						|
// Because curve wrapper uses 'Module' to get at curve-provided functionality
 | 
						|
// tslint:disable-next-line
 | 
						|
g.Module = require('../../js/curve/curve25519_compiled');
 | 
						|
// tslint:disable-next-line
 | 
						|
require('../../js/curve/curve25519_wrapper');
 | 
						|
 | 
						|
export type BinaryType = Uint8Array | Buffer;
 | 
						|
 | 
						|
interface CurveType {
 | 
						|
  keyPair: (
 | 
						|
    privateKey: BinaryType
 | 
						|
  ) => {
 | 
						|
    pubKey: BinaryType;
 | 
						|
    privKey: BinaryType;
 | 
						|
  };
 | 
						|
  sign: (privateKey: BinaryType, message: BinaryType) => BinaryType;
 | 
						|
  verify: (
 | 
						|
    publicKey: BinaryType,
 | 
						|
    message: BinaryType,
 | 
						|
    signature: BinaryType
 | 
						|
  ) => boolean;
 | 
						|
}
 | 
						|
 | 
						|
const {
 | 
						|
  keyPair: internalKeyPair,
 | 
						|
  sign: internalSign,
 | 
						|
  verify: internalVerify,
 | 
						|
} = g.Internal.curve25519 as CurveType;
 | 
						|
 | 
						|
export function keyPair() {
 | 
						|
  const privateKey = randomBytes(32);
 | 
						|
  const { pubKey, privKey } = internalKeyPair(privateKey);
 | 
						|
 | 
						|
  return {
 | 
						|
    publicKey: pubKey,
 | 
						|
    privateKey: privKey,
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
export function sign(privateKey: BinaryType, message: BinaryType) {
 | 
						|
  return internalSign(privateKey, message);
 | 
						|
}
 | 
						|
 | 
						|
export function verify(
 | 
						|
  publicKey: BinaryType,
 | 
						|
  message: BinaryType,
 | 
						|
  signature: BinaryType
 | 
						|
) {
 | 
						|
  const failed = internalVerify(publicKey, message, signature);
 | 
						|
 | 
						|
  return !failed;
 | 
						|
}
 |