2021-02-26 12:06:26 -05:00
// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
/// <reference no-default-lib="true" />
/// <reference lib="esnext" />
declare var crypto : Crypto ;
2021-07-06 08:16:04 -04:00
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 ;
}
2021-08-03 15:24:02 -04:00
interface HmacImportParams extends Algorithm {
hash : HashAlgorithmIdentifier ;
length? : number ;
}
2021-07-06 08:16:04 -04:00
/** 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 > ;
2021-08-03 15:24:02 -04:00
importKey (
format : "raw" ,
keyData : BufferSource ,
algorithm : AlgorithmIdentifier | HmacImportParams ,
extractable : boolean ,
keyUsages : KeyUsage [ ] ,
) : Promise < CryptoKey > ;
2021-08-17 05:29:32 -04:00
exportKey ( format : "raw" , key : CryptoKey ) : Promise < ArrayBuffer > ;
2021-07-06 08:16:04 -04:00
sign (
algorithm : AlgorithmIdentifier | RsaPssParams | EcdsaParams ,
key : CryptoKey ,
2021-07-26 08:00:19 -04:00
data : BufferSource ,
2021-07-06 08:16:04 -04:00
) : Promise < ArrayBuffer > ;
2021-07-12 08:45:36 -04:00
verify (
algorithm : AlgorithmIdentifier | RsaPssParams ,
key : CryptoKey ,
2021-07-26 08:00:19 -04:00
signature : BufferSource ,
data : BufferSource ,
2021-07-12 08:45:36 -04:00
) : Promise < boolean > ;
2021-06-06 06:57:10 -04:00
digest (
algorithm : AlgorithmIdentifier ,
2021-07-26 08:00:19 -04:00
data : BufferSource ,
2021-06-06 06:57:10 -04:00
) : Promise < ArrayBuffer > ;
}
2021-07-06 08:16:04 -04:00
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 ;
}
2021-06-06 06:57:10 -04:00
declare var SubtleCrypto : {
prototype : SubtleCrypto ;
new ( ) : SubtleCrypto ;
} ;