|  |  |  | import { SignalService } from '../../protobuf'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export type BinaryString = string; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export type CipherTextObject = { | 
					
						
							|  |  |  |   type: SignalService.Envelope.Type; | 
					
						
							|  |  |  |   body: BinaryString; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export type KeyPair = { | 
					
						
							|  |  |  |   pubKey: ArrayBuffer; | 
					
						
							|  |  |  |   privKey: ArrayBuffer; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | interface CurveSync { | 
					
						
							|  |  |  |   generateKeyPair(): KeyPair; | 
					
						
							|  |  |  |   createKeyPair(privKey: ArrayBuffer): KeyPair; | 
					
						
							|  |  |  |   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>; | 
					
						
							|  |  |  |   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>; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export interface LibsignalProtocol { | 
					
						
							|  |  |  |   Curve: CurveInterface; | 
					
						
							|  |  |  |   crypto: CryptoInterface; | 
					
						
							|  |  |  |   KeyHelper: KeyHelperInterface; | 
					
						
							|  |  |  | } |