|  |  |  | 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; | 
					
						
							|  |  |  | } |