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.
		
		
		
		
		
			
		
			
				
	
	
		
			130 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			130 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			TypeScript
		
	
| import { SignalService } from '../../protobuf';
 | |
| 
 | |
| export type BinaryString = string;
 | |
| 
 | |
| export type CipherTextObject = {
 | |
|   type: SignalService.Envelope.Type;
 | |
|   body: BinaryString;
 | |
|   registrationId?: number;
 | |
| };
 | |
| export interface SignalProtocolAddressConstructor {
 | |
|   new (hexEncodedPublicKey: string, deviceId: number): SignalProtocolAddress;
 | |
|   fromString(encodedAddress: string): SignalProtocolAddress;
 | |
| }
 | |
| 
 | |
| export interface SignalProtocolAddress {
 | |
|   getName(): string;
 | |
|   getDeviceId(): number;
 | |
|   toString(): string;
 | |
|   equals(other: SignalProtocolAddress): boolean;
 | |
| }
 | |
| 
 | |
| export type KeyPair = {
 | |
|   pubKey: ArrayBuffer;
 | |
|   privKey: ArrayBuffer;
 | |
| };
 | |
| 
 | |
| interface CurveSync {
 | |
|   generateKeyPair(): KeyPair;
 | |
|   createKeyPair(privKey: ArrayBuffer): KeyPair;
 | |
|   calculateAgreement(pubKey: ArrayBuffer, privKey: ArrayBuffer): ArrayBuffer;
 | |
|   verifySignature(
 | |
|     pubKey: ArrayBuffer,
 | |
|     msg: ArrayBuffer,
 | |
|     sig: ArrayBuffer
 | |
|   ): void;
 | |
|   calculateSignature(privKey: ArrayBuffer, message: ArrayBuffer): ArrayBuffer;
 | |
|   validatePubKeyFormat(pubKey: ArrayBuffer): ArrayBuffer;
 | |
| }
 | |
| 
 | |
| interface CurveAsync {
 | |
|   generateKeyPair(): Promise<KeyPair>;
 | |
|   createKeyPair(privKey: ArrayBuffer): Promise<KeyPair>;
 | |
|   calculateAgreement(
 | |
|     pubKey: ArrayBuffer,
 | |
|     privKey: ArrayBuffer
 | |
|   ): Promise<ArrayBuffer>;
 | |
|   verifySignature(
 | |
|     pubKey: ArrayBuffer,
 | |
|     msg: ArrayBuffer,
 | |
|     sig: ArrayBuffer
 | |
|   ): Promise<void>;
 | |
|   calculateSignature(
 | |
|     privKey: ArrayBuffer,
 | |
|     message: ArrayBuffer
 | |
|   ): Promise<ArrayBuffer>;
 | |
|   validatePubKeyFormat(pubKey: ArrayBuffer): Promise<ArrayBuffer>;
 | |
| }
 | |
| 
 | |
| export interface CurveInterface extends CurveSync {
 | |
|   async: CurveAsync;
 | |
| }
 | |
| 
 | |
| export interface CryptoInterface {
 | |
|   encrypt(
 | |
|     key: ArrayBuffer,
 | |
|     data: ArrayBuffer,
 | |
|     iv: ArrayBuffer
 | |
|   ): Promise<ArrayBuffer>;
 | |
|   decrypt(
 | |
|     key: ArrayBuffer,
 | |
|     data: ArrayBuffer,
 | |
|     iv: ArrayBuffer
 | |
|   ): Promise<ArrayBuffer>;
 | |
|   calculateMAC(key: ArrayBuffer, data: ArrayBuffer): Promise<ArrayBuffer>;
 | |
|   verifyMAC(
 | |
|     data: ArrayBuffer,
 | |
|     key: ArrayBuffer,
 | |
|     mac: ArrayBuffer,
 | |
|     length: number
 | |
|   ): Promise<void>;
 | |
|   getRandomBytes(size: number): ArrayBuffer;
 | |
| }
 | |
| 
 | |
| export interface KeyHelperInterface {
 | |
|   generateIdentityKeyPair(): Promise<KeyPair>;
 | |
|   generateRegistrationId(): number;
 | |
|   generateSignedPreKey(
 | |
|     identityKeyPair: KeyPair,
 | |
|     signedKeyId: number
 | |
|   ): Promise<{
 | |
|     keyId: number;
 | |
|     keyPair: KeyPair;
 | |
|     signature: ArrayBuffer;
 | |
|   }>;
 | |
|   generatePreKey(
 | |
|     keyId: number
 | |
|   ): Promise<{
 | |
|     keyId: number;
 | |
|     keyPair: KeyPair;
 | |
|   }>;
 | |
| }
 | |
| 
 | |
| export type SessionCipherConstructor = new (
 | |
|   storage: any,
 | |
|   remoteAddress: SignalProtocolAddress
 | |
| ) => SessionCipher;
 | |
| export interface SessionCipher {
 | |
|   /**
 | |
|    * @returns The envelope type, registration id and binary encoded encrypted body.
 | |
|    */
 | |
|   encrypt(buffer: ArrayBuffer | Uint8Array): Promise<CipherTextObject>;
 | |
|   decryptPreKeyWhisperMessage(
 | |
|     buffer: ArrayBuffer | Uint8Array
 | |
|   ): Promise<ArrayBuffer>;
 | |
|   decryptWhisperMessage(buffer: ArrayBuffer | Uint8Array): Promise<ArrayBuffer>;
 | |
|   getRecord(encodedNumber: string): Promise<any | undefined>;
 | |
|   getRemoteRegistrationId(): Promise<number>;
 | |
|   hasOpenSession(): Promise<boolean>;
 | |
|   closeOpenSessionForDevice(): Promise<void>;
 | |
|   deleteAllSessionsForDevice(): Promise<void>;
 | |
| }
 | |
| 
 | |
| export interface LibsignalProtocol {
 | |
|   SignalProtocolAddress: SignalProtocolAddressConstructor;
 | |
|   Curve: CurveInterface;
 | |
|   crypto: CryptoInterface;
 | |
|   KeyHelper: KeyHelperInterface;
 | |
|   SessionCipher: SessionCipherConstructor;
 | |
| }
 |