/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ // https://w3c.github.io/webcrypto/#subtlecrypto-interface typedef (object or DOMString) AlgorithmIdentifier; typedef AlgorithmIdentifier HashAlgorithmIdentifier; dictionary Algorithm { required DOMString name; }; dictionary KeyAlgorithm { required DOMString name; }; enum KeyFormat { "raw", "spki", "pkcs8", "jwk" }; [SecureContext,Exposed=(Window,Worker),Pref="dom.crypto.subtle.enabled"] interface SubtleCrypto { // Promise encrypt(AlgorithmIdentifier algorithm, // CryptoKey key, // BufferSource data); // Promise decrypt(AlgorithmIdentifier algorithm, // CryptoKey key, // BufferSource data); // Promise sign(AlgorithmIdentifier algorithm, // CryptoKey key, // BufferSource data); // Promise verify(AlgorithmIdentifier algorithm, // CryptoKey key, // BufferSource signature, // BufferSource data); // Promise digest(AlgorithmIdentifier algorithm, // BufferSource data); Promise generateKey(AlgorithmIdentifier algorithm, boolean extractable, sequence keyUsages ); // Promise deriveKey(AlgorithmIdentifier algorithm, // CryptoKey baseKey, // AlgorithmIdentifier derivedKeyType, // boolean extractable, // sequence keyUsages ); // Promise deriveBits(AlgorithmIdentifier algorithm, // CryptoKey baseKey, // optional unsigned long? length = null); // Promise importKey(KeyFormat format, // (BufferSource or JsonWebKey) keyData, // AlgorithmIdentifier algorithm, // boolean extractable, // sequence keyUsages ); Promise exportKey(KeyFormat format, CryptoKey key); // Promise wrapKey(KeyFormat format, // CryptoKey key, // CryptoKey wrappingKey, // AlgorithmIdentifier wrapAlgorithm); // Promise unwrapKey(KeyFormat format, // BufferSource wrappedKey, // CryptoKey unwrappingKey, // AlgorithmIdentifier unwrapAlgorithm, // AlgorithmIdentifier unwrappedKeyAlgorithm, // boolean extractable, // sequence keyUsages ); }; // AES shared dictionary AesKeyAlgorithm : KeyAlgorithm { required unsigned short length; }; dictionary AesKeyGenParams : Algorithm { required [EnforceRange] unsigned short length; }; dictionary AesDerivedKeyParams : Algorithm { required [EnforceRange] unsigned short length; }; // AES_CBC dictionary AesCbcParams : Algorithm { required BufferSource iv; };