diff --git a/jose-jwe-jws.d.ts b/jose-jwe-jws.d.ts new file mode 100644 index 0000000..e6163f1 --- /dev/null +++ b/jose-jwe-jws.d.ts @@ -0,0 +1,89 @@ +export interface EncryptionResult { + cipher: ArrayBuffer; + tag: ArrayBuffer; +} + +export interface VerificationResult { + kid: string; + verified: boolean; +} + +export interface WebCryptographer { + new(): WebCryptographer; + setKeyEncryptionAlgorithm(algo: string):void; + setContentSignAlgorithm(algo: string):void; + createIV():ArrayBufferView; + createCek():PromiseLike; + wrapCek():PromiseLike; + unwrapCek():PromiseLike; + encrypt(iv: Uint8Array, aad: Uint8Array, cek: CryptoKey|PromiseLike, plaintext: Uint8Array):PromiseLike; + decrypt(cek: CryptoKey|PromiseLike, aad: Uint8Array, iv: Uint8Array, ciphertext: Uint8Array, tag: Uint8Array):PromiseLike; + sign(aad: Object, payload: string|Object, key:CryptoKey|PromiseLike):PromiseLike; + verify(aad: string, payload: string, signature: Uint8Array, key: CryptoKey|PromiseLike, kid: string):PromiseLike; +} + +export interface JwkSet { + keys: JsonWebKey[]; +} + +export interface Headers { + alg: string; + jku?: string; + jwk?: JsonWebKey; + kid?: string; + x5u?: string; + x5c?: string[]; + x5t?: string; + 'x5t#S256'?: string; + typ?: string; + cty?: string; + crit?: string[]; +} + +export interface Jose { + caniuse():boolean; + WebCryptographer:WebCryptographer; +} + +export interface SignedJws { + JsonSerialize():Object; + CompactSerialize():string; +} + +export interface Signer { + new(cryptographer: WebCryptographer):Signer; + addSigner(pk: CryptoKey, kid: string, aad?: Object, header?: Object):PromiseLike; + sign(payload: any, aad?: Object, header?: Object):PromiseLike; +} + +export interface Verifier { + new(cryptographer: WebCryptographer, msg: string, + keyfinder?: (kid: string) => PromiseLike):Verifier; + addRecipient(pk: CryptoKey|string|JsonWebKey, kid?: string, alg?: string):PromiseLike; + verify(): PromiseLike; +} + +export interface JoseJWS { + Signer:Signer; + Verifier:Verifier; +} + +export interface Encrypter { + new(cryptographer: WebCryptographer, pubkey: CryptoKey|PromiseLike):Encrypter; + addHeader(k: string, v: string):void; + encrypt(plaintext: string):PromiseLike; +} + +export interface Decrypter { + new(cryptographer: WebCryptographer, key: CryptoKey|PromiseLike):Decrypter; + decrypt(ciphertext: string):PromiseLike; +} + +export interface JoseJWE { + Encrypter:Encrypter; + Decrypter:Decrypter; +} + +export var Jose: Jose; +export var JoseJWE: JoseJWE; +export var JoseJWS: JoseJWS; diff --git a/package.json b/package.json index 9ae7428..34ccd94 100644 --- a/package.json +++ b/package.json @@ -21,5 +21,6 @@ "karma-coverage": "^0.2.7", "karma-qunit": "^0.1.4", "qunitjs": "^1.15.0" - } + }, + "typings": "jose-jwe-jws.d.ts" }