supercop.ts

cross-compiled javascript implementation of ed25519 based on supercop-ref10
git clone git://git.finwo.net/lib/supercop.ts
Log | Files | Refs | README | LICENSE

commit 3abd82c698167dbf17bfda14e34b8a0211249cea
parent 4bd9bb679577d66d2565caf15b8c910933d234cd
Author: finwo <finwo@pm.me>
Date:   Sat, 27 May 2023 23:56:56 +0200

Added default export of KeyPair class; include toJSON fn; don't export helpers

Diffstat:
Msrc/index.ts | 21++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/index.ts b/src/index.ts @@ -40,22 +40,22 @@ function xIsBuffer(data: unknown): data is Buffer { return isBuffer(data); } -export function isSeed(data: unknown): data is Seed { +function isSeed(data: unknown): data is Seed { if (!xIsBuffer(data)) return false; return data.length === 32; } -export function isPublicKey(data: unknown): data is PublicKey { +function isPublicKey(data: unknown): data is PublicKey { if (!xIsBuffer(data)) return false; return data.length === 32; } -export function isSignature(data: unknown): data is Signature { +function isSignature(data: unknown): data is Signature { if (!xIsBuffer(data)) return false; return data.length === 64; } -export function isSecretKey(data: unknown): data is SecretKey { +function isSecretKey(data: unknown): data is SecretKey { if (!xIsBuffer(data)) return false; return data.length === 64; } @@ -87,6 +87,13 @@ export class KeyPair { return keyExchange(theirPublicKey, this.secretKey); } + toJSON() { + return { + publicKey: this.publicKey ? [...this.publicKey] : undefined, + secretKey: this.secretKey ? [...this.secretKey] : undefined, + }; + } + static create(seed: number[] | Seed) { return createKeyPair(seed); } @@ -108,7 +115,9 @@ export function keyPairFrom( data: { publicKey: number[] | PublicKey, secretKey? if (!isPublicKey(data.publicKey)) return false; // Not checking the secretKey, allowed to be missing - return Object.create(KeyPair, data); + const keypair = new KeyPair(); + Object.assign(keypair, data); + return keypair; } export async function createKeyPair( seed: number[] | Seed ): Promise<false | KeyPair> { @@ -260,3 +269,5 @@ export async function keyExchange( return Buffer.from(sharedSecretArr); } + +export default KeyPair;