mirror of
https://github.com/signalapp/libsignal.git
synced 2024-09-20 20:03:07 +02:00
fdceb3abb8
This is easier for the Rust macros to generate than "Foo_bar", and it's also the same as what we've been doing for Java.
78 lines
1.9 KiB
TypeScript
78 lines
1.9 KiB
TypeScript
//
|
|
// Copyright 2020 Signal Messenger, LLC.
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
//
|
|
|
|
import * as os from 'os';
|
|
import bindings = require('bindings'); // eslint-disable-line @typescript-eslint/no-require-imports
|
|
import * as SignalClient from './libsignal_client';
|
|
|
|
const SC = bindings('libsignal_client_' + os.platform()) as typeof SignalClient;
|
|
|
|
export const { initLogger, LogLevel } = SC;
|
|
|
|
export class PublicKey {
|
|
private readonly nativeHandle: SignalClient.PublicKey;
|
|
|
|
private constructor(handle: SignalClient.PublicKey) {
|
|
this.nativeHandle = handle;
|
|
}
|
|
|
|
static fromNativeHandle(handle: SignalClient.PublicKey): PublicKey {
|
|
return new PublicKey(handle);
|
|
}
|
|
|
|
static deserialize(buf: Buffer): PublicKey {
|
|
return new PublicKey(SC.PublicKey_Deserialize(buf));
|
|
}
|
|
|
|
serialize(): Buffer {
|
|
return SC.PublicKey_Serialize(this.nativeHandle);
|
|
}
|
|
|
|
verify(msg: Buffer, sig: Buffer): boolean {
|
|
return SC.PublicKey_Verify(this.nativeHandle, msg, sig);
|
|
}
|
|
|
|
_unsafeGetNativeHandle(): SignalClient.PublicKey {
|
|
return this.nativeHandle;
|
|
}
|
|
}
|
|
|
|
export class PrivateKey {
|
|
private readonly nativeHandle: SignalClient.PrivateKey;
|
|
|
|
private constructor(handle: SignalClient.PrivateKey) {
|
|
this.nativeHandle = handle;
|
|
}
|
|
|
|
static generate(): PrivateKey {
|
|
return new PrivateKey(SC.PrivateKey_Generate());
|
|
}
|
|
|
|
static deserialize(buf: Buffer): PrivateKey {
|
|
return new PrivateKey(SC.PrivateKey_Deserialize(buf));
|
|
}
|
|
|
|
serialize(): Buffer {
|
|
return SC.PrivateKey_Serialize(this.nativeHandle);
|
|
}
|
|
|
|
sign(msg: Buffer): Buffer {
|
|
return SC.PrivateKey_Sign(this.nativeHandle, msg);
|
|
}
|
|
|
|
agree(other_key: PublicKey): Buffer {
|
|
return SC.PrivateKey_Agree(
|
|
this.nativeHandle,
|
|
other_key._unsafeGetNativeHandle()
|
|
);
|
|
}
|
|
|
|
getPublicKey(): PublicKey {
|
|
return PublicKey.fromNativeHandle(
|
|
SC.PrivateKey_GetPublicKey(this.nativeHandle)
|
|
);
|
|
}
|
|
}
|