mirror of
https://github.com/denoland/deno.git
synced 2024-10-31 09:14:20 -04:00
240 lines
5.3 KiB
TypeScript
240 lines
5.3 KiB
TypeScript
// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
|
|
|
|
/// <reference no-default-lib="true" />
|
|
/// <reference lib="esnext" />
|
|
|
|
declare var crypto: Crypto;
|
|
|
|
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 KeyFormat = "jwk" | "pkcs8" | "raw" | "spki";
|
|
type NamedCurve = string;
|
|
|
|
interface RsaOtherPrimesInfo {
|
|
d?: string;
|
|
r?: string;
|
|
t?: string;
|
|
}
|
|
|
|
interface JsonWebKey {
|
|
alg?: string;
|
|
crv?: string;
|
|
d?: string;
|
|
dp?: string;
|
|
dq?: string;
|
|
e?: string;
|
|
ext?: boolean;
|
|
k?: string;
|
|
// deno-lint-ignore camelcase
|
|
key_ops?: string[];
|
|
kty?: string;
|
|
n?: string;
|
|
oth?: RsaOtherPrimesInfo[];
|
|
p?: string;
|
|
q?: string;
|
|
qi?: string;
|
|
use?: string;
|
|
x?: string;
|
|
y?: 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;
|
|
}
|
|
|
|
interface RsaOaepParams extends Algorithm {
|
|
label?: Uint8Array;
|
|
}
|
|
|
|
interface HmacImportParams extends Algorithm {
|
|
hash: HashAlgorithmIdentifier;
|
|
length?: number;
|
|
}
|
|
|
|
interface EcKeyAlgorithm extends KeyAlgorithm {
|
|
namedCurve: NamedCurve;
|
|
}
|
|
|
|
interface HmacKeyAlgorithm extends KeyAlgorithm {
|
|
hash: KeyAlgorithm;
|
|
length: number;
|
|
}
|
|
|
|
interface RsaHashedKeyAlgorithm extends RsaKeyAlgorithm {
|
|
hash: KeyAlgorithm;
|
|
}
|
|
|
|
interface RsaKeyAlgorithm extends KeyAlgorithm {
|
|
modulusLength: number;
|
|
publicExponent: Uint8Array;
|
|
}
|
|
|
|
interface HkdfParams extends Algorithm {
|
|
hash: HashAlgorithmIdentifier;
|
|
info: BufferSource;
|
|
salt: BufferSource;
|
|
}
|
|
|
|
interface Pbkdf2Params extends Algorithm {
|
|
hash: HashAlgorithmIdentifier;
|
|
iterations: number;
|
|
salt: BufferSource;
|
|
}
|
|
|
|
/** 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>;
|
|
importKey(
|
|
format: "jwk",
|
|
keyData: JsonWebKey,
|
|
algorithm: AlgorithmIdentifier | HmacImportParams,
|
|
extractable: boolean,
|
|
keyUsages: KeyUsage[],
|
|
): Promise<CryptoKey>;
|
|
importKey(
|
|
format: "raw",
|
|
keyData: BufferSource,
|
|
algorithm: AlgorithmIdentifier | HmacImportParams,
|
|
extractable: boolean,
|
|
keyUsages: KeyUsage[],
|
|
): Promise<CryptoKey>;
|
|
exportKey(format: "jwk", key: CryptoKey): Promise<JsonWebKey>;
|
|
exportKey(
|
|
format: Exclude<KeyFormat, "jwk">,
|
|
key: CryptoKey,
|
|
): Promise<ArrayBuffer>;
|
|
sign(
|
|
algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams,
|
|
key: CryptoKey,
|
|
data: BufferSource,
|
|
): Promise<ArrayBuffer>;
|
|
verify(
|
|
algorithm: AlgorithmIdentifier | RsaPssParams | EcdsaParams,
|
|
key: CryptoKey,
|
|
signature: BufferSource,
|
|
data: BufferSource,
|
|
): Promise<boolean>;
|
|
digest(
|
|
algorithm: AlgorithmIdentifier,
|
|
data: BufferSource,
|
|
): Promise<ArrayBuffer>;
|
|
encrypt(
|
|
algorithm: AlgorithmIdentifier | RsaOaepParams,
|
|
key: CryptoKey,
|
|
data: BufferSource,
|
|
): Promise<ArrayBuffer>;
|
|
decrypt(
|
|
algorithm: AlgorithmIdentifier | RsaOaepParams,
|
|
key: CryptoKey,
|
|
data: BufferSource,
|
|
): Promise<ArrayBuffer>;
|
|
deriveBits(
|
|
algorithm: AlgorithmIdentifier | HkdfParams | Pbkdf2Params,
|
|
baseKey: CryptoKey,
|
|
length: number,
|
|
): 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;
|
|
}
|
|
|
|
declare var SubtleCrypto: {
|
|
prototype: SubtleCrypto;
|
|
new (): SubtleCrypto;
|
|
};
|