From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- dom/webidl/SubtleCrypto.webidl | 245 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 245 insertions(+) create mode 100644 dom/webidl/SubtleCrypto.webidl (limited to 'dom/webidl/SubtleCrypto.webidl') diff --git a/dom/webidl/SubtleCrypto.webidl b/dom/webidl/SubtleCrypto.webidl new file mode 100644 index 0000000000..6c7842b1f2 --- /dev/null +++ b/dom/webidl/SubtleCrypto.webidl @@ -0,0 +1,245 @@ +/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* 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 http://mozilla.org/MPL/2.0/. + * + * The origin of this IDL file is + * http://www.w3.org/TR/WebCryptoAPI/ + */ + +typedef DOMString KeyType; +typedef DOMString KeyUsage; +typedef DOMString NamedCurve; +typedef Uint8Array BigInteger; + +/***** Algorithm dictionaries *****/ + +dictionary Algorithm { + required DOMString name; +}; + +[GenerateInit] +dictionary AesCbcParams : Algorithm { + required BufferSource iv; +}; + +[GenerateInit] +dictionary AesCtrParams : Algorithm { + required BufferSource counter; + required [EnforceRange] octet length; +}; + +[GenerateInit] +dictionary AesGcmParams : Algorithm { + required BufferSource iv; + BufferSource additionalData; + [EnforceRange] octet tagLength; +}; + +dictionary HmacImportParams : Algorithm { + required AlgorithmIdentifier hash; +}; + +[GenerateInit] +dictionary Pbkdf2Params : Algorithm { + required BufferSource salt; + required [EnforceRange] unsigned long iterations; + required AlgorithmIdentifier hash; +}; + +[GenerateInit] +dictionary RsaHashedImportParams { + required AlgorithmIdentifier hash; +}; + +dictionary AesKeyGenParams : Algorithm { + required [EnforceRange] unsigned short length; +}; + +[GenerateInit] +dictionary HmacKeyGenParams : Algorithm { + required AlgorithmIdentifier hash; + [EnforceRange] unsigned long length; +}; + +[GenerateInit] +dictionary RsaHashedKeyGenParams : Algorithm { + required [EnforceRange] unsigned long modulusLength; + required BigInteger publicExponent; + required AlgorithmIdentifier hash; +}; + +[GenerateInit] +dictionary RsaOaepParams : Algorithm { + BufferSource label; +}; + +[GenerateInit] +dictionary RsaPssParams : Algorithm { + required [EnforceRange] unsigned long saltLength; +}; + +[GenerateInit] +dictionary EcKeyGenParams : Algorithm { + required NamedCurve namedCurve; +}; + +[GenerateInit] +dictionary AesDerivedKeyParams : Algorithm { + required [EnforceRange] unsigned long length; +}; + +[GenerateInit] +dictionary HmacDerivedKeyParams : HmacImportParams { + [EnforceRange] unsigned long length; +}; + +[GenerateInit] +dictionary EcdhKeyDeriveParams : Algorithm { + required CryptoKey public; +}; + +[GenerateInit] +dictionary DhImportKeyParams : Algorithm { + required BigInteger prime; + required BigInteger generator; +}; + +[GenerateInit] +dictionary EcdsaParams : Algorithm { + required AlgorithmIdentifier hash; +}; + +[GenerateInit] +dictionary EcKeyImportParams : Algorithm { + NamedCurve namedCurve; +}; + +[GenerateInit] +dictionary HkdfParams : Algorithm { + required AlgorithmIdentifier hash; + required BufferSource salt; + required BufferSource info; +}; + +/***** JWK *****/ + +dictionary RsaOtherPrimesInfo { + // The following fields are defined in Section 6.3.2.7 of JSON Web Algorithms + required DOMString r; + required DOMString d; + required DOMString t; +}; + +[GenerateInitFromJSON, GenerateToJSON] +dictionary JsonWebKey { + // The following fields are defined in Section 3.1 of JSON Web Key + required DOMString kty; + DOMString use; + sequence key_ops; + DOMString alg; + + // The following fields are defined in JSON Web Key Parameters Registration + boolean ext; + + // The following fields are defined in Section 6 of JSON Web Algorithms + DOMString crv; + DOMString x; + DOMString y; + DOMString d; + DOMString n; + DOMString e; + DOMString p; + DOMString q; + DOMString dp; + DOMString dq; + DOMString qi; + sequence oth; + DOMString k; +}; + + +/***** The Main API *****/ + +[Serializable, + SecureContext, + Exposed=(Window,Worker)] +interface CryptoKey { + readonly attribute KeyType type; + readonly attribute boolean extractable; + [Cached, Constant, Throws] readonly attribute object algorithm; + [Cached, Constant, Frozen] readonly attribute sequence usages; +}; + +[GenerateConversionToJS] +dictionary CryptoKeyPair { + required CryptoKey publicKey; + required CryptoKey privateKey; +}; + +typedef DOMString KeyFormat; +typedef (object or DOMString) AlgorithmIdentifier; + +[Exposed=(Window,Worker), + SecureContext] +interface SubtleCrypto { + [NewObject] + Promise encrypt(AlgorithmIdentifier algorithm, + CryptoKey key, + BufferSource data); + [NewObject] + Promise decrypt(AlgorithmIdentifier algorithm, + CryptoKey key, + BufferSource data); + [NewObject] + Promise sign(AlgorithmIdentifier algorithm, + CryptoKey key, + BufferSource data); + [NewObject] + Promise verify(AlgorithmIdentifier algorithm, + CryptoKey key, + BufferSource signature, + BufferSource data); + [NewObject] + Promise digest(AlgorithmIdentifier algorithm, + BufferSource data); + + [NewObject] + Promise generateKey(AlgorithmIdentifier algorithm, + boolean extractable, + sequence keyUsages ); + [NewObject] + Promise deriveKey(AlgorithmIdentifier algorithm, + CryptoKey baseKey, + AlgorithmIdentifier derivedKeyType, + boolean extractable, + sequence keyUsages ); + [NewObject] + Promise deriveBits(AlgorithmIdentifier algorithm, + CryptoKey baseKey, + unsigned long length); + + [NewObject] + Promise importKey(KeyFormat format, + object keyData, + AlgorithmIdentifier algorithm, + boolean extractable, + sequence keyUsages ); + [NewObject] + Promise exportKey(KeyFormat format, CryptoKey key); + + [NewObject] + Promise wrapKey(KeyFormat format, + CryptoKey key, + CryptoKey wrappingKey, + AlgorithmIdentifier wrapAlgorithm); + + [NewObject] + Promise unwrapKey(KeyFormat format, + BufferSource wrappedKey, + CryptoKey unwrappingKey, + AlgorithmIdentifier unwrapAlgorithm, + AlgorithmIdentifier unwrappedKeyAlgorithm, + boolean extractable, + sequence keyUsages ); +}; -- cgit v1.2.3