Use the libsignal-client for curve operations

This commit is contained in:
Jack Lloyd 2021-01-27 17:39:09 -05:00 committed by GitHub
parent 1da724edf2
commit a769402c0c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 67 additions and 91 deletions

View file

@ -1,25 +1,22 @@
// Copyright 2019-2020 Signal Messenger, LLC
// Copyright 2019-2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { randomBytes } from 'crypto';
import {
calculateSignature,
generateKeyPair,
verifySignature,
} from 'curve25519-n';
import { PrivateKey, PublicKey } from 'libsignal-client';
export function keyPair(): Record<string, Buffer> {
const privateKey = randomBytes(32);
const { pubKey, privKey } = generateKeyPair(privateKey);
const privKey = PrivateKey.generate();
const pubKey = privKey.getPublicKey();
return {
publicKey: pubKey,
privateKey: privKey,
publicKey: pubKey.serialize(),
privateKey: privKey.serialize(),
};
}
export function sign(privateKey: Buffer, message: Buffer): Buffer {
return calculateSignature(privateKey, message);
const privKeyObj = PrivateKey.deserialize(privateKey);
const signature = privKeyObj.sign(message);
return signature;
}
export function verify(
@ -27,7 +24,7 @@ export function verify(
message: Buffer,
signature: Buffer
): boolean {
const failed = verifySignature(publicKey, message, signature);
return !failed;
const pubKeyObj = PublicKey.deserialize(publicKey);
const result = pubKeyObj.verify(message, signature);
return result;
}