Read more on MDN
let decrypt: ( WebAPI.WebCryptoAPI.subtleCrypto, ~algorithm: WebAPI.WebCryptoAPI.algorithmIdentifier, ~key: WebAPI.WebCryptoAPI.cryptoKey, ~data: WebAPI.Prelude.bufferSource,) => Promise.t<ArrayBuffer.t>
let deriveBits: ( WebAPI.WebCryptoAPI.subtleCrypto, ~algorithm: WebAPI.WebCryptoAPI.algorithm, ~baseKey: WebAPI.WebCryptoAPI.cryptoKey, ~length: int=?,) => Promise.t<ArrayBuffer.t>
let deriveBits2: ( WebAPI.WebCryptoAPI.subtleCrypto, ~algorithm: string, ~baseKey: WebAPI.WebCryptoAPI.cryptoKey, ~length: int=?,) => Promise.t<ArrayBuffer.t>
let deriveKey: ( WebAPI.WebCryptoAPI.subtleCrypto, ~algorithm: WebAPI.WebCryptoAPI.algorithmIdentifier, ~baseKey: WebAPI.WebCryptoAPI.cryptoKey, ~derivedKeyType: WebAPI.WebCryptoAPI.algorithmIdentifier, ~extractable: bool, ~keyUsages: array<WebAPI.WebCryptoAPI.keyUsage>,) => Promise.t<JSON.t>
let digest: ( WebAPI.WebCryptoAPI.subtleCrypto, ~algorithm: WebAPI.WebCryptoAPI.algorithmIdentifier, ~data: WebAPI.Prelude.bufferSource,) => Promise.t<JSON.t>
let encrypt: ( WebAPI.WebCryptoAPI.subtleCrypto, ~algorithm: WebAPI.WebCryptoAPI.algorithmIdentifier, ~key: WebAPI.WebCryptoAPI.cryptoKey, ~data: WebAPI.Prelude.bufferSource,) => Promise.t<ArrayBuffer.t>
let exportKey: ( WebAPI.WebCryptoAPI.subtleCrypto, ~format: WebAPI.WebCryptoAPI.keyFormat, ~key: WebAPI.WebCryptoAPI.cryptoKey,) => Promise.t<JSON.t>
let generateKey: ( WebAPI.WebCryptoAPI.subtleCrypto, ~algorithm: WebAPI.WebCryptoAPI.algorithm, ~extractable: bool, ~keyUsages: array<WebAPI.WebCryptoAPI.keyUsage>,) => Promise.t<JSON.t>
let generateKey2: ( WebAPI.WebCryptoAPI.subtleCrypto, ~algorithm: string, ~extractable: bool, ~keyUsages: array<WebAPI.WebCryptoAPI.keyUsage>,) => Promise.t<JSON.t>
let importKey: ( WebAPI.WebCryptoAPI.subtleCrypto, ~format: WebAPI.Prelude.any, ~keyData: WebAPI.Prelude.bufferSource, ~algorithm: WebAPI.WebCryptoAPI.algorithmIdentifier, ~extractable: bool, ~keyUsages: array<WebAPI.WebCryptoAPI.keyUsage>,) => Promise.t<WebAPI.WebCryptoAPI.cryptoKey>
let sign: ( WebAPI.WebCryptoAPI.subtleCrypto, ~algorithm: WebAPI.WebCryptoAPI.algorithmIdentifier, ~key: WebAPI.WebCryptoAPI.cryptoKey, ~data: WebAPI.Prelude.bufferSource,) => Promise.t<JSON.t>
let unwrapKey: ( WebAPI.WebCryptoAPI.subtleCrypto, ~format: WebAPI.WebCryptoAPI.keyFormat, ~wrappedKey: WebAPI.Prelude.bufferSource, ~unwrappingKey: WebAPI.WebCryptoAPI.cryptoKey, ~unwrapAlgorithm: WebAPI.WebCryptoAPI.algorithmIdentifier, ~unwrappedKeyAlgorithm: WebAPI.WebCryptoAPI.algorithmIdentifier, ~extractable: bool, ~keyUsages: array<WebAPI.WebCryptoAPI.keyUsage>,) => Promise.t<WebAPI.WebCryptoAPI.cryptoKey>
let verify: ( WebAPI.WebCryptoAPI.subtleCrypto, ~algorithm: WebAPI.WebCryptoAPI.algorithmIdentifier, ~key: WebAPI.WebCryptoAPI.cryptoKey, ~signature: WebAPI.Prelude.bufferSource, ~data: WebAPI.Prelude.bufferSource,) => Promise.t<JSON.t>
let wrapKey: ( WebAPI.WebCryptoAPI.subtleCrypto, ~format: WebAPI.WebCryptoAPI.keyFormat, ~key: WebAPI.WebCryptoAPI.cryptoKey, ~wrappingKey: WebAPI.WebCryptoAPI.cryptoKey, ~wrapAlgorithm: WebAPI.WebCryptoAPI.algorithm,) => Promise.t<JSON.t>
let wrapKey2: ( WebAPI.WebCryptoAPI.subtleCrypto, ~format: WebAPI.WebCryptoAPI.keyFormat, ~key: WebAPI.WebCryptoAPI.cryptoKey, ~wrappingKey: WebAPI.WebCryptoAPI.cryptoKey, ~wrapAlgorithm: string,) => Promise.t<JSON.t>