Skip to content
This repository was archived by the owner on Feb 27, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 89 additions & 0 deletions jose-jwe-jws.d.ts
Original file line number Diff line number Diff line change
@@ -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<CryptoKey>;
wrapCek():PromiseLike<ArrayBuffer>;
unwrapCek():PromiseLike<ArrayBuffer>;
encrypt(iv: Uint8Array, aad: Uint8Array, cek: CryptoKey|PromiseLike<CryptoKey>, plaintext: Uint8Array):PromiseLike<EncryptionResult>;
decrypt(cek: CryptoKey|PromiseLike<CryptoKey>, aad: Uint8Array, iv: Uint8Array, ciphertext: Uint8Array, tag: Uint8Array):PromiseLike<string>;
sign(aad: Object, payload: string|Object, key:CryptoKey|PromiseLike<CryptoKey>):PromiseLike<ArrayBuffer>;
verify(aad: string, payload: string, signature: Uint8Array, key: CryptoKey|PromiseLike<CryptoKey>, kid: string):PromiseLike<VerificationResult>;
}

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<string>;
sign(payload: any, aad?: Object, header?: Object):PromiseLike<SignedJws>;
}

export interface Verifier {
new(cryptographer: WebCryptographer, msg: string,
keyfinder?: (kid: string) => PromiseLike<CryptoKey>):Verifier;
addRecipient(pk: CryptoKey|string|JsonWebKey, kid?: string, alg?: string):PromiseLike<string>;
verify(): PromiseLike<VerificationResult[]>;
}

export interface JoseJWS {
Signer:Signer;
Verifier:Verifier;
}

export interface Encrypter {
new(cryptographer: WebCryptographer, pubkey: CryptoKey|PromiseLike<CryptoKey>):Encrypter;
addHeader(k: string, v: string):void;
encrypt(plaintext: string):PromiseLike<string>;
}

export interface Decrypter {
new(cryptographer: WebCryptographer, key: CryptoKey|PromiseLike<CryptoKey>):Decrypter;
decrypt(ciphertext: string):PromiseLike<string>;
}

export interface JoseJWE {
Encrypter:Encrypter;
Decrypter:Decrypter;
}

export var Jose: Jose;
export var JoseJWE: JoseJWE;
export var JoseJWS: JoseJWS;
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,6 @@
"karma-coverage": "^0.2.7",
"karma-qunit": "^0.1.4",
"qunitjs": "^1.15.0"
}
},
"typings": "jose-jwe-jws.d.ts"
}