summaryrefslogtreecommitdiff
path: root/extensions/crypto/lib.deno_crypto.d.ts
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/crypto/lib.deno_crypto.d.ts')
-rw-r--r--extensions/crypto/lib.deno_crypto.d.ts140
1 files changed, 121 insertions, 19 deletions
diff --git a/extensions/crypto/lib.deno_crypto.d.ts b/extensions/crypto/lib.deno_crypto.d.ts
index c787f5e3c..0798af59f 100644
--- a/extensions/crypto/lib.deno_crypto.d.ts
+++ b/extensions/crypto/lib.deno_crypto.d.ts
@@ -5,10 +5,100 @@
declare var crypto: Crypto;
-declare interface Crypto {
- readonly subtle: SubtleCrypto;
- getRandomValues<
- T extends
+interface Algorithm {
+ name: string;
+}
+
+interface KeyAlgorithm {
+ name: string;
+}
+
+type AlgorithmIdentifier = string | Algorithm;
+type HashAlgorithmIdentifier = AlgorithmIdentifier;
+type KeyType = "private" | "public" | "secret";
+type KeyUsage =
+ | "decrypt"
+ | "deriveBits"
+ | "deriveKey"
+ | "encrypt"
+ | "sign"
+ | "unwrapKey"
+ | "verify"
+ | "wrapKey";
+
+type NamedCurve = string;
+
+interface HmacKeyGenParams extends Algorithm {
+ hash: HashAlgorithmIdentifier;
+ length?: number;
+}
+
+interface EcKeyGenParams extends Algorithm {
+ namedCurve: NamedCurve;
+}
+
+interface EcdsaParams extends Algorithm {
+ hash: HashAlgorithmIdentifier;
+}
+
+interface RsaHashedKeyGenParams extends RsaKeyGenParams {
+ hash: HashAlgorithmIdentifier;
+}
+
+interface RsaKeyGenParams extends Algorithm {
+ modulusLength: number;
+ publicExponent: Uint8Array;
+}
+
+interface RsaPssParams extends Algorithm {
+ saltLength: number;
+}
+
+/** The CryptoKey dictionary of the Web Crypto API represents a cryptographic key. */
+interface CryptoKey {
+ readonly algorithm: KeyAlgorithm;
+ readonly extractable: boolean;
+ readonly type: KeyType;
+ readonly usages: KeyUsage[];
+}
+
+declare var CryptoKey: {
+ prototype: CryptoKey;
+ new (): CryptoKey;
+};
+
+/** The CryptoKeyPair dictionary of the Web Crypto API represents a key pair for an asymmetric cryptography algorithm, also known as a public-key algorithm. */
+interface CryptoKeyPair {
+ privateKey: CryptoKey;
+ publicKey: CryptoKey;
+}
+
+declare var CryptoKeyPair: {
+ prototype: CryptoKeyPair;
+ new (): CryptoKeyPair;
+};
+
+/** This Web Crypto API interface provides a number of low-level cryptographic functions. It is accessed via the Crypto.subtle properties available in a window context (via Window.crypto). */
+interface SubtleCrypto {
+ generateKey(
+ algorithm: RsaHashedKeyGenParams | EcKeyGenParams,
+ extractable: boolean,
+ keyUsages: KeyUsage[],
+ ): Promise<CryptoKeyPair>;
+ generateKey(
+ algorithm: HmacKeyGenParams,
+ extractable: boolean,
+ keyUsages: KeyUsage[],
+ ): Promise<CryptoKey>;
+ generateKey(
+ algorithm: AlgorithmIdentifier,
+ extractable: boolean,
+ keyUsages: KeyUsage[],
+ ): Promise<CryptoKeyPair | CryptoKey>;
+ sign(
+ algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams,
+ key: CryptoKey,
+ data:
| Int8Array
| Int16Array
| Int32Array
@@ -19,19 +109,8 @@ declare interface Crypto {
| Float32Array
| Float64Array
| DataView
- | null,
- >(
- array: T,
- ): T;
- randomUUID(): string;
-}
-
-interface Algorithm {
- name: string;
-}
-
-/** This Web Crypto API interface provides a number of low-level cryptographic functions. It is accessed via the Crypto.subtle properties available in a window context (via Window.crypto). */
-interface SubtleCrypto {
+ | ArrayBuffer,
+ ): Promise<ArrayBuffer>;
digest(
algorithm: AlgorithmIdentifier,
data:
@@ -49,9 +128,32 @@ interface SubtleCrypto {
): Promise<ArrayBuffer>;
}
+declare interface Crypto {
+ readonly subtle: SubtleCrypto;
+ getRandomValues<
+ T extends
+ | Int8Array
+ | Int16Array
+ | Int32Array
+ | Uint8Array
+ | Uint16Array
+ | Uint32Array
+ | Uint8ClampedArray
+ | Float32Array
+ | Float64Array
+ | DataView
+ | null,
+ >(
+ array: T,
+ ): T;
+ randomUUID(): string;
+}
+
+interface Algorithm {
+ name: string;
+}
+
declare var SubtleCrypto: {
prototype: SubtleCrypto;
new (): SubtleCrypto;
};
-
-type AlgorithmIdentifier = string | Algorithm;