From 9e11e01323f59d0a2dfa9d080f29bbc27452db19 Mon Sep 17 00:00:00 2001 From: reffy-bot <> Date: Thu, 5 Dec 2024 12:49:06 +0000 Subject: [PATCH] Update of ED report from new reffy run Using reffy commit 18.0.0. --- ed/algorithms/WebCryptoAPI.json | 2089 ++++++++++++++++++++++--------- ed/algorithms/webdriver2.json | 36 +- ed/dfns/WebCryptoAPI.json | 68 +- ed/dfns/webdriver2.json | 19 + ed/headings/WebCryptoAPI.json | 175 ++- ed/ids/WebCryptoAPI.json | 743 +++++++---- ed/ids/html.json | 14 + ed/ids/webdriver2.json | 8 +- ed/index.json | 28 +- ed/links/WebCryptoAPI.json | 32 +- ed/links/html.json | 2 + ed/refs/WebCryptoAPI.json | 16 + 12 files changed, 2249 insertions(+), 981 deletions(-) diff --git a/ed/algorithms/WebCryptoAPI.json b/ed/algorithms/WebCryptoAPI.json index 00e222ecabe9..bce7feec17c5 100644 --- a/ed/algorithms/WebCryptoAPI.json +++ b/ed/algorithms/WebCryptoAPI.json @@ -23,7 +23,7 @@ "html": "

\n Parse data according to the Distinguished Encoding Rules of\n [X690], using structure as the ASN.1 structure\n to be decoded.\n

" }, { - "html": "

\n If exactData was specified, and all of the bytes of data were\n not consumed during the parsing phase, then\n throw a\n DataError.\n

" + "html": "

\n If exactData was specified, and all of the bytes of data were\n not consumed during the parsing phase, then\n throw a\n DataError.\n

" }, { "html": "

\n Return the parsed ASN.1 structure.\n

" @@ -52,7 +52,7 @@ "html": "

\n Let key be the result of converting result to the IDL dictionary\n type of JsonWebKey.\n

" }, { - "html": "

\n If the kty field of key is not defined, then throw a DataError.\n

" + "html": "

\n If the kty field of key is not defined, then throw a DataError.\n

" }, { "html": "

\n Return key.\n

" @@ -92,10 +92,10 @@ "rationale": "if", "steps": [ { - "html": "

\n If array is not an Int8Array, Uint8Array, Uint8ClampedArray,\n Int16Array, Uint16Array, Int32Array, Uint32Array,\n BigInt64Array, or BigUint64Array, then throw a\n TypeMismatchError and\n terminate the algorithm.\n

" + "html": "

\n If array is not an Int8Array, Uint8Array, Uint8ClampedArray,\n Int16Array, Uint16Array, Int32Array, Uint32Array,\n BigInt64Array, or BigUint64Array, then throw a\n TypeMismatchError and\n terminate the algorithm.\n

" }, { - "html": "

\n If the byteLength of array is greater than 65536, throw a\n QuotaExceededError and\n terminate the algorithm.\n

" + "html": "

\n If the byteLength of array is greater than 65536, throw a\n QuotaExceededError and\n terminate the algorithm.\n

" }, { "html": "

\n Overwrite all elements of array with cryptographically strong random values of\n the appropriate type.\n

" @@ -112,7 +112,7 @@ "rationale": "let", "steps": [ { - "html": "Let bytes be a byte sequence of length 16." + "html": "Let bytes be a byte sequence of length 16." }, { "html": "Fill bytes with cryptographically secure random bytes." @@ -124,7 +124,7 @@ "html": "Set the 2 most significant bits of bytes[8], which represent the\n UUID variant, to 10." }, { - "html": "

\n Return the string concatenation of «\n

\n \n

\n ».\n

", + "html": "

\n Return the string concatenation of «\n

\n \n

\n ».\n

", "ignored": [ "hexadecimal representation of bytes[0], hexadecimal representation of bytes[1], hexadecimal representation of bytes[2], hexadecimal representation of bytes[3], \"-\", hexadecimal representation of bytes[4], hexadecimal representation of bytes[5], \"-\", hexadecimal representation of bytes[6], hexadecimal representation of bytes[7], \"-\", hexadecimal representation of bytes[8], hexadecimal representation of bytes[9], \"-\", hexadecimal representation of bytes[10], hexadecimal representation of bytes[11], hexadecimal representation of bytes[12], hexadecimal representation of bytes[13], hexadecimal representation of bytes[14], hexadecimal representation of bytes[15]" ] @@ -132,7 +132,7 @@ ] }, { - "html": "CryptoKey objects are serializable objects. Their serialization steps,\n given value and serialized, are:", + "html": "CryptoKey objects are serializable objects. Their serialization steps,\n given value and serialized, are:", "rationale": "set", "steps": [ { @@ -142,10 +142,10 @@ "html": "Set serialized.[[Extractable]] to the [[extractable]] internal slot of value." }, { - "html": "Set serialized.[[Algorithm]] to the sub-serialization of the\n [[algorithm]] internal slot of value." + "html": "Set serialized.[[Algorithm]] to the sub-serialization of the\n [[algorithm]] internal slot of value." }, { - "html": "Set serialized.[[Usages]] to the sub-serialization of the\n [[usages]] internal slot of value." + "html": "Set serialized.[[Usages]] to the sub-serialization of the\n [[usages]] internal slot of value." }, { "html": "Set serialized.[[Handle]] to the [[handle]] internal slot of value." @@ -153,7 +153,7 @@ ] }, { - "html": "Their deserialization steps, given serialized and value, are:", + "html": "Their deserialization steps, given serialized and value, are:", "rationale": "initialize", "steps": [ { @@ -163,10 +163,10 @@ "html": "Initialize the [[extractable]] internal slot of value to serialized.[[Extractable]]." }, { - "html": "Initialize the [[algorithm]] internal slot of value to the\n sub-deserialization of serialized.[[Algorithm]]." + "html": "Initialize the [[algorithm]] internal slot of value to the\n sub-deserialization of serialized.[[Algorithm]]." }, { - "html": "Initialize the [[usages]] internal slot of value to the\n sub-deserialization of serialized.[[Usages]]." + "html": "Initialize the [[usages]] internal slot of value to the\n sub-deserialization of serialized.[[Usages]]." }, { "html": "Initialize the [[handle]] internal slot of value to serialized.[[Handle]]." @@ -183,7 +183,7 @@ "html": "

\n Let algorithm and key be the\n algorithm and key parameters\n passed to the encrypt() method,\n respectively.\n

" }, { - "html": "

\n Let data be the result of\n getting a copy of the bytes held by the data parameter passed to the\n encrypt() method.\n

" + "html": "

\n Let data be the result of\n getting a copy of the bytes held by the data parameter passed to the\n encrypt() method.\n

" }, { "html": "

\n Let normalizedAlgorithm be the result of\n normalizing an algorithm, with\n alg set to algorithm and op set to\n \"encrypt\".\n

" @@ -195,16 +195,16 @@ "html": "

\n Let promise be a new Promise.\n

" }, { - "html": "

\n Return promise and perform the remaining steps in parallel.\n

" + "html": "

\n Return promise and perform the remaining steps in parallel.\n

" }, { - "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" + "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" }, { - "html": "

\n If the name member of\n normalizedAlgorithm is not equal to the\n name attribute of the\n [[algorithm]] internal slot of\n key then throw an InvalidAccessError.\n

" + "html": "

\n If the name member of\n normalizedAlgorithm is not equal to the\n name attribute of the\n [[algorithm]] internal slot of\n key then throw an InvalidAccessError.\n

" }, { - "html": "

\n If the [[usages]] internal slot of\n key does not contain an entry that is \"encrypt\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[usages]] internal slot of\n key does not contain an entry that is \"encrypt\", then throw an InvalidAccessError.\n

" }, { "html": "

\n Let ciphertext be the result of performing the encrypt\n operation specified by normalizedAlgorithm using algorithm\n and key and with data as plaintext.\n

" @@ -224,7 +224,7 @@ "html": "

\n Let algorithm and key be the\n algorithm and keyparameters\n passed to the decrypt() method,\n respectively.\n

" }, { - "html": "

\n Let data be the result of\n getting a copy of the bytes held by the data parameter passed to the\n decrypt() method.\n

" + "html": "

\n Let data be the result of\n getting a copy of the bytes held by the data parameter passed to the\n decrypt() method.\n

" }, { "html": "

\n Let normalizedAlgorithm be the result of\n normalizing an algorithm, with\n alg set to algorithm and op set to\n \"decrypt\".\n

" @@ -236,16 +236,16 @@ "html": "

\n Let promise be a new Promise.\n

" }, { - "html": "

\n Return promise and the remaining steps in parallel.\n

" + "html": "

\n Return promise and the remaining steps in parallel.\n

" }, { - "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" + "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" }, { - "html": "

\n If the name member of\n normalizedAlgorithm is not equal to the\n name attribute of the\n [[algorithm]] internal slot of\n key then throw an InvalidAccessError.\n

" + "html": "

\n If the name member of\n normalizedAlgorithm is not equal to the\n name attribute of the\n [[algorithm]] internal slot of\n key then throw an InvalidAccessError.\n

" }, { - "html": "

\n If the [[usages]] internal slot of\n key does not contain an entry that is \"decrypt\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[usages]] internal slot of\n key does not contain an entry that is \"decrypt\", then throw an InvalidAccessError.\n

" }, { "html": "

\n Let plaintext be the result of performing the decrypt\n operation specified by normalizedAlgorithm using key\n and algorithm\n and with data as ciphertext.\n

" @@ -265,7 +265,7 @@ "html": "

\n Let algorithm and key be the\n algorithm and key parameters\n passed to the sign() method,\n respectively.\n

" }, { - "html": "

\n Let data be the result of\n getting a copy of the bytes held by the data parameter passed to the\n sign() method.\n

" + "html": "

\n Let data be the result of\n getting a copy of the bytes held by the data parameter passed to the\n sign() method.\n

" }, { "html": "

\n Let normalizedAlgorithm be the result of\n normalizing an algorithm, with\n alg set to algorithm and op set to\n \"sign\".\n

" @@ -277,16 +277,16 @@ "html": "

\n Let promise be a new Promise.\n

" }, { - "html": "

\n Return promise and perform the remaining steps in parallel.\n

" + "html": "

\n Return promise and perform the remaining steps in parallel.\n

" }, { - "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" + "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" }, { - "html": "

\n If the name member of\n normalizedAlgorithm is not equal to the\n name attribute of the\n [[algorithm]] internal slot of\n key then throw an InvalidAccessError.\n

" + "html": "

\n If the name member of\n normalizedAlgorithm is not equal to the\n name attribute of the\n [[algorithm]] internal slot of\n key then throw an InvalidAccessError.\n

" }, { - "html": "

\n If the [[usages]] internal slot of\n key does not contain an entry that is \"sign\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[usages]] internal slot of\n key does not contain an entry that is \"sign\", then throw an InvalidAccessError.\n

" }, { "html": "

\n Let result be the result of performing the sign operation\n specified by normalizedAlgorithm using key and\n algorithm and with data as message.\n

" @@ -306,10 +306,10 @@ "html": "

\n Let algorithm and key\n be the algorithm and key parameters passed to the\n verify() method, respectively.\n

" }, { - "html": "

\n Let signature be the result of\n getting a copy of the bytes held by the signature parameter passed to the\n verify() method.\n

" + "html": "

\n Let signature be the result of\n getting a copy of the bytes held by the signature parameter passed to the\n verify() method.\n

" }, { - "html": "

\n Let data be the result of\n getting a copy of the bytes held by the data parameter passed to the\n verify() method.\n

" + "html": "

\n Let data be the result of\n getting a copy of the bytes held by the data parameter passed to the\n verify() method.\n

" }, { "html": "

\n Let normalizedAlgorithm be the result of\n normalizing an algorithm, with\n alg set to algorithm and op set to\n \"verify\".\n

" @@ -321,16 +321,16 @@ "html": "

\n Let promise be a new Promise.\n

" }, { - "html": "

\n Return promise and perform the remaining stepsin parallel.\n

" + "html": "

\n Return promise and perform the remaining stepsin parallel.\n

" }, { - "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" + "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" }, { - "html": "

\n If the name member of\n normalizedAlgorithm is not equal to the\n name attribute of the\n [[algorithm]] internal slot of\n key then throw an InvalidAccessError.\n

" + "html": "

\n If the name member of\n normalizedAlgorithm is not equal to the\n name attribute of the\n [[algorithm]] internal slot of\n key then throw an InvalidAccessError.\n

" }, { - "html": "

\n If the [[usages]] internal slot of\n key does not contain an entry that is \"verify\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[usages]] internal slot of\n key does not contain an entry that is \"verify\", then throw an InvalidAccessError.\n

" }, { "html": "

\n Let result be the result of performing the verify operation\n specified by normalizedAlgorithm using key,\n algorithm and\n signature and with data as message.\n

" @@ -350,7 +350,7 @@ "html": "

\n Let algorithm be the algorithm parameter passed to the\n digest() method.\n

" }, { - "html": "

\n Let data be the result of\n getting a copy of the bytes held by the data parameter passed to the\n digest() method.\n

" + "html": "

\n Let data be the result of\n getting a copy of the bytes held by the data parameter passed to the\n digest() method.\n

" }, { "html": "

\n Let normalizedAlgorithm be the result of\n normalizing an algorithm, with\n alg set to algorithm and op set to\n \"digest\".\n

" @@ -362,10 +362,10 @@ "html": "

\n Let promise be a new Promise.\n

" }, { - "html": "

\n Return promise and perform the remaining steps in parallel.\n

" + "html": "

\n Return promise and perform the remaining steps in parallel.\n

" }, { - "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" + "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" }, { "html": "

\n Let result be the result of performing the digest\n operation specified by normalizedAlgorithm using\n algorithm, with data\n as message.\n

" @@ -394,16 +394,16 @@ "html": "

\n Let promise be a new Promise.\n

" }, { - "html": "

\n Return promise and perform the remaining steps in parallel.\n

" + "html": "

\n Return promise and perform the remaining steps in parallel.\n

" }, { - "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" + "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" }, { "html": "

\n Let result be the result of performing the generate key operation\n specified by normalizedAlgorithm using\n algorithm, extractable and usages.\n

" }, { - "html": "
\n
If result is a CryptoKey object:
\n
\n

\n If the [[type]] internal slot of\n result is \"secret\" or \"private\" and\n usages is empty, then throw a SyntaxError.\n

\n
\n
If result is a CryptoKeyPair object:
\n
\n

\n If the [[usages]] internal slot of the\n privateKey attribute of\n result is the empty sequence, then\n throw a SyntaxError.\n

\n
\n
", + "html": "
\n
If result is a CryptoKey object:
\n
\n

\n If the [[type]] internal slot of\n result is \"secret\" or \"private\" and\n usages is empty, then throw a SyntaxError.\n

\n
\n
If result is a CryptoKeyPair object:
\n
\n

\n If the [[usages]] internal slot of the\n privateKey attribute of\n result is the empty sequence, then\n throw a SyntaxError.\n

\n
\n
", "rationale": ".switch", "steps": [ { @@ -411,11 +411,11 @@ "steps": [ { "case": "If result is a CryptoKey object:", - "html": "

\n If the [[type]] internal slot of\n result is \"secret\" or \"private\" and\n usages is empty, then throw a SyntaxError.\n

" + "html": "

\n If the [[type]] internal slot of\n result is \"secret\" or \"private\" and\n usages is empty, then throw a SyntaxError.\n

" }, { "case": "If result is a CryptoKeyPair object:", - "html": "

\n If the [[usages]] internal slot of the\n privateKey attribute of\n result is the empty sequence, then\n throw a SyntaxError.\n

" + "html": "

\n If the [[usages]] internal slot of the\n privateKey attribute of\n result is the empty sequence, then\n throw a SyntaxError.\n

" } ] } @@ -457,16 +457,16 @@ "html": "

\n Let promise be a new Promise.\n

" }, { - "html": "

\n Return promise and perform the remaining steps in parallel.\n

" + "html": "

\n Return promise and perform the remaining steps in parallel.\n

" }, { - "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" + "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" }, { - "html": "

\n If the name member of\n normalizedAlgorithm is not equal to the\n name attribute of the\n [[algorithm]] internal slot of\n baseKey then throw an InvalidAccessError.\n

" + "html": "

\n If the name member of\n normalizedAlgorithm is not equal to the\n name attribute of the\n [[algorithm]] internal slot of\n baseKey then throw an InvalidAccessError.\n

" }, { - "html": "

\n If the [[usages]] internal slot of\n baseKey does not contain an entry that is \"deriveKey\",\n then throw an InvalidAccessError.\n

" + "html": "

\n If the [[usages]] internal slot of\n baseKey does not contain an entry that is \"deriveKey\",\n then throw an InvalidAccessError.\n

" }, { "html": "

\n Let length be the result of performing the get key length\n algorithm specified by normalizedDerivedKeyAlgorithmLength using\n derivedKeyType.\n

" @@ -478,7 +478,7 @@ "html": "

\n Let result be the result of performing the import key operation\n specified by normalizedDerivedKeyAlgorithmImport using \"raw\" as\n format, secret as keyData,\n derivedKeyType as algorithm and using\n extractable and usages.\n

" }, { - "html": "

\n If the [[type]] internal slot of\n result is \"secret\" or \"private\" and\n usages is empty, then throw a SyntaxError.\n

" + "html": "

\n If the [[type]] internal slot of\n result is \"secret\" or \"private\" and\n usages is empty, then throw a SyntaxError.\n

" }, { "html": "

\n Set the [[extractable]] internal\n slot of result to extractable.\n

" @@ -510,19 +510,19 @@ "html": "

\n Let promise be a new Promise object.\n

" }, { - "html": "

\n Return promise and perform the remaining steps in parallel.\n

" + "html": "

\n Return promise and perform the remaining steps in parallel.\n

" }, { - "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" + "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" }, { - "html": "

\n If the name member of\n normalizedAlgorithm is not equal to the\n name attribute of the\n [[algorithm]] internal slot of\n baseKey then throw an InvalidAccessError.\n

" + "html": "

\n If the name member of\n normalizedAlgorithm is not equal to the\n name attribute of the\n [[algorithm]] internal slot of\n baseKey then throw an InvalidAccessError.\n

" }, { - "html": "

\n If the [[usages]] internal slot of\n baseKey does not contain an entry that is \"deriveBits\",\n then throw an InvalidAccessError.\n

" + "html": "

\n If the [[usages]] internal slot of\n baseKey does not contain an entry that is \"deriveBits\",\n then throw an InvalidAccessError.\n

" }, { - "html": "

\n Let result be the result of creating an ArrayBuffer\n containing the result of performing the derive bits operation\n specified by normalizedAlgorithm using baseKey,\n algorithm and length.\n

" + "html": "

\n Let result be the result of creating an ArrayBuffer\n containing the result of performing the derive bits operation\n specified by normalizedAlgorithm using baseKey,\n algorithm and length.\n

" }, { "html": "

\n Resolve promise with\n result.\n

" @@ -551,10 +551,10 @@ "rationale": "if", "steps": [ { - "html": "

\n If the keyData parameter passed to the\n importKey() method is a\n JsonWebKey dictionary, throw a\n TypeError.\n

" + "html": "

\n If the keyData parameter passed to the\n importKey() method is a\n JsonWebKey dictionary, throw a\n TypeError.\n

" }, { - "html": "

\n Let keyData be the result of\n getting a copy of the bytes held by the\n keyData parameter passed to the\n importKey() method.\n

" + "html": "

\n Let keyData be the result of\n getting a copy of the bytes held by the\n keyData parameter passed to the\n importKey() method.\n

" } ] }, @@ -564,7 +564,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If the keyData parameter passed to the\n importKey() method is not a\n JsonWebKey dictionary, throw a\n TypeError.\n

" + "html": "

\n If the keyData parameter passed to the\n importKey() method is not a\n JsonWebKey dictionary, throw a\n TypeError.\n

" }, { "html": "

\n Let keyData be the keyData parameter passed to the\n importKey() method.\n

" @@ -585,16 +585,16 @@ "html": "

\n Let promise be a new Promise.\n

" }, { - "html": "

\n Return promise and perform the remaining steps in parallel.\n

" + "html": "

\n Return promise and perform the remaining steps in parallel.\n

" }, { - "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" + "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" }, { "html": "

\n Let result be the CryptoKey object that\n results from performing the import key operation specified by\n normalizedAlgorithm using keyData,\n algorithm,\n format, extractable and usages.\n

" }, { - "html": "

\n If the [[type]] internal slot of\n result is \"secret\" or \"private\" and\n usages is empty, then throw a SyntaxError.\n

" + "html": "

\n If the [[type]] internal slot of\n result is \"secret\" or \"private\" and\n usages is empty, then throw a SyntaxError.\n

" }, { "html": "

\n Set the [[extractable]] internal\n slot of result to extractable.\n

" @@ -620,16 +620,16 @@ "html": "

\n Let promise be a new Promise.\n

" }, { - "html": "

\n Return promise and perform the remaining steps in parallel.\n

" + "html": "

\n Return promise and perform the remaining steps in parallel.\n

" }, { - "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" + "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" }, { - "html": "

\n If the name member of the [[algorithm]] internal slot of\n key does not identify a registered algorithm\n that supports the export key operation, then throw a NotSupportedError.\n

" + "html": "

\n If the name member of the [[algorithm]] internal slot of\n key does not identify a registered algorithm\n that supports the export key operation, then throw a NotSupportedError.\n

" }, { - "html": "

\n If the [[extractable]] internal slot\n of key is false, then throw an InvalidAccessError.\n

" + "html": "

\n If the [[extractable]] internal slot\n of key is false, then throw an InvalidAccessError.\n

" }, { "html": "

\n Let result be the result of performing the export key operation\n specified by the [[algorithm]]\n internal slot of key using key and format.\n

" @@ -661,22 +661,22 @@ "html": "

\n Let promise be a new Promise.\n

" }, { - "html": "

\n Return promise and perform the remaining steps in parallel.\n

" + "html": "

\n Return promise and perform the remaining steps in parallel.\n

" }, { - "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" + "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" }, { - "html": "

\n If the name member of\n normalizedAlgorithm is not equal to the\n name attribute of the\n [[algorithm]] internal slot of\n wrappingKey then throw an InvalidAccessError.\n

" + "html": "

\n If the name member of\n normalizedAlgorithm is not equal to the\n name attribute of the\n [[algorithm]] internal slot of\n wrappingKey then throw an InvalidAccessError.\n

" }, { - "html": "

\n If the [[usages]] internal slot of\n wrappingKey does not contain an entry that is \"wrapKey\",\n then throw an InvalidAccessError.\n

" + "html": "

\n If the [[usages]] internal slot of\n wrappingKey does not contain an entry that is \"wrapKey\",\n then throw an InvalidAccessError.\n

" }, { - "html": "

\n If the algorithm identified by the [[algorithm]] internal slot of\n key does not support the export key operation, then throw a NotSupportedError.\n

" + "html": "

\n If the algorithm identified by the [[algorithm]] internal slot of\n key does not support the export key operation, then throw a NotSupportedError.\n

" }, { - "html": "

\n If the [[extractable]] internal slot\n of key is false, then throw an InvalidAccessError.\n

" + "html": "

\n If the [[extractable]] internal slot\n of key is false, then throw an InvalidAccessError.\n

" }, { "html": "

\n Let key be the result of performing the export key operation specified\n the [[algorithm]] internal slot of\n key using key and format.\n

" @@ -704,7 +704,7 @@ "html": "

\n Let json be the result of representing key as a\n UTF-16 string conforming to the JSON grammar; for example, by executing\n the JSON.stringify algorithm specified in\n [ECMA-262] in the context of a new global object.\n

" }, { - "html": "

\n Let bytes be the result of UTF-8 encoding json.\n

" + "html": "

\n Let bytes be the result of UTF-8 encoding json.\n

" } ] } @@ -713,7 +713,7 @@ ] }, { - "html": "
\n
If normalizedAlgorithm supports the wrap key operation:
\n
\n

\n Let result be the result of performing the wrap key operation\n specified by normalizedAlgorithm using algorithm,\n wrappingKey as key and bytes as\n plaintext.\n

\n
\n
Otherwise, if normalizedAlgorithm supports the encrypt operation:
\n
\n

\n Let result be the result of performing the encrypt operation\n specified by normalizedAlgorithm using algorithm,\n wrappingKey as key and bytes as\n plaintext.\n

\n
\n
Otherwise:
\n
\n throw a\n NotSupportedError.\n
\n
", + "html": "
\n
If normalizedAlgorithm supports the wrap key operation:
\n
\n

\n Let result be the result of performing the wrap key operation\n specified by normalizedAlgorithm using algorithm,\n wrappingKey as key and bytes as\n plaintext.\n

\n
\n
Otherwise, if normalizedAlgorithm supports the encrypt operation:
\n
\n

\n Let result be the result of performing the encrypt operation\n specified by normalizedAlgorithm using algorithm,\n wrappingKey as key and bytes as\n plaintext.\n

\n
\n
Otherwise:
\n
\n throw a\n NotSupportedError.\n
\n
", "rationale": ".switch", "steps": [ { @@ -729,7 +729,7 @@ }, { "case": "Otherwise:", - "html": "throw a\n NotSupportedError." + "html": "throw a\n NotSupportedError." } ] } @@ -750,7 +750,7 @@ "html": "

\n Let format, unwrappingKey,\n algorithm, unwrappedKeyAlgorithm,\n extractable and usages,\n be the format, unwrappingKey,\n unwrapAlgorithm, unwrappedKeyAlgorithm,\n extractable and keyUsages\n parameters passed to the\n unwrapKey() method,\n respectively.\n

" }, { - "html": "

\n Let wrappedKey be the result of\n getting a copy of the bytes held by the\n wrappedKey parameter passed to the\n unwrapKey() method.\n

" + "html": "

\n Let wrappedKey be the result of\n getting a copy of the bytes held by the\n wrappedKey parameter passed to the\n unwrapKey() method.\n

" }, { "html": "

\n Let normalizedAlgorithm be the result of\n normalizing an algorithm, with\n alg set to algorithm and op set to\n \"unwrapKey\".\n

" @@ -771,19 +771,19 @@ "html": "

\n Let promise be a new Promise.\n

" }, { - "html": "

\n Return promise and perform the remaining steps in parallel.\n

" + "html": "

\n Return promise and perform the remaining steps in parallel.\n

" }, { - "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" + "html": "

\n If the following steps or referenced procedures say to\n throw an error,\n reject promise with\n the returned error and then\n terminate the algorithm.\n

" }, { - "html": "

\n If the name member of\n normalizedAlgorithm is not equal to the\n name attribute of the\n [[algorithm]] internal slot of\n unwrappingKey then throw an InvalidAccessError.\n

" + "html": "

\n If the name member of\n normalizedAlgorithm is not equal to the\n name attribute of the\n [[algorithm]] internal slot of\n unwrappingKey then throw an InvalidAccessError.\n

" }, { - "html": "

\n If the [[usages]] internal slot of\n unwrappingKey does not contain an entry that is\n \"unwrapKey\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[usages]] internal slot of\n unwrappingKey does not contain an entry that is\n \"unwrapKey\", then throw an InvalidAccessError.\n

" }, { - "html": "
\n
If normalizedAlgorithm supports an unwrap key operation:
\n
\n Let key be the result of performing the unwrap key operation\n specified by normalizedAlgorithm using algorithm,\n unwrappingKey as key and wrappedKey as\n ciphertext.\n
\n
\n Otherwise, if normalizedAlgorithm supports a decrypt\n operation:\n
\n
\n Let key be the result of performing the decrypt operation specified\n by normalizedAlgorithm using algorithm,\n unwrappingKey as key and wrappedKey as\n ciphertext.\n
\n
Otherwise:
\n
\n throw a\n NotSupportedError.\n
\n
", + "html": "
\n
If normalizedAlgorithm supports an unwrap key operation:
\n
\n Let key be the result of performing the unwrap key operation\n specified by normalizedAlgorithm using algorithm,\n unwrappingKey as key and wrappedKey as\n ciphertext.\n
\n
\n Otherwise, if normalizedAlgorithm supports a decrypt\n operation:\n
\n
\n Let key be the result of performing the decrypt operation specified\n by normalizedAlgorithm using algorithm,\n unwrappingKey as key and wrappedKey as\n ciphertext.\n
\n
Otherwise:
\n
\n throw a\n NotSupportedError.\n
\n
", "rationale": ".switch", "steps": [ { @@ -799,7 +799,7 @@ }, { "case": "Otherwise:", - "html": "throw a\n NotSupportedError." + "html": "throw a\n NotSupportedError." } ] } @@ -828,7 +828,7 @@ "html": "

\n Let result be the result of performing the import key operation\n specified by normalizedKeyAlgorithm using\n unwrappedKeyAlgorithm as algorithm, format,\n usages\n and extractable and with\n bytes as keyData.\n

" }, { - "html": "

\n If the [[type]] internal slot of\n result is \"secret\" or \"private\" and\n usages is empty, then throw a SyntaxError.\n

" + "html": "

\n If the [[type]] internal slot of\n result is \"secret\" or \"private\" and\n usages is empty, then throw a SyntaxError.\n

" }, { "html": "

\n Set the [[extractable]] internal\n slot of result to extractable.\n

" @@ -949,7 +949,7 @@ "html": "Let idlValue be the value of the dictionary member with\n key name of key on normalizedAlgorithm." }, { - "html": "
\n
\n If member is of the type\n BufferSource and is\n present:\n
\n
\n Set the dictionary member on normalizedAlgorithm with key\n name key to the result of\n getting a copy of the bytes held by\n idlValue, replacing the current value.\n
\n
\n If member is of the type\n HashAlgorithmIdentifier:\n
\n
\n Set the dictionary member on normalizedAlgorithm with key\n name key to the result of\n normalizing an algorithm,\n with the alg set to idlValue and the\n op set to \"digest\".\n
\n
\n If member is of the type\n AlgorithmIdentifier:\n
\n
\n Set the dictionary member on normalizedAlgorithm with key\n name key to the result of\n normalizing an algorithm,\n with the alg set to idlValue and the\n op set to the operation defined by the specification\n that defines the algorithm identified by algName.\n
\n
", + "html": "
\n
\n If member is of the type\n BufferSource and is\n present:\n
\n
\n Set the dictionary member on normalizedAlgorithm with key\n name key to the result of\n getting a copy of the bytes held by\n idlValue, replacing the current value.\n
\n
\n If member is of the type\n HashAlgorithmIdentifier:\n
\n
\n Set the dictionary member on normalizedAlgorithm with key\n name key to the result of\n normalizing an algorithm,\n with the alg set to idlValue and the\n op set to \"digest\".\n
\n
\n If member is of the type\n AlgorithmIdentifier:\n
\n
\n Set the dictionary member on normalizedAlgorithm with key\n name key to the result of\n normalizing an algorithm,\n with the alg set to idlValue and the\n op set to the operation defined by the specification\n that defines the algorithm identified by algName.\n
\n
", "rationale": ".switch", "steps": [ { @@ -957,7 +957,7 @@ "steps": [ { "case": "If member is of the type BufferSource and is present:", - "html": "Set the dictionary member on normalizedAlgorithm with key\n name key to the result of\n getting a copy of the bytes held by\n idlValue, replacing the current value." + "html": "Set the dictionary member on normalizedAlgorithm with key\n name key to the result of\n getting a copy of the bytes held by\n idlValue, replacing the current value." }, { "case": "If member is of the type HashAlgorithmIdentifier:", @@ -992,19 +992,19 @@ "rationale": "if", "steps": [ { - "html": "

\n If the [[type]] internal slot of\n key is not \"private\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[type]] internal slot of\n key is not \"private\", then throw an InvalidAccessError.\n

" }, { "html": "

\n Perform the signature generation operation defined in Section 8.2 of [RFC3447] with the key represented by the [[handle]] internal slot of key\n as the signer's private key and the contents of message as\n M and using the hash function specified in the hash attribute of the [[algorithm]] internal slot of\n key as the Hash option for the EMSA-PKCS1-v1_5 encoding method.\n

" }, { - "html": "

\n If performing the operation results in an error,\n then throw an\n OperationError.\n

" + "html": "

\n If performing the operation results in an error,\n then throw an\n OperationError.\n

" }, { "html": "

\n Let signature be the value S that results from\n performing the operation.\n

" }, { - "html": "

\n Return the result of creating\n an ArrayBuffer containing signature.\n

" + "html": "

\n Return the result of creating\n an ArrayBuffer containing signature.\n

" } ] }, @@ -1013,7 +1013,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If the [[type]] internal slot of\n key is not \"public\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[type]] internal slot of\n key is not \"public\", then throw an InvalidAccessError.\n

" }, { "html": "

\n Perform the signature verification operation defined in Section 8.2 of\n [RFC3447] with the key represented by the\n [[handle]] internal slot of\n key as the signer's RSA public key and the contents of message as\n M and the contents of\n signature as S and using the hash function specified\n in the hash attribute of the\n [[algorithm]] internal slot of\n key as the Hash option for the EMSA-PKCS1-v1_5 encoding method.\n

" @@ -1031,13 +1031,13 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains an entry which is not\n \"sign\" or \"verify\",\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains an entry which is not\n \"sign\" or \"verify\",\n then throw a\n SyntaxError.\n

" }, { "html": "

\n Generate an RSA key pair, as defined in [RFC3447], with RSA modulus length equal to the\n modulusLength attribute of\n normalizedAlgorithm and RSA public exponent equal to the\n publicExponent attribute of\n normalizedAlgorithm.\n

" }, { - "html": "

\n If generation of the key pair fails,\n then throw an\n OperationError.\n

" + "html": "

\n If generation of the key pair fails,\n then throw an\n OperationError.\n

" }, { "html": "

\n Let algorithm be a new\n RsaHashedKeyAlgorithm\n dictionary.\n

" @@ -1106,7 +1106,7 @@ "html": "

Let keyData be the key data to be imported.

" }, { - "html": "
\n
If format is \"spki\":
\n
\n \n
\n
If format is \"pkcs8\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n throw a\n NotSupportedError.\n
\n
", + "html": "
\n
If format is \"spki\":
\n
\n \n
\n
If format is \"pkcs8\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n throw a\n NotSupportedError.\n
\n
", "rationale": ".switch", "steps": [ { @@ -1118,22 +1118,22 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains an entry which is not\n \"verify\",\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains an entry which is not\n \"verify\",\n then throw a\n SyntaxError.\n

" }, { "html": "

\n Let spki be the result of running the\n parse a subjectPublicKeyInfo\n algorithm over keyData.\n

" }, { - "html": "

\n If an error occurred while parsing,\n then throw a\n DataError.\n

" + "html": "

\n If an error occurred while parsing,\n then throw a\n DataError.\n

" }, { - "html": "

\n If the algorithm object identifier field of the\n algorithm AlgorithmIdentifier field of spki is\n not equal to the rsaEncryption\n object identifier defined in [RFC3447],\n then throw a\n DataError.\n

" + "html": "

\n If the algorithm object identifier field of the\n algorithm AlgorithmIdentifier field of spki is\n not equal to the rsaEncryption\n object identifier defined in [RFC3447],\n then throw a\n DataError.\n

" }, { "html": "

\n Let publicKey be the result of performing the parse an ASN.1 structure\n algorithm, with data as the\n subjectPublicKeyInfo field of spki,\n structure as the RSAPublicKey structure\n specified in Section A.1.1 of [RFC3447], and\n exactData set to true.\n

" }, { - "html": "

\n If an error occurred while parsing, or it can be determined that publicKey\n is not a valid public key according to [RFC3447],\n then throw a\n DataError.\n

" + "html": "

\n If an error occurred while parsing, or it can be determined that publicKey\n is not a valid public key according to [RFC3447],\n then throw a\n DataError.\n

" }, { "html": "

\n Let key be a new CryptoKey\n that represents the RSA public key identified by\n publicKey.\n

" @@ -1149,22 +1149,22 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains an entry which is not\n \"sign\"\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains an entry which is not\n \"sign\"\n then throw a\n SyntaxError.\n

" }, { "html": "

\n Let privateKeyInfo be the result of running the\n parse a privateKeyInfo\n algorithm over keyData.\n

" }, { - "html": "

\n If an error occurred while parsing,\n then throw a\n DataError.\n

" + "html": "

\n If an error occurred while parsing,\n then throw a\n DataError.\n

" }, { - "html": "

\n If the algorithm object identifier field of the\n privateKeyAlgorithm PrivateKeyAlgorithm field of\n privateKeyInfo is not equal to the\n rsaEncryption object identifier defined in [RFC3447],\n then throw a\n DataError.\n

" + "html": "

\n If the algorithm object identifier field of the\n privateKeyAlgorithm PrivateKeyAlgorithm field of\n privateKeyInfo is not equal to the\n rsaEncryption object identifier defined in [RFC3447],\n then throw a\n DataError.\n

" }, { "html": "

\n Let rsaPrivateKey be the result of performing the parse an ASN.1 structure\n algorithm, with data as the\n privateKey field of privateKeyInfo,\n structure as the RSAPrivateKey structure\n specified in Section A.1.2 of [RFC3447], and\n exactData set to true.\n

" }, { - "html": "

\n If an error occurred while parsing, or if rsaPrivateKey is not\n a valid RSA private key according to [RFC3447],\n then throw a\n DataError.\n

" + "html": "

\n If an error occurred while parsing, or if rsaPrivateKey is not\n a valid RSA private key according to [RFC3447],\n then throw a\n DataError.\n

" }, { "html": "

\n Let key be a new CryptoKey\n that represents the RSA private key identified by\n rsaPrivateKey.\n

" @@ -1180,7 +1180,7 @@ "rationale": "if", "steps": [ { - "html": "
\n
If keyData is a JsonWebKey dictionary:
\n

Let jwk equal keyData.

\n
Otherwise:
\n

Throw a DataError.

\n
", + "html": "
\n
If keyData is a JsonWebKey dictionary:
\n

Let jwk equal keyData.

\n
Otherwise:
\n

Throw a DataError.

\n
", "rationale": ".switch", "steps": [ { @@ -1192,26 +1192,26 @@ }, { "case": "Otherwise:", - "html": "

Throw a DataError.

" + "html": "

Throw a DataError.

" } ] } ] }, { - "html": "

\n If the d field of jwk is present and\n usages contains an entry which is not\n \"sign\", or, if the d field of jwk\n is not present and\n usages contains an entry which is not\n \"verify\"\n then throw a\n SyntaxError.\n

" + "html": "

\n If the d field of jwk is present and\n usages contains an entry which is not\n \"sign\", or, if the d field of jwk\n is not present and\n usages contains an entry which is not\n \"verify\"\n then throw a\n SyntaxError.\n

" }, { - "html": "

\n If the kty field of jwk is not a\n case-sensitive string match to \"RSA\",\n then throw a\n DataError.\n

" + "html": "

\n If the kty field of jwk is not a\n case-sensitive string match to \"RSA\",\n then throw a\n DataError.\n

" }, { - "html": "

\n If usages is non-empty and the use field of jwk is present and is\n not a case-sensitive string match to \"sig\",\n then throw a\n DataError.\n

" + "html": "

\n If usages is non-empty and the use field of jwk is present and is\n not a case-sensitive string match to \"sig\",\n then throw a\n DataError.\n

" }, { - "html": "

\n If the key_ops field of jwk is present, and\n is invalid according to the requirements of\n JSON Web Key [JWK] or\n does not contain all of the specified usages values,\n then throw a\n DataError.\n

" + "html": "

\n If the key_ops field of jwk is present, and\n is invalid according to the requirements of\n JSON Web Key [JWK] or\n does not contain all of the specified usages values,\n then throw a\n DataError.\n

" }, { - "html": "

\n If the ext field of jwk is present and\n has the value false and extractable is true,\n then throw a\n DataError.\n

" + "html": "

\n If the ext field of jwk is present and\n has the value false and extractable is true,\n then throw a\n DataError.\n

" }, { "html": "

\n Let hash be a be a string whose initial value is\n undefined.\n

" @@ -1252,7 +1252,7 @@ "html": "

\n Perform any key import steps defined by\n other applicable\n specifications, passing format, jwk\n and obtaining hash.\n

" }, { - "html": "

\n If an error occurred or there are no\n applicable\n specifications,\n throw a\n DataError.\n

" + "html": "

\n If an error occurred or there are no\n applicable\n specifications,\n throw a\n DataError.\n

" } ] } @@ -1268,7 +1268,7 @@ "html": "

\n Let normalizedHash be the result of\n normalize an algorithm\n with alg set to hash and op set\n to digest.\n

" }, { - "html": "

\n If normalizedHash is not equal to the\n hash member of\n normalizedAlgorithm, throw a DataError.\n

" + "html": "

\n If normalizedHash is not equal to the\n hash member of\n normalizedAlgorithm, throw a DataError.\n

" } ] }, @@ -1285,13 +1285,13 @@ "rationale": "if", "steps": [ { - "html": "

\n If jwk does not meet the requirements of\n Section 6.3.2 of JSON Web Algorithms [JWA],\n then throw a\n DataError.\n

" + "html": "

\n If jwk does not meet the requirements of\n Section 6.3.2 of JSON Web Algorithms [JWA],\n then throw a\n DataError.\n

" }, { "html": "

\n Let privateKey represents the\n RSA private key identified by interpreting jwk\n according to Section 6.3.2 of JSON Web\n Algorithms [JWA].\n

" }, { - "html": "

\n If privateKey is not a valid RSA private key\n according to [RFC3447],\n then throw a\n DataError.\n

" + "html": "

\n If privateKey is not a valid RSA private key\n according to [RFC3447],\n then throw a\n DataError.\n

" }, { "html": "

\n Let key be a new CryptoKey object that represents\n privateKey.\n

" @@ -1307,13 +1307,13 @@ "rationale": "if", "steps": [ { - "html": "

\n If jwk does not meet the requirements of Section\n 6.3.1 of JSON Web Algorithms [JWA], then throw a DataError.\n

" + "html": "

\n If jwk does not meet the requirements of Section\n 6.3.1 of JSON Web Algorithms [JWA], then throw a DataError.\n

" }, { "html": "

\n Let publicKey represent the\n RSA public key identified by interpreting jwk\n according to Section 6.3.1 of JSON Web Algorithms [JWA].\n

" }, { - "html": "

\n If publicKey can be determined to not be a valid RSA public key\n according to [RFC3447],\n then throw a\n DataError.\n

" + "html": "

\n If publicKey can be determined to not be a valid RSA public key\n according to [RFC3447],\n then throw a\n DataError.\n

" }, { "html": "

\n Let key be a new CryptoKey representing publicKey.\n

" @@ -1331,7 +1331,7 @@ }, { "case": "Otherwise:", - "html": "throw a\n NotSupportedError." + "html": "throw a\n NotSupportedError." } ] } @@ -1368,10 +1368,10 @@ "html": "

\n Let key be the key to be exported.\n

" }, { - "html": "

\n If the underlying cryptographic key material represented by the [[handle]] internal slot of key\n cannot be accessed, then throw an OperationError.\n

" + "html": "

\n If the underlying cryptographic key material represented by the [[handle]] internal slot of key\n cannot be accessed, then throw an OperationError.\n

" }, { - "html": "
\n
If format is \"spki\"
\n
\n \n
\n
If format is \"pkcs8\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", + "html": "
\n
If format is \"spki\"
\n
\n \n
\n
If format is \"pkcs8\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", "rationale": ".switch", "steps": [ { @@ -1383,13 +1383,13 @@ "rationale": "if", "steps": [ { - "html": "

\n If the [[type]] internal slot\n of key is not \"public\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[type]] internal slot\n of key is not \"public\", then throw an InvalidAccessError.\n

" }, { "html": "

\n Let data be an instance of the subjectPublicKeyInfo\n ASN.1 structure defined in [RFC5280]\n with the following properties:\n

\n " }, { - "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" + "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" } ] }, @@ -1399,13 +1399,13 @@ "rationale": "if", "steps": [ { - "html": "

\n If the [[type]] internal slot\n of key is not \"private\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[type]] internal slot\n of key is not \"private\", then throw an InvalidAccessError.\n

" }, { "html": "

\n Let data be the result of encoding a privateKeyInfo structure\n with the following properties:\n

\n " }, { - "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" + "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" } ] }, @@ -1455,7 +1455,7 @@ "html": "

\n Perform any key export steps defined by\n other applicable\n specifications, passing format, key\n and obtaining alg.\n

" }, { - "html": "

\n If an error occurred or there are no\n applicable\n specifications,\n throw a\n NotSupportedError.\n

" + "html": "

\n If an error occurred or there are no\n applicable\n specifications,\n throw a\n NotSupportedError.\n

" }, { "html": "

\n Set the alg attribute of jwk to alg.\n

" @@ -1506,7 +1506,7 @@ }, { "case": "Otherwise", - "html": "

\n throw a\n NotSupportedError.\n

" + "html": "

\n throw a\n NotSupportedError.\n

" } ] } @@ -1522,19 +1522,19 @@ "rationale": "if", "steps": [ { - "html": "

\n If the [[type]] internal slot of\n key is not \"private\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[type]] internal slot of\n key is not \"private\", then throw an InvalidAccessError.\n

" }, { "html": "

\n Perform the signature generation operation defined in Section 8.1 of [RFC3447] with the key represented by the [[handle]] internal slot of key\n as the signer's private key, K, and the contents of message as\n the message to be signed, M, and using the hash function specified\n by the hash attribute of the\n [[algorithm]] internal slot of\n key as the Hash option, MGF1 (defined in Section B.2.1 of [RFC3447]) as the MGF option and the saltLength member of\n normalizedAlgorithm as the salt length option for the\n EMSA-PSS-ENCODE operation.\n

" }, { - "html": "

\n If performing the operation results in an error,\n then throw an\n OperationError.\n

" + "html": "

\n If performing the operation results in an error,\n then throw an\n OperationError.\n

" }, { "html": "

\n Let signature be the\n signature, S, that results from performing the operation.\n

" }, { - "html": "

\n Return the result of creating\n an ArrayBuffer containing signature.\n

" + "html": "

\n Return the result of creating\n an ArrayBuffer containing signature.\n

" } ] }, @@ -1543,7 +1543,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If the [[type]] internal slot of\n key is not \"public\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[type]] internal slot of\n key is not \"public\", then throw an InvalidAccessError.\n

" }, { "html": "

\n Perform the signature verification operation defined in Section 8.1 of\n [RFC3447] with the key represented by the\n [[handle]] internal slot of\n key as the signer's RSA public key and the contents of message as\n M and the contents of\n signature as S and using the hash function specified\n by the hash attribute of the\n [[algorithm]] internal slot of\n key as the Hash option, MGF1 (defined in Section B.2.1 of [RFC3447]) as the MGF option and the saltLength member of\n normalizedAlgorithm as the salt length option for the\n EMSA-PSS-VERIFY operation.\n

" @@ -1558,13 +1558,13 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains an entry which is not\n \"sign\" or \"verify\",\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains an entry which is not\n \"sign\" or \"verify\",\n then throw a\n SyntaxError.\n

" }, { "html": "

\n Generate an RSA key pair, as defined in [RFC3447], with RSA modulus length equal to the\n modulusLength member of\n normalizedAlgorithm and RSA public exponent equal to the\n publicExponent member of\n normalizedAlgorithm.\n

" }, { - "html": "

\n If performing the operation results in an error,\n then throw an\n OperationError.\n

" + "html": "

\n If performing the operation results in an error,\n then throw an\n OperationError.\n

" }, { "html": "

\n Let algorithm be a new\n RsaHashedKeyAlgorithm\n dictionary.\n

" @@ -1633,7 +1633,7 @@ "html": "

Let keyData be the key data to be imported.

" }, { - "html": "
\n
If format is \"spki\":
\n
\n \n
\n
If format is \"pkcs8\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n throw a\n NotSupportedError.\n
\n
", + "html": "
\n
If format is \"spki\":
\n
\n \n
\n
If format is \"pkcs8\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n throw a\n NotSupportedError.\n
\n
", "rationale": ".switch", "steps": [ { @@ -1645,22 +1645,22 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains an entry which is not\n \"verify\"\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains an entry which is not\n \"verify\"\n then throw a\n SyntaxError.\n

" }, { "html": "

\n Let spki be the result of running the\n parse a subjectPublicKeyInfo\n algorithm over keyData.\n

" }, { - "html": "

\n If an error occurred while parsing,\n then throw a\n DataError.\n

" + "html": "

\n If an error occurred while parsing,\n then throw a\n DataError.\n

" }, { - "html": "

\n If the algorithm object identifier field of the\n algorithm AlgorithmIdentifier field of spki is\n not equal to the rsaEncryption\n object identifier defined in [RFC3447],\n then throw a\n DataError.\n

" + "html": "

\n If the algorithm object identifier field of the\n algorithm AlgorithmIdentifier field of spki is\n not equal to the rsaEncryption\n object identifier defined in [RFC3447],\n then throw a\n DataError.\n

" }, { "html": "

\n Let publicKey be the result of performing the parse an ASN.1 structure\n algorithm, with data as the\n subjectPublicKeyInfo field of spki,\n structure as the RSAPublicKey structure\n specified in Section A.1.1 of [RFC3447], and\n exactData set to true.\n

" }, { - "html": "

\n If an error occurred while parsing, or it can be determined that publicKey\n is not a valid public key according to [RFC3447],\n then throw a\n DataError.\n

" + "html": "

\n If an error occurred while parsing, or it can be determined that publicKey\n is not a valid public key according to [RFC3447],\n then throw a\n DataError.\n

" }, { "html": "

\n Let key be a new CryptoKey\n that represents the RSA public key identified by\n publicKey.\n

" @@ -1676,22 +1676,22 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains an entry which is not\n \"sign\"\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains an entry which is not\n \"sign\"\n then throw a\n SyntaxError.\n

" }, { "html": "

\n Let privateKeyInfo be the result of running the\n parse a privateKeyInfo\n algorithm over keyData.\n

" }, { - "html": "

\n If an error occurred while parsing, then throw a DataError.\n

" + "html": "

\n If an error occurred while parsing, then throw a DataError.\n

" }, { - "html": "

\n If the algorithm object identifier field of the\n privateKeyAlgorithm PrivateKeyAlgorithm field of\n privateKeyInfo is not equal to the\n rsaEncryption object identifier defined in [RFC3447],\n then throw a\n DataError.\n

" + "html": "

\n If the algorithm object identifier field of the\n privateKeyAlgorithm PrivateKeyAlgorithm field of\n privateKeyInfo is not equal to the\n rsaEncryption object identifier defined in [RFC3447],\n then throw a\n DataError.\n

" }, { "html": "

\n Let rsaPrivateKey be the result of performing the parse an ASN.1 structure\n algorithm, with data as the\n privateKey field of privateKeyInfo,\n structure as the RSAPrivateKey structure\n specified in Section A.1.2 of [RFC3447], and\n exactData set to true.\n

" }, { - "html": "

\n If an error occurred while parsing, or if rsaPrivateKey is not\n a valid RSA private key according to [RFC3447],\n then throw a\n DataError.\n

" + "html": "

\n If an error occurred while parsing, or if rsaPrivateKey is not\n a valid RSA private key according to [RFC3447],\n then throw a\n DataError.\n

" }, { "html": "

\n Let key be a new CryptoKey\n that represents the RSA private key identified by\n rsaPrivateKey.\n

" @@ -1707,7 +1707,7 @@ "rationale": "if", "steps": [ { - "html": "
\n
If keyData is a JsonWebKey dictionary:
\n

Let jwk equal keyData.

\n
Otherwise:
\n

throw a DataError.

\n
", + "html": "
\n
If keyData is a JsonWebKey dictionary:
\n

Let jwk equal keyData.

\n
Otherwise:
\n

throw a DataError.

\n
", "rationale": ".switch", "steps": [ { @@ -1719,26 +1719,26 @@ }, { "case": "Otherwise:", - "html": "

throw a DataError.

" + "html": "

throw a DataError.

" } ] } ] }, { - "html": "

\n If the d field of jwk is present and\n usages contains an entry which is not\n \"sign\", or, if the d field of jwk\n is not present and\n usages contains an entry which is not\n \"verify\"\n then throw a\n SyntaxError.\n

" + "html": "

\n If the d field of jwk is present and\n usages contains an entry which is not\n \"sign\", or, if the d field of jwk\n is not present and\n usages contains an entry which is not\n \"verify\"\n then throw a\n SyntaxError.\n

" }, { - "html": "

\n If the kty field of jwk is not a\n case-sensitive string match to \"RSA\",\n then throw a\n DataError.\n

" + "html": "

\n If the kty field of jwk is not a\n case-sensitive string match to \"RSA\",\n then throw a\n DataError.\n

" }, { - "html": "

\n If usages is non-empty and the use field of jwk is present and is\n not a case-sensitive string match to \"sig\",\n then throw a\n DataError.\n

" + "html": "

\n If usages is non-empty and the use field of jwk is present and is\n not a case-sensitive string match to \"sig\",\n then throw a\n DataError.\n

" }, { - "html": "

\n If the key_ops field of jwk is present, and\n is invalid according to the requirements of\n JSON Web Key [JWK] or\n does not contain all of the specified usages values,\n then throw a\n DataError.\n

" + "html": "

\n If the key_ops field of jwk is present, and\n is invalid according to the requirements of\n JSON Web Key [JWK] or\n does not contain all of the specified usages values,\n then throw a\n DataError.\n

" }, { - "html": "

\n If the ext field of jwk is present and\n has the value false and extractable is true,\n then throw a\n DataError.\n

" + "html": "

\n If the ext field of jwk is present and\n has the value false and extractable is true,\n then throw a\n DataError.\n

" }, { "html": "
\n
\n If the alg field of jwk is not\n present:\n
\n
\n

\n Let hash be undefined.\n

\n
\n
\n If the alg field is equal to the string\n \"PS1\":\n
\n
\n

\n Let hash be the string \"SHA-1\".\n

\n
\n
\n If the alg field is equal to the string\n \"PS256\":\n
\n
\n

\n Let hash be the string \"SHA-256\".\n

\n
\n
\n If the alg field is equal to the string\n \"PS384\":\n
\n
\n

\n Let hash be the string \"SHA-384\".\n

\n
\n
\n If the alg field is equal to the string\n \"PS512\":\n
\n
\n

\n Let hash be the string \"SHA-512\".\n

\n
\n
Otherwise:
\n
\n \n
\n
", @@ -1776,7 +1776,7 @@ "html": "

\n Perform any key import steps defined by\n other applicable\n specifications, passing format, jwk\n and obtaining hash.\n

" }, { - "html": "

\n If an error occurred or there are no\n applicable\n specifications,\n throw a\n DataError.\n

" + "html": "

\n If an error occurred or there are no\n applicable\n specifications,\n throw a\n DataError.\n

" } ] } @@ -1792,7 +1792,7 @@ "html": "

\n Let normalizedHash be the result of\n normalize an algorithm\n with alg set to hash and op set\n to digest.\n

" }, { - "html": "

\n If normalizedHash is not equal to the\n hash member of\n normalizedAlgorithm, throw a DataError.\n

" + "html": "

\n If normalizedHash is not equal to the\n hash member of\n normalizedAlgorithm, throw a DataError.\n

" } ] }, @@ -1809,13 +1809,13 @@ "rationale": "if", "steps": [ { - "html": "

\n If jwk does not meet the requirements of\n Section 6.3.2 of JSON Web Algorithms [JWA],\n then throw a\n DataError.\n

" + "html": "

\n If jwk does not meet the requirements of\n Section 6.3.2 of JSON Web Algorithms [JWA],\n then throw a\n DataError.\n

" }, { "html": "

\n Let privateKey represent the\n RSA public key identified by interpreting jwk\n according to Section 6.3.1 of JSON Web\n Algorithms [JWA].\n

" }, { - "html": "

\n If privateKey can be determined to not be a valid RSA public key\n according to [RFC3447],\n then throw a\n DataError.\n

" + "html": "

\n If privateKey can be determined to not be a valid RSA public key\n according to [RFC3447],\n then throw a\n DataError.\n

" }, { "html": "

\n Let key be a new CryptoKey representing privateKey.\n

" @@ -1831,13 +1831,13 @@ "rationale": "if", "steps": [ { - "html": "

\n If jwk does not meet the requirements of Section\n 6.3.1 of JSON Web Algorithms [JWA], then throw a DataError.\n

" + "html": "

\n If jwk does not meet the requirements of Section\n 6.3.1 of JSON Web Algorithms [JWA], then throw a DataError.\n

" }, { "html": "

\n Let publicKey represent the\n RSA public key identified by interpreting jwk\n according to Section 6.3.1 of JSON Web Algorithms [JWA].\n

" }, { - "html": "

\n If publicKey can be determined to not be a valid RSA public key\n according to [RFC3447],\n then throw a\n DataError.\n

" + "html": "

\n If publicKey can be determined to not be a valid RSA public key\n according to [RFC3447],\n then throw a\n DataError.\n

" }, { "html": "

\n Let key be a new CryptoKey representing publicKey.\n

" @@ -1855,7 +1855,7 @@ }, { "case": "Otherwise:", - "html": "throw a\n NotSupportedError." + "html": "throw a\n NotSupportedError." } ] } @@ -1892,10 +1892,10 @@ "html": "

\n Let key be the key to be exported.\n

" }, { - "html": "

\n If the underlying cryptographic key material represented by the [[handle]] internal slot of key\n cannot be accessed, then throw an OperationError.\n

" + "html": "

\n If the underlying cryptographic key material represented by the [[handle]] internal slot of key\n cannot be accessed, then throw an OperationError.\n

" }, { - "html": "
\n
If format is \"spki\"
\n
\n \n
\n
If format is \"pkcs8\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", + "html": "
\n
If format is \"spki\"
\n
\n \n
\n
If format is \"pkcs8\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", "rationale": ".switch", "steps": [ { @@ -1907,13 +1907,13 @@ "rationale": "if", "steps": [ { - "html": "

\n If the [[type]] internal slot\n of key is not \"public\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[type]] internal slot\n of key is not \"public\", then throw an InvalidAccessError.\n

" }, { "html": "

\n Let data be an instance of the subjectPublicKeyInfo\n ASN.1 structure defined in [RFC5280]\n with the following properties:\n

\n " }, { - "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" + "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" } ] }, @@ -1923,13 +1923,13 @@ "rationale": "if", "steps": [ { - "html": "

\n If the [[type]] internal slot\n of key is not \"private\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[type]] internal slot\n of key is not \"private\", then throw an InvalidAccessError.\n

" }, { "html": "

\n Let data be the result of encoding a privateKeyInfo structure\n with the following properties:\n

\n " }, { - "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" + "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" } ] }, @@ -2027,7 +2027,7 @@ }, { "case": "Otherwise", - "html": "

\n throw a\n NotSupportedError.\n

" + "html": "

\n throw a\n NotSupportedError.\n

" } ] } @@ -2043,7 +2043,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If the [[type]] internal slot of key\n is not \"public\",\n then throw an\n InvalidAccessError.\n

" + "html": "

\n If the [[type]] internal slot of key\n is not \"public\",\n then throw an\n InvalidAccessError.\n

" }, { "html": "

\n Let label be the contents of the label member of\n normalizedAlgorithm or the empty octet string if the\n label member of\n normalizedAlgorithm is not present.\n

" @@ -2052,13 +2052,13 @@ "html": "

\n Perform the encryption operation defined in Section 7.1 of [RFC3447] with the key represented by key\n as the recipient's RSA public key, the contents of plaintext\n as the message to be encrypted, M and label\n as the label, L, and with the hash\n function specified by the hash\n attribute of the [[algorithm]] internal slot of\n key as the Hash option and MGF1 (defined in Section B.2.1 of\n [RFC3447]) as the MGF option.\n

" }, { - "html": "

\n If performing the operation results in an error,\n then throw an\n OperationError.\n

" + "html": "

\n If performing the operation results in an error,\n then throw an\n OperationError.\n

" }, { "html": "

\n Let ciphertext be the value C that results from performing the\n operation.\n

" }, { - "html": "

\n Return the result of creating\n an ArrayBuffer containing ciphertext.\n

" + "html": "

\n Return the result of creating\n an ArrayBuffer containing ciphertext.\n

" } ] }, @@ -2067,7 +2067,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If the [[type]] internal slot of key\n is not \"private\",\n then throw an\n InvalidAccessError.\n

" + "html": "

\n If the [[type]] internal slot of key\n is not \"private\",\n then throw an\n InvalidAccessError.\n

" }, { "html": "

\n Let label be the contents of the label member of\n normalizedAlgorithm or the empty octet string if the\n label member of\n normalizedAlgorithm is not present.\n

" @@ -2076,13 +2076,13 @@ "html": "

\n Perform the decryption operation defined in Section 7.1 of [RFC3447] with the key represented by key\n as the recipient's RSA private key, the contents of ciphertext\n as the ciphertext to be decrypted, C, and label\n as the label, L, and with the hash\n function specified by the hash\n attribute of the [[algorithm]] internal slot of\n key as the Hash option and MGF1 (defined in Section B.2.1 of\n [RFC3447]) as the MGF option.\n

" }, { - "html": "

\n If performing the operation results in an error,\n then throw an\n OperationError.\n

" + "html": "

\n If performing the operation results in an error,\n then throw an\n OperationError.\n

" }, { "html": "

\n Let plaintext the value M that results from performing the\n operation.\n

" }, { - "html": "

\n Return the result of creating\n an ArrayBuffer containing plaintext.\n

" + "html": "

\n Return the result of creating\n an ArrayBuffer containing plaintext.\n

" } ] }, @@ -2091,13 +2091,13 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains an entry which is not\n \"encrypt\", \"decrypt\",\n \"wrapKey\" or \"unwrapKey\",\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains an entry which is not\n \"encrypt\", \"decrypt\",\n \"wrapKey\" or \"unwrapKey\",\n then throw a\n SyntaxError.\n

" }, { "html": "

\n Generate an RSA key pair, as defined in [RFC3447], with RSA modulus length equal to the\n modulusLength member of\n normalizedAlgorithm and RSA public exponent equal to the\n publicExponent member of\n normalizedAlgorithm.\n

" }, { - "html": "

\n If performing the operation results in an error,\n then throw an\n OperationError.\n

" + "html": "

\n If performing the operation results in an error,\n then throw an\n OperationError.\n

" }, { "html": "

\n Let algorithm be a new\n RsaHashedKeyAlgorithm\n object.\n

" @@ -2166,7 +2166,7 @@ "html": "

Let keyData be the key data to be imported.

" }, { - "html": "
\n
If format is \"spki\":
\n
\n \n
\n
If format is \"pkcs8\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n throw a\n NotSupportedError.\n
\n
", + "html": "
\n
If format is \"spki\":
\n
\n \n
\n
If format is \"pkcs8\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n throw a\n NotSupportedError.\n
\n
", "rationale": ".switch", "steps": [ { @@ -2178,22 +2178,22 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains an entry which is not\n \"encrypt\" or\n \"wrapKey\",\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains an entry which is not\n \"encrypt\" or\n \"wrapKey\",\n then throw a\n SyntaxError.\n

" }, { "html": "

\n Let spki be the result of running the\n parse a subjectPublicKeyInfo\n algorithm over keyData.\n

" }, { - "html": "

\n If an error occurred while parsing,\n then throw a\n DataError.\n

" + "html": "

\n If an error occurred while parsing,\n then throw a\n DataError.\n

" }, { - "html": "

\n If the algorithm object identifier field of the\n algorithm AlgorithmIdentifier field of spki is\n not equal to the rsaEncryption\n object identifier defined in [RFC3447],\n then throw a\n DataError.\n

" + "html": "

\n If the algorithm object identifier field of the\n algorithm AlgorithmIdentifier field of spki is\n not equal to the rsaEncryption\n object identifier defined in [RFC3447],\n then throw a\n DataError.\n

" }, { "html": "

\n Let publicKey be the result of performing the parse an ASN.1 structure\n algorithm, with data as the\n subjectPublicKeyInfo field of spki,\n structure as the RSAPublicKey structure\n specified in Section A.1.1 of [RFC3447], and\n exactData set to true.\n

" }, { - "html": "

\n If an error occurred while parsing, or it can be determined that publicKey\n is not a valid public key according to [RFC3447],\n then throw a\n DataError.\n

" + "html": "

\n If an error occurred while parsing, or it can be determined that publicKey\n is not a valid public key according to [RFC3447],\n then throw a\n DataError.\n

" }, { "html": "

\n Let key be a new CryptoKey\n that represents the RSA public key identified by\n publicKey.\n

" @@ -2209,22 +2209,22 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains an entry which is not\n \"decrypt\" or \"unwrapKey\",\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains an entry which is not\n \"decrypt\" or \"unwrapKey\",\n then throw a\n SyntaxError.\n

" }, { "html": "

\n Let privateKeyInfo be the result of running the\n parse a privateKeyInfo\n algorithm over keyData.\n

" }, { - "html": "

\n If an error occurred while parsing, then throw a DataError.\n

" + "html": "

\n If an error occurred while parsing, then throw a DataError.\n

" }, { - "html": "

\n If the algorithm object identifier field of the\n privateKeyAlgorithm PrivateKeyAlgorithm field of\n privateKeyInfo is not equal to the\n rsaEncryption object identifier defined in [RFC3447],\n then throw a\n DataError.\n

" + "html": "

\n If the algorithm object identifier field of the\n privateKeyAlgorithm PrivateKeyAlgorithm field of\n privateKeyInfo is not equal to the\n rsaEncryption object identifier defined in [RFC3447],\n then throw a\n DataError.\n

" }, { "html": "

\n Let rsaPrivateKey be the result of performing the parse an ASN.1 structure\n algorithm, with data as the\n privateKey field of privateKeyInfo,\n structure as the RSAPrivateKey structure\n specified in Section A.1.2 of [RFC3447], and\n exactData set to true.\n

" }, { - "html": "

\n If an error occurred while parsing, or if rsaPrivateKey is not\n a valid RSA private key according to [RFC3447],\n then throw a\n DataError.\n

" + "html": "

\n If an error occurred while parsing, or if rsaPrivateKey is not\n a valid RSA private key according to [RFC3447],\n then throw a\n DataError.\n

" }, { "html": "

\n Let key be a new CryptoKey\n that represents the RSA private key identified by\n rsaPrivateKey.\n

" @@ -2240,7 +2240,7 @@ "rationale": "if", "steps": [ { - "html": "
\n
If keyData is a JsonWebKey dictionary:
\n

Let jwk equal keyData.

\n
Otherwise:
\n

Throw a DataError.

\n
", + "html": "
\n
If keyData is a JsonWebKey dictionary:
\n

Let jwk equal keyData.

\n
Otherwise:
\n

Throw a DataError.

\n
", "rationale": ".switch", "steps": [ { @@ -2252,29 +2252,29 @@ }, { "case": "Otherwise:", - "html": "

Throw a DataError.

" + "html": "

Throw a DataError.

" } ] } ] }, { - "html": "

\n If the d field of jwk is present and\n usages contains an entry which is not\n \"decrypt\" or \"unwrapKey\",\n then throw a\n SyntaxError.\n

" + "html": "

\n If the d field of jwk is present and\n usages contains an entry which is not\n \"decrypt\" or \"unwrapKey\",\n then throw a\n SyntaxError.\n

" }, { - "html": "

\n If the d field of jwk is not present and\n usages contains an entry which is not\n \"encrypt\" or \"wrapKey\",\n then throw a\n SyntaxError.\n

" + "html": "

\n If the d field of jwk is not present and\n usages contains an entry which is not\n \"encrypt\" or \"wrapKey\",\n then throw a\n SyntaxError.\n

" }, { - "html": "

\n If the kty field of jwk is not a\n case-sensitive string match to \"RSA\",\n then throw a\n DataError.\n

" + "html": "

\n If the kty field of jwk is not a\n case-sensitive string match to \"RSA\",\n then throw a\n DataError.\n

" }, { - "html": "

\n If usages is non-empty and the use field of jwk is present and is\n not a case-sensitive string match to \"enc\",\n then throw a\n DataError.\n

" + "html": "

\n If usages is non-empty and the use field of jwk is present and is\n not a case-sensitive string match to \"enc\",\n then throw a\n DataError.\n

" }, { - "html": "

\n If the key_ops field of jwk is present, and\n is invalid according to the requirements of\n JSON Web Key [JWK] or\n does not contain all of the specified usages values,\n then throw a\n DataError.\n

" + "html": "

\n If the key_ops field of jwk is present, and\n is invalid according to the requirements of\n JSON Web Key [JWK] or\n does not contain all of the specified usages values,\n then throw a\n DataError.\n

" }, { - "html": "

\n If the ext field of jwk is present and\n has the value false and extractable is true,\n then throw a\n DataError.\n

" + "html": "

\n If the ext field of jwk is present and\n has the value false and extractable is true,\n then throw a\n DataError.\n

" }, { "html": "
\n
If the alg field of jwk is not present:
\n
Let hash be undefined.
\n
\n If the alg field of jwk is equal to\n \"RSA-OAEP\":\n
\n
Let hash be the string \"SHA-1\".
\n
\n If the alg field of jwk is equal to\n \"RSA-OAEP-256\":\n
\n
Let hash be the string \"SHA-256\".
\n
\n If the alg field of jwk is equal to\n \"RSA-OAEP-384\":\n
\n
Let hash be the string \"SHA-384\".
\n
\n If the alg field of jwk is equal to\n \"RSA-OAEP-512\":\n
\n
Let hash be the string \"SHA-512\".
\n
Otherwise:
\n
\n \n
\n
", @@ -2312,7 +2312,7 @@ "html": "

\n Perform any key import steps defined by\n other applicable\n specifications, passing format, jwk\n and obtaining hash.\n

" }, { - "html": "

\n If an error occurred or there are no\n applicable\n specifications,\n throw a\n DataError.\n

" + "html": "

\n If an error occurred or there are no\n applicable\n specifications,\n throw a\n DataError.\n

" } ] } @@ -2328,7 +2328,7 @@ "html": "

\n Let normalizedHash be the result of\n normalize an algorithm\n with alg set to hash and op set\n to digest.\n

" }, { - "html": "

\n If normalizedHash is not equal to the\n hash member of\n normalizedAlgorithm, throw a DataError.\n

" + "html": "

\n If normalizedHash is not equal to the\n hash member of\n normalizedAlgorithm, throw a DataError.\n

" } ] }, @@ -2345,13 +2345,13 @@ "rationale": "if", "steps": [ { - "html": "

\n If jwk does not meet the requirements of Section\n 6.3.2 of JSON Web Algorithms [JWA], then throw a DataError.\n

" + "html": "

\n If jwk does not meet the requirements of Section\n 6.3.2 of JSON Web Algorithms [JWA], then throw a DataError.\n

" }, { "html": "

\n Let privateKey represent the\n RSA public key identified by interpreting jwk\n according to Section 6.3.1 of JSON Web Algorithms [JWA].\n

" }, { - "html": "

\n If privateKey can be determined to not be a valid RSA public key\n according to [RFC3447],\n then throw a\n DataError.\n

" + "html": "

\n If privateKey can be determined to not be a valid RSA public key\n according to [RFC3447],\n then throw a\n DataError.\n

" }, { "html": "

\n Let key be a new CryptoKey representing privateKey.\n

" @@ -2367,13 +2367,13 @@ "rationale": "if", "steps": [ { - "html": "

\n If jwk does not meet the requirements of Section\n 6.3.1 of JSON Web Algorithms [JWA], then throw a DataError.\n

" + "html": "

\n If jwk does not meet the requirements of Section\n 6.3.1 of JSON Web Algorithms [JWA], then throw a DataError.\n

" }, { "html": "

\n Let publicKey represent the\n RSA public key identified by interpreting jwk\n according to Section 6.3.1 of JSON Web Algorithms [JWA].\n

" }, { - "html": "

\n If publicKey can be determined to not be a valid RSA public key\n according to [RFC3447],\n then throw a\n DataError.\n

" + "html": "

\n If publicKey can be determined to not be a valid RSA public key\n according to [RFC3447],\n then throw a\n DataError.\n

" }, { "html": "

\n Let key be a new CryptoKey representing publicKey.\n

" @@ -2391,7 +2391,7 @@ }, { "case": "Otherwise:", - "html": "throw a\n NotSupportedError." + "html": "throw a\n NotSupportedError." } ] } @@ -2428,10 +2428,10 @@ "html": "

\n Let key be the key to be exported.\n

" }, { - "html": "

\n If the underlying cryptographic key material represented by the [[handle]] internal slot of key\n cannot be accessed, then throw an OperationError.\n

" + "html": "

\n If the underlying cryptographic key material represented by the [[handle]] internal slot of key\n cannot be accessed, then throw an OperationError.\n

" }, { - "html": "
\n
If format is \"spki\"
\n
\n \n
\n
If format is \"pkcs8\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", + "html": "
\n
If format is \"spki\"
\n
\n \n
\n
If format is \"pkcs8\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", "rationale": ".switch", "steps": [ { @@ -2443,13 +2443,13 @@ "rationale": "if", "steps": [ { - "html": "

\n If the [[type]] internal slot of\n key is not \"public\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[type]] internal slot of\n key is not \"public\", then throw an InvalidAccessError.\n

" }, { "html": "

\n Let data be an instance of the subjectPublicKeyInfo\n ASN.1 structure defined in [RFC5280]\n with the following properties:\n

\n " }, { - "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" + "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" } ] }, @@ -2459,13 +2459,13 @@ "rationale": "if", "steps": [ { - "html": "

\n If the [[type]] internal slot of\n key is not \"private\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[type]] internal slot of\n key is not \"private\", then throw an InvalidAccessError.\n

" }, { "html": "

\n Let data be the result of encoding a privateKeyInfo structure\n with the following properties:\n

\n " }, { - "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" + "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" } ] }, @@ -2563,7 +2563,7 @@ }, { "case": "Otherwise", - "html": "

\n throw a\n NotSupportedError.\n

" + "html": "

\n throw a\n NotSupportedError.\n

" } ] } @@ -2579,7 +2579,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If the [[type]] internal slot of\n key is not \"private\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[type]] internal slot of\n key is not \"private\", then throw an InvalidAccessError.\n

" }, { "html": "

\n Let hashAlgorithm be the hash\n member of normalizedAlgorithm.\n

" @@ -2612,7 +2612,7 @@ "html": "

\n Let r and s be the pair of integers resulting from\n performing the ECDSA signing process.\n

" }, { - "html": "

\n Let result be an empty byte sequence.\n

" + "html": "

\n Let result be an empty byte sequence.\n

" }, { "html": "

\n Let n be the smallest integer such that n * 8 is greater than\n the logarithm to base 2 of the order of the base point of the elliptic curve identified\n by params.\n

" @@ -2634,7 +2634,7 @@ ] }, { - "html": "

\n Return the result of creating\n an ArrayBuffer containing result.\n

" + "html": "

\n Return the result of creating\n an ArrayBuffer containing result.\n

" } ] }, @@ -2643,7 +2643,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If the [[type]] internal slot of\n key is not \"public\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[type]] internal slot of\n key is not \"public\", then throw an InvalidAccessError.\n

" }, { "html": "

\n Let hashAlgorithm be the hash\n member of\n normalizedAlgorithm.\n

" @@ -2689,10 +2689,10 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains a value which is not\n one of \"sign\" or \"verify\",\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains a value which is not\n one of \"sign\" or \"verify\",\n then throw a\n SyntaxError.\n

" }, { - "html": "
\n
\n If the namedCurve member of\n normalizedAlgorithm is \"P-256\", \"P-384\"\n or \"P-521\":\n
\n
\n

\n Generate an Elliptic Curve key pair, as defined in [RFC6090]\n with domain parameters for the curve identified by\n the namedCurve member of\n normalizedAlgorithm.\n

\n
\n
\n If the namedCurve member of\n normalizedAlgorithm is a value specified in an\n applicable specification:\n
\n
\n

\n Perform the ECDSA generation steps specified in that specification, passing in\n normalizedAlgorithm and resulting in an elliptic curve key pair.\n

\n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError\n

\n
\n
", + "html": "
\n
\n If the namedCurve member of\n normalizedAlgorithm is \"P-256\", \"P-384\"\n or \"P-521\":\n
\n
\n

\n Generate an Elliptic Curve key pair, as defined in [RFC6090]\n with domain parameters for the curve identified by\n the namedCurve member of\n normalizedAlgorithm.\n

\n
\n
\n If the namedCurve member of\n normalizedAlgorithm is a value specified in an\n applicable specification:\n
\n
\n

\n Perform the ECDSA generation steps specified in that specification, passing in\n normalizedAlgorithm and resulting in an elliptic curve key pair.\n

\n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError\n

\n
\n
", "rationale": ".switch", "steps": [ { @@ -2708,14 +2708,14 @@ }, { "case": "Otherwise:", - "html": "

\n throw a\n NotSupportedError\n

" + "html": "

\n throw a\n NotSupportedError\n

" } ] } ] }, { - "html": "

\n If performing the key generation operation results in an error,\n then throw an\n OperationError.\n

" + "html": "

\n If performing the key generation operation results in an error,\n then throw an\n OperationError.\n

" }, { "html": "

\n Let algorithm be a new\n EcKeyAlgorithm\n object.\n

" @@ -2778,7 +2778,7 @@ "html": "

Let keyData be the key data to be imported.

" }, { - "html": "
\n
If format is \"spki\":
\n
\n \n
\n
If format is \"pkcs8\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
If format is \"raw\":
\n
\n \n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", + "html": "
\n
If format is \"spki\":
\n
\n \n
\n
If format is \"pkcs8\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
If format is \"raw\":
\n
\n \n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", "rationale": ".switch", "steps": [ { @@ -2790,25 +2790,25 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains a value which is not\n \"verify\"\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains a value which is not\n \"verify\"\n then throw a\n SyntaxError.\n

" }, { "html": "

\n Let spki be the result of running the\n parse a subjectPublicKeyInfo\n algorithm over keyData\n

" }, { - "html": "

\n If an error occurred while parsing,\n then throw a\n DataError.\n

" + "html": "

\n If an error occurred while parsing,\n then throw a\n DataError.\n

" }, { - "html": "

\n If the algorithm object identifier field of the\n algorithm AlgorithmIdentifier field of spki is\n not equal to the id-ecPublicKey\n object identifier defined in [RFC5480],\n then throw a\n DataError.\n

" + "html": "

\n If the algorithm object identifier field of the\n algorithm AlgorithmIdentifier field of spki is\n not equal to the id-ecPublicKey\n object identifier defined in [RFC5480],\n then throw a\n DataError.\n

" }, { - "html": "

\n If the parameters field of the algorithm\n AlgorithmIdentifier field of spki is absent,\n then throw a\n DataError.\n

" + "html": "

\n If the parameters field of the algorithm\n AlgorithmIdentifier field of spki is absent,\n then throw a\n DataError.\n

" }, { "html": "

\n Let params be the parameters field of the\n algorithm AlgorithmIdentifier field of spki.\n

" }, { - "html": "

\n If params is not an instance of the\n ECParameters ASN.1 type defined in\n [RFC5480] that specifies a\n namedCurve, then throw a DataError.\n

" + "html": "

\n If params is not an instance of the\n ECParameters ASN.1 type defined in\n [RFC5480] that specifies a\n namedCurve, then throw a DataError.\n

" }, { "html": "

\n Let namedCurve be a string whose initial value is\n undefined.\n

" @@ -2852,10 +2852,10 @@ "html": "

\n Let publicKey be the Elliptic Curve public key identified by\n performing the conversion steps defined in Section 2.3.4 of [SEC1] using the subjectPublicKey\n field of spki.\n

\n

\n The uncompressed point format MUST be supported.\n

" }, { - "html": "

\n If the implementation does not support the compressed point format and\n a compressed point is provided,\n throw a\n DataError.\n

" + "html": "

\n If the implementation does not support the compressed point format and\n a compressed point is provided,\n throw a\n DataError.\n

" }, { - "html": "

\n If a decode error occurs or an identity point is found,\n throw a\n DataError.\n

" + "html": "

\n If a decode error occurs or an identity point is found,\n throw a\n DataError.\n

" }, { "html": "

\n Let key be a new CryptoKey\n that represents publicKey.\n

" @@ -2871,7 +2871,7 @@ "html": "

\n Perform any key import steps defined by\n other applicable\n specifications, passing format, spki\n and obtaining namedCurve and key.\n

" }, { - "html": "

\n If an error occurred or there are no\n applicable\n specifications,\n throw a\n DataError.\n

" + "html": "

\n If an error occurred or there are no\n applicable\n specifications,\n throw a\n DataError.\n

" } ] } @@ -2880,10 +2880,10 @@ ] }, { - "html": "

\n If namedCurve is defined, and not equal to the namedCurve member of\n normalizedAlgorithm, throw a DataError.\n

" + "html": "

\n If namedCurve is defined, and not equal to the namedCurve member of\n normalizedAlgorithm, throw a DataError.\n

" }, { - "html": "

\n If the public key value is not a valid point on the Elliptic Curve\n identified by the namedCurve member of\n normalizedAlgorithm throw a DataError.\n

" + "html": "

\n If the public key value is not a valid point on the Elliptic Curve\n identified by the namedCurve member of\n normalizedAlgorithm throw a DataError.\n

" }, { "html": "

\n Set the [[type]] internal slot\n of key to \"public\"\n

" @@ -2908,25 +2908,25 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains a value which is not\n \"sign\"\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains a value which is not\n \"sign\"\n then throw a\n SyntaxError.\n

" }, { "html": "

\n Let privateKeyInfo be the result of running the\n parse a privateKeyInfo\n algorithm over keyData.\n

" }, { - "html": "

\n If an error occurs while parsing,\n then throw a\n DataError.\n

" + "html": "

\n If an error occurs while parsing,\n then throw a\n DataError.\n

" }, { - "html": "

\n If the algorithm object identifier field of the\n privateKeyAlgorithm PrivateKeyAlgorithm field of\n privateKeyInfo is not equal to the\n id-ecPublicKey object identifier defined in [RFC5480],\n then throw a\n DataError.\n

" + "html": "

\n If the algorithm object identifier field of the\n privateKeyAlgorithm PrivateKeyAlgorithm field of\n privateKeyInfo is not equal to the\n id-ecPublicKey object identifier defined in [RFC5480],\n then throw a\n DataError.\n

" }, { - "html": "

\n If the parameters field of the\n privateKeyAlgorithm PrivateKeyAlgorithmIdentifier field\n of privateKeyInfo is not present,\n then throw a\n DataError.\n

" + "html": "

\n If the parameters field of the\n privateKeyAlgorithm PrivateKeyAlgorithmIdentifier field\n of privateKeyInfo is not present,\n then throw a\n DataError.\n

" }, { "html": "

\n Let params be the parameters field of the\n privateKeyAlgorithm PrivateKeyAlgorithmIdentifier field\n of privateKeyInfo.\n

" }, { - "html": "

\n If params is not an instance of the\n ECParameters ASN.1 type defined in\n [RFC5480] that specifies a\n namedCurve, then throw a DataError.\n

" + "html": "

\n If params is not an instance of the\n ECParameters ASN.1 type defined in\n [RFC5480] that specifies a\n namedCurve, then throw a DataError.\n

" }, { "html": "

\n Let namedCurve be a string whose initial value is\n undefined.\n

" @@ -2970,10 +2970,10 @@ "html": "

\n Let ecPrivateKey be the result of performing the parse an ASN.1 structure\n algorithm, with data as the privateKey field\n of privateKeyInfo, structure as the ASN.1\n ECPrivateKey structure specified in Section 3 of [RFC5915], and exactData set to true.\n

" }, { - "html": "

\n If an error occurred while parsing,\n then throw a\n DataError.\n

" + "html": "

\n If an error occurred while parsing,\n then throw a\n DataError.\n

" }, { - "html": "

\n If the parameters field of ecPrivateKey is\n present, and is not an instance of the namedCurve ASN.1\n type defined in [RFC5480], or does not contain\n the same object identifier as the parameters field of the\n privateKeyAlgorithm PrivateKeyAlgorithmIdentifier field\n of privateKeyInfo,\n then throw a\n DataError.\n

" + "html": "

\n If the parameters field of ecPrivateKey is\n present, and is not an instance of the namedCurve ASN.1\n type defined in [RFC5480], or does not contain\n the same object identifier as the parameters field of the\n privateKeyAlgorithm PrivateKeyAlgorithmIdentifier field\n of privateKeyInfo,\n then throw a\n DataError.\n

" }, { "html": "

\n Let key be a new CryptoKey\n that represents the Elliptic Curve private key identified by\n performing the conversion steps defined in Section 3 of [RFC5915] using ecPrivateKey.\n

" @@ -2989,7 +2989,7 @@ "html": "

\n Perform any key import steps defined by\n other applicable\n specifications, passing format, privateKeyInfo\n and obtaining namedCurve and key.\n

" }, { - "html": "

\n If an error occurred or there are no\n applicable\n specifications,\n throw a\n DataError.\n

" + "html": "

\n If an error occurred or there are no\n applicable\n specifications,\n throw a\n DataError.\n

" } ] } @@ -2998,10 +2998,10 @@ ] }, { - "html": "

\n If namedCurve is defined, and not equal to the namedCurve member of\n normalizedAlgorithm, throw a DataError.\n

" + "html": "

\n If namedCurve is defined, and not equal to the namedCurve member of\n normalizedAlgorithm, throw a DataError.\n

" }, { - "html": "

\n If the private key value is not a valid point on the Elliptic Curve\n identified by the namedCurve member of\n normalizedAlgorithm throw a DataError.\n

" + "html": "

\n If the private key value is not a valid point on the Elliptic Curve\n identified by the namedCurve member of\n normalizedAlgorithm throw a DataError.\n

" }, { "html": "

\n Set the [[type]] internal slot\n of key to \"private\"\n

" @@ -3026,7 +3026,7 @@ "rationale": "if", "steps": [ { - "html": "
\n
If keyData is a JsonWebKey dictionary:
\n

Let jwk equal keyData.

\n
Otherwise:
\n

Throw a DataError.

\n
", + "html": "
\n
If keyData is a JsonWebKey dictionary:
\n

Let jwk equal keyData.

\n
Otherwise:
\n

Throw a DataError.

\n
", "rationale": ".switch", "steps": [ { @@ -3038,32 +3038,32 @@ }, { "case": "Otherwise:", - "html": "

Throw a DataError.

" + "html": "

Throw a DataError.

" } ] } ] }, { - "html": "

\n If the d field is present and usages contains\n a value which is not\n \"sign\", or,\n if the d field is not present and usages contains\n a value which is not\n \"verify\"\n then throw a\n SyntaxError.\n

" + "html": "

\n If the d field is present and usages contains\n a value which is not\n \"sign\", or,\n if the d field is not present and usages contains\n a value which is not\n \"verify\"\n then throw a\n SyntaxError.\n

" }, { - "html": "

\n If the kty field of jwk is not\n \"EC\",\n then throw a\n DataError.\n

" + "html": "

\n If the kty field of jwk is not\n \"EC\",\n then throw a\n DataError.\n

" }, { - "html": "

\n If usages is non-empty and the use field of jwk is present and is\n not \"sig\",\n then throw a\n DataError.\n

" + "html": "

\n If usages is non-empty and the use field of jwk is present and is\n not \"sig\",\n then throw a\n DataError.\n

" }, { - "html": "

\n If the key_ops field of jwk is present, and\n is invalid according to the requirements of JSON Web\n Key [JWK], or it does not contain all of the specified usages\n values,\n then throw a\n DataError.\n

" + "html": "

\n If the key_ops field of jwk is present, and\n is invalid according to the requirements of JSON Web\n Key [JWK], or it does not contain all of the specified usages\n values,\n then throw a\n DataError.\n

" }, { - "html": "

\n If the ext field of jwk is present and\n has the value false and extractable is true,\n then throw a\n DataError.\n

" + "html": "

\n If the ext field of jwk is present and\n has the value false and extractable is true,\n then throw a\n DataError.\n

" }, { "html": "

\n Let namedCurve be a string whose value is equal to the\n crv field of jwk.\n

" }, { - "html": "

\n If namedCurve is not equal to the namedCurve member of\n normalizedAlgorithm, throw a DataError.\n

" + "html": "

\n If namedCurve is not equal to the namedCurve member of\n normalizedAlgorithm, throw a DataError.\n

" }, { "html": "
\n
\n If namedCurve is equal to \"P-256\",\n \"P-384\" or \"P-521\":\n
\n
\n \n
\n
\n Otherwise:\n
\n
\n \n
\n
", @@ -3081,7 +3081,7 @@ "html": "

\n Let algNamedCurve be a string whose initial value is\n undefined.\n

" }, { - "html": "
\n
If the alg field is not present:
\n
\n Let algNamedCurve be undefined.\n
\n
\n If the alg field is equal to the string \"ES256\":\n
\n
\n Let algNamedCurve be the string \"P-256\".\n
\n
\n If the alg field is equal to the string \"ES384\":\n
\n
\n Let algNamedCurve be the string \"P-384\".\n
\n
\n If the alg field is equal to the string \"ES512\":\n
\n
\n Let algNamedCurve be the string \"P-521\".\n
\n
otherwise:
\n
\n throw a\n DataError.\n
\n
", + "html": "
\n
If the alg field is not present:
\n
\n Let algNamedCurve be undefined.\n
\n
\n If the alg field is equal to the string \"ES256\":\n
\n
\n Let algNamedCurve be the string \"P-256\".\n
\n
\n If the alg field is equal to the string \"ES384\":\n
\n
\n Let algNamedCurve be the string \"P-384\".\n
\n
\n If the alg field is equal to the string \"ES512\":\n
\n
\n Let algNamedCurve be the string \"P-521\".\n
\n
otherwise:
\n
\n throw a\n DataError.\n
\n
", "rationale": ".switch", "steps": [ { @@ -3105,14 +3105,14 @@ }, { "case": "otherwise:", - "html": "throw a\n DataError." + "html": "throw a\n DataError." } ] } ] }, { - "html": "

\n If algNamedCurve is defined, and is not equal to\n namedCurve, throw a DataError.\n

" + "html": "

\n If algNamedCurve is defined, and is not equal to\n namedCurve, throw a DataError.\n

" }, { "html": "
\n
If the d field is present:
\n
\n \n
\n
Otherwise:
\n
\n \n
\n
", @@ -3127,7 +3127,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If jwk does not meet the requirements of Section\n 6.2.2 of JSON Web Algorithms [JWA], then throw a DataError.\n

" + "html": "

\n If jwk does not meet the requirements of Section\n 6.2.2 of JSON Web Algorithms [JWA], then throw a DataError.\n

" }, { "html": "

\n Let key be a new CryptoKey object that represents the\n Elliptic Curve private key identified by interpreting\n jwk according to Section 6.2.2 of JSON Web Algorithms [JWA].\n

" @@ -3143,7 +3143,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If jwk does not meet the requirements of Section\n 6.2.1 of JSON Web Algorithms [JWA], then throw a DataError.\n

" + "html": "

\n If jwk does not meet the requirements of Section\n 6.2.1 of JSON Web Algorithms [JWA], then throw a DataError.\n

" }, { "html": "

\n Let key be a new CryptoKey object that represents the\n Elliptic Curve public key identified by interpreting\n jwk according to Section 6.2.1 of JSON Web Algorithms [JWA].\n

" @@ -3168,7 +3168,7 @@ "html": "

\n Perform any key import steps defined by\n other applicable\n specifications, passing format, jwk\n and obtaining key.\n

" }, { - "html": "

\n If an error occurred or there are no\n applicable\n specifications,\n throw a\n DataError.\n

" + "html": "

\n If an error occurred or there are no\n applicable\n specifications,\n throw a\n DataError.\n

" } ] } @@ -3177,7 +3177,7 @@ ] }, { - "html": "

\n If the key value is not a valid point on the Elliptic Curve\n identified by the namedCurve member of\n normalizedAlgorithm throw a DataError.\n

" + "html": "

\n If the key value is not a valid point on the Elliptic Curve\n identified by the namedCurve member of\n normalizedAlgorithm throw a DataError.\n

" }, { "html": "

\n Let algorithm be a new instance of an EcKeyAlgorithm object.\n

" @@ -3199,10 +3199,10 @@ "rationale": "if", "steps": [ { - "html": "

\n If the namedCurve\n member of normalizedAlgorithm is not a\n named curve,\n then throw a\n DataError.\n

" + "html": "

\n If the namedCurve\n member of normalizedAlgorithm is not a\n named curve,\n then throw a\n DataError.\n

" }, { - "html": "

\n If usages contains a value which is not\n \"verify\"\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains a value which is not\n \"verify\"\n then throw a\n SyntaxError.\n

" }, { "html": "
\n
\n If namedCurve is \"P-256\",\n \"P-384\" or \"P-521\":\n
\n
\n \n
\n
Otherwise:
\n
\n \n
\n
", @@ -3220,10 +3220,10 @@ "html": "

\n Let Q be the elliptic curve point on the curve identified\n by the namedCurve\n member of normalizedAlgorithm identified by performing\n the conversion steps defined in Section 2.3.4 of [SEC1] on keyData.\n

\n

\n The uncompressed point format MUST be supported.\n

" }, { - "html": "

\n If the implementation does not support the compressed point format and\n a compressed point is provided,\n throw a\n DataError.\n

" + "html": "

\n If the implementation does not support the compressed point format and\n a compressed point is provided,\n throw a\n DataError.\n

" }, { - "html": "

\n If a decode error occurs or an identity point is found,\n throw a\n DataError.\n

" + "html": "

\n If a decode error occurs or an identity point is found,\n throw a\n DataError.\n

" }, { "html": "

\n Let key be a new CryptoKey\n that represents Q.\n

" @@ -3239,7 +3239,7 @@ "html": "

\n Perform any key import steps defined by\n other applicable\n specifications, passing format, keyData\n and obtaining key.\n

" }, { - "html": "

\n If an error occurred or there are no\n applicable\n specifications,\n throw a\n DataError.\n

" + "html": "

\n If an error occurred or there are no\n applicable\n specifications,\n throw a\n DataError.\n

" } ] } @@ -3266,7 +3266,7 @@ }, { "case": "Otherwise:", - "html": "

\n throw a\n NotSupportedError.\n

" + "html": "

\n throw a\n NotSupportedError.\n

" } ] } @@ -3285,10 +3285,10 @@ "html": "

\n Let key be the CryptoKey to be\n exported.\n

" }, { - "html": "

\n If the underlying cryptographic key material represented by the [[handle]] internal slot of key\n cannot be accessed, then throw an OperationError.\n

" + "html": "

\n If the underlying cryptographic key material represented by the [[handle]] internal slot of key\n cannot be accessed, then throw an OperationError.\n

" }, { - "html": "
\n
If format is \"spki\":
\n
\n \n
\n
If format is \"pkcs8\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
\n If format is \"raw\":\n
\n
\n \n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", + "html": "
\n
If format is \"spki\":
\n
\n \n
\n
If format is \"pkcs8\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
\n If format is \"raw\":\n
\n
\n \n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", "rationale": ".switch", "steps": [ { @@ -3300,7 +3300,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If the [[type]] internal slot\n of key is not \"public\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[type]] internal slot\n of key is not \"public\", then throw an InvalidAccessError.\n

" }, { "html": "Set the parameters field to an instance of the\n ECParameters ASN.1 type defined in\n [RFC5480] as follows:", @@ -3351,7 +3351,7 @@ ] }, { - "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" + "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" } ] }, @@ -3361,7 +3361,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If the [[type]] internal slot\n of key is not \"private\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[type]] internal slot\n of key is not \"private\", then throw an InvalidAccessError.\n

" }, { "html": "Set the parameters field to an instance of the\n ECParameters ASN.1 type defined in\n [RFC5480] as follows:", @@ -3412,7 +3412,7 @@ ] }, { - "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" + "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" } ] }, @@ -3519,7 +3519,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If the [[type]] internal slot\n of key is not \"public\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[type]] internal slot\n of key is not \"public\", then throw an InvalidAccessError.\n

" }, { "html": "
\n
\n If the namedCurve\n attribute of the [[algorithm]] internal slot\n of key is \"P-256\", \"P-384\"\n or \"P-521\":\n
\n
\n

\n Let data be an octet string representing the Elliptic Curve\n point Q represented by [[handle]] internal slot of\n key according to [SEC1] 2.3.3 using the uncompressed format.\n

\n
\n
Otherwise:
\n
\n

\n Perform any key export steps\n defined by other applicable\n specifications, passing format and the\n namedCurve attribute of\n the [[algorithm]]\n internal slot of key\n and obtaining namedCurve and data.\n

\n
\n
", @@ -3541,13 +3541,13 @@ ] }, { - "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" + "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" } ] }, { "case": "Otherwise:", - "html": "

\n throw a\n NotSupportedError.\n

" + "html": "

\n throw a\n NotSupportedError.\n

" } ] } @@ -3563,10 +3563,10 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains an entry which is not\n \"deriveKey\" or \"deriveBits\"\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains an entry which is not\n \"deriveKey\" or \"deriveBits\"\n then throw a\n SyntaxError.\n

" }, { - "html": "
\n
\n If the namedCurve member of\n normalizedAlgorithm is \"P-256\", \"P-384\"\n or \"P-521\":\n
\n
\n

\n Generate an Elliptic Curve key pair, as defined in [RFC6090] with domain parameters for the curve identified by\n the namedCurve member of\n normalizedAlgorithm.\n

\n
\n
\n If the namedCurve member of\n normalizedAlgorithm is a value specified in an\n applicable specification that\n specifies the use of that value with ECDH:\n
\n
\n

\n Perform the ECDH generation steps specified in that specification, passing in\n normalizedAlgorithm and resulting in an elliptic curve key pair.\n

\n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError\n

\n
\n
", + "html": "
\n
\n If the namedCurve member of\n normalizedAlgorithm is \"P-256\", \"P-384\"\n or \"P-521\":\n
\n
\n

\n Generate an Elliptic Curve key pair, as defined in [RFC6090] with domain parameters for the curve identified by\n the namedCurve member of\n normalizedAlgorithm.\n

\n
\n
\n If the namedCurve member of\n normalizedAlgorithm is a value specified in an\n applicable specification that\n specifies the use of that value with ECDH:\n
\n
\n

\n Perform the ECDH generation steps specified in that specification, passing in\n normalizedAlgorithm and resulting in an elliptic curve key pair.\n

\n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError\n

\n
\n
", "rationale": ".switch", "steps": [ { @@ -3582,14 +3582,14 @@ }, { "case": "Otherwise:", - "html": "

\n throw a\n NotSupportedError\n

" + "html": "

\n throw a\n NotSupportedError\n

" } ] } ] }, { - "html": "

\n If performing the operation results in an error,\n then throw a\n OperationError.\n

" + "html": "

\n If performing the operation results in an error,\n then throw a\n OperationError.\n

" }, { "html": "

\n Let algorithm be a new\n EcKeyAlgorithm\n object.\n

" @@ -3649,22 +3649,22 @@ "rationale": "if", "steps": [ { - "html": "

\n If the [[type]] internal slot of\n key is not \"private\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[type]] internal slot of\n key is not \"private\", then throw an InvalidAccessError.\n

" }, { "html": "

\n Let publicKey be the\n public member of\n normalizedAlgorithm.\n

" }, { - "html": "

\n If the [[type]] internal slot of\n publicKey is not \"public\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[type]] internal slot of\n publicKey is not \"public\", then throw an InvalidAccessError.\n

" }, { - "html": "

\n If the name attribute of\n the [[algorithm]] internal slot of\n publicKey is not equal to the name property of the [[algorithm]] internal slot of\n key, then throw an InvalidAccessError.\n

" + "html": "

\n If the name attribute of\n the [[algorithm]] internal slot of\n publicKey is not equal to the name property of the [[algorithm]] internal slot of\n key, then throw an InvalidAccessError.\n

" }, { - "html": "

\n If the namedCurve attribute of\n the [[algorithm]] internal slot of\n publicKey is not equal to the namedCurve property of the [[algorithm]] internal slot of\n key, then throw an InvalidAccessError.\n

" + "html": "

\n If the namedCurve attribute of\n the [[algorithm]] internal slot of\n publicKey is not equal to the namedCurve property of the [[algorithm]] internal slot of\n key, then throw an InvalidAccessError.\n

" }, { - "html": "
\n
\n If the namedCurve property of the [[algorithm]] internal slot of\n key is \"P-256\", \"P-384\"\n or \"P-521\":\n
\n
\n \n
\n
\n If the namedCurve property of the [[algorithm]] internal slot of\n key is a value specified in an\n applicable specification that\n specifies the use of that value with ECDH:\n
\n
\n

\n Perform the ECDH derivation steps specified in that specification, passing in\n key and publicKey and resulting in secret.\n

\n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError\n

\n
\n
", + "html": "
\n
\n If the namedCurve property of the [[algorithm]] internal slot of\n key is \"P-256\", \"P-384\"\n or \"P-521\":\n
\n
\n \n
\n
\n If the namedCurve property of the [[algorithm]] internal slot of\n key is a value specified in an\n applicable specification that\n specifies the use of that value with ECDH:\n
\n
\n

\n Perform the ECDH derivation steps specified in that specification, passing in\n key and publicKey and resulting in secret.\n

\n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError\n

\n
\n
", "rationale": ".switch", "steps": [ { @@ -3689,17 +3689,17 @@ }, { "case": "Otherwise:", - "html": "

\n throw a\n NotSupportedError\n

" + "html": "

\n throw a\n NotSupportedError\n

" } ] } ] }, { - "html": "

\n If performing the operation results in an error,\n then throw a\n OperationError.\n

" + "html": "

\n If performing the operation results in an error,\n then throw a\n OperationError.\n

" }, { - "html": "
\n
If length is null:
\n
Return secret
\n
Otherwise:
\n
\n
\n
\n If the length of secret in bits is less than\n length:\n
\n
\n throw an\n OperationError.\n
\n
Otherwise:
\n
\n Return an octet string containing the first length bits of secret.\n
\n
\n
\n
", + "html": "
\n
If length is null:
\n
Return secret
\n
Otherwise:
\n
\n
\n
\n If the length of secret in bits is less than\n length:\n
\n
\n throw an\n OperationError.\n
\n
Otherwise:
\n
\n Return an octet string containing the first length bits of secret.\n
\n
\n
\n
", "rationale": ".switch", "steps": [ { @@ -3711,7 +3711,7 @@ }, { "case": "Otherwise:", - "html": "
\n
\n If the length of secret in bits is less than\n length:\n
\n
\n throw an\n OperationError.\n
\n
Otherwise:
\n
\n Return an octet string containing the first length bits of secret.\n
\n
", + "html": "
\n
\n If the length of secret in bits is less than\n length:\n
\n
\n throw an\n OperationError.\n
\n
Otherwise:
\n
\n Return an octet string containing the first length bits of secret.\n
\n
", "rationale": ".switch", "steps": [ { @@ -3719,7 +3719,7 @@ "steps": [ { "case": "If the length of secret in bits is less than length:", - "html": "throw an\n OperationError." + "html": "throw an\n OperationError." }, { "case": "Otherwise:", @@ -3755,25 +3755,25 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages is not empty\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages is not empty\n then throw a\n SyntaxError.\n

" }, { "html": "

\n Let spki be the result of running the\n parse a subjectPublicKeyInfo\n algorithm over keyData\n

" }, { - "html": "

\n If an error occurred while parsing,\n then throw a\n DataError.\n

" + "html": "

\n If an error occurred while parsing,\n then throw a\n DataError.\n

" }, { - "html": "

\n If the algorithm object identifier field of the\n algorithm AlgorithmIdentifier field of spki is\n not equal to the id-ecPublicKey\n object identifier defined in [RFC5480],\n then throw a\n DataError.\n

" + "html": "

\n If the algorithm object identifier field of the\n algorithm AlgorithmIdentifier field of spki is\n not equal to the id-ecPublicKey\n object identifier defined in [RFC5480],\n then throw a\n DataError.\n

" }, { - "html": "

\n If the parameters field of the algorithm\n AlgorithmIdentifier field of spki is absent,\n then throw a\n DataError.\n

" + "html": "

\n If the parameters field of the algorithm\n AlgorithmIdentifier field of spki is absent,\n then throw a\n DataError.\n

" }, { "html": "

\n Let params be the parameters field of the\n algorithm AlgorithmIdentifier field of spki.\n

" }, { - "html": "

\n If params is not an instance of the\n ECParameters ASN.1 type defined in\n [RFC5480] that specifies a\n namedCurve, then throw a DataError.\n

" + "html": "

\n If params is not an instance of the\n ECParameters ASN.1 type defined in\n [RFC5480] that specifies a\n namedCurve, then throw a DataError.\n

" }, { "html": "

\n Let namedCurve be a string whose initial value is\n undefined.\n

" @@ -3817,10 +3817,10 @@ "html": "

\n Let publicKey be the Elliptic Curve public key identified by\n performing the conversion steps defined in Section 2.3.4 of [SEC1] to the subjectPublicKey field of\n spki.\n

\n

\n The uncompressed point format MUST be supported.\n

" }, { - "html": "

\n If the implementation does not support the compressed point format and\n a compressed point is provided,\n throw a\n DataError.\n

" + "html": "

\n If the implementation does not support the compressed point format and\n a compressed point is provided,\n throw a\n DataError.\n

" }, { - "html": "

\n If a decode error occurs or an identity point is found,\n throw a\n DataError.\n

" + "html": "

\n If a decode error occurs or an identity point is found,\n throw a\n DataError.\n

" }, { "html": "

\n Let key be a new CryptoKey\n that represents publicKey.\n

" @@ -3836,7 +3836,7 @@ "html": "

\n Perform any key import steps defined by\n other applicable\n specifications, passing format, spki\n and obtaining namedCurve and key.\n

" }, { - "html": "

\n If an error occurred or there are no\n applicable\n specifications,\n throw a\n DataError.\n

" + "html": "

\n If an error occurred or there are no\n applicable\n specifications,\n throw a\n DataError.\n

" } ] } @@ -3845,10 +3845,10 @@ ] }, { - "html": "

\n If namedCurve is defined, and not equal to the namedCurve member of\n normalizedAlgorithm, throw a DataError.\n

" + "html": "

\n If namedCurve is defined, and not equal to the namedCurve member of\n normalizedAlgorithm, throw a DataError.\n

" }, { - "html": "

\n If the key value is not a valid point on the Elliptic Curve\n identified by the namedCurve member of\n normalizedAlgorithm throw a DataError.\n

" + "html": "

\n If the key value is not a valid point on the Elliptic Curve\n identified by the namedCurve member of\n normalizedAlgorithm throw a DataError.\n

" }, { "html": "

\n Set the [[type]] internal slot\n of key to \"public\"\n

" @@ -3873,25 +3873,25 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains an entry which is not\n \"deriveKey\" or \"deriveBits\"\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains an entry which is not\n \"deriveKey\" or \"deriveBits\"\n then throw a\n SyntaxError.\n

" }, { "html": "

\n Let privateKeyInfo be the result of running the\n parse a privateKeyInfo\n algorithm over keyData.\n

" }, { - "html": "

\n If an error occurs while parsing,\n throw a\n DataError.\n

" + "html": "

\n If an error occurs while parsing,\n throw a\n DataError.\n

" }, { - "html": "

\n If the algorithm object identifier field of the\n privateKeyAlgorithm PrivateKeyAlgorithm field of\n privateKeyInfo is not equal to the\n id-ecPublicKey object identifier\n defined in [RFC5480],\n throw a\n DataError.\n

" + "html": "

\n If the algorithm object identifier field of the\n privateKeyAlgorithm PrivateKeyAlgorithm field of\n privateKeyInfo is not equal to the\n id-ecPublicKey object identifier\n defined in [RFC5480],\n throw a\n DataError.\n

" }, { - "html": "

\n If the parameters field of the\n privateKeyAlgorithm PrivateKeyAlgorithmIdentifier field\n of privateKeyInfo is not present,\n throw a\n DataError.\n

" + "html": "

\n If the parameters field of the\n privateKeyAlgorithm PrivateKeyAlgorithmIdentifier field\n of privateKeyInfo is not present,\n throw a\n DataError.\n

" }, { "html": "

\n Let params be the parameters field of the\n privateKeyAlgorithm PrivateKeyAlgorithmIdentifier field\n of privateKeyInfo.\n

" }, { - "html": "

\n If params is not an instance of the\n ECParameters ASN.1 type defined in\n [RFC5480] that specifies a\n namedCurve, then throw a DataError.\n

" + "html": "

\n If params is not an instance of the\n ECParameters ASN.1 type defined in\n [RFC5480] that specifies a\n namedCurve, then throw a DataError.\n

" }, { "html": "

\n Let namedCurve be a string whose initial value is\n undefined.\n

" @@ -3935,10 +3935,10 @@ "html": "

\n Let ecPrivateKey be the result of performing the\n parse an ASN.1 structure\n algorithm, with data as the privateKey field\n of privateKeyInfo, structure as the ASN.1\n ECPrivateKey structure specified in Section 3 of\n [RFC5915], and exactData set to true.\n

" }, { - "html": "

\n If an error occurred while parsing,\n then throw a\n DataError.\n

" + "html": "

\n If an error occurred while parsing,\n then throw a\n DataError.\n

" }, { - "html": "

\n If the parameters field of ecPrivateKey is\n present, and is not an instance of the namedCurve ASN.1\n type defined in [RFC5480], or does not contain\n the same object identifier as the parameters field of the\n privateKeyAlgorithm PrivateKeyAlgorithmIdentifier field\n of privateKeyInfo,\n throw a\n DataError.\n

" + "html": "

\n If the parameters field of ecPrivateKey is\n present, and is not an instance of the namedCurve ASN.1\n type defined in [RFC5480], or does not contain\n the same object identifier as the parameters field of the\n privateKeyAlgorithm PrivateKeyAlgorithmIdentifier field\n of privateKeyInfo,\n throw a\n DataError.\n

" }, { "html": "

\n Let key be a new CryptoKey\n that represents the Elliptic Curve private key identified by\n performing the conversion steps defined in Section 3 of [RFC5915] using ecPrivateKey.\n

" @@ -3954,7 +3954,7 @@ "html": "

\n Perform any key import steps defined by\n other applicable\n specifications, passing format, privateKeyInfo\n and obtaining namedCurve and key.\n

" }, { - "html": "

\n If an error occurred or there are no\n applicable\n specifications,\n throw a\n DataError.\n

" + "html": "

\n If an error occurred or there are no\n applicable\n specifications,\n throw a\n DataError.\n

" } ] } @@ -3963,10 +3963,10 @@ ] }, { - "html": "

\n If namedCurve is defined, and not equal to the namedCurve member of\n normalizedAlgorithm, throw a DataError.\n

" + "html": "

\n If namedCurve is defined, and not equal to the namedCurve member of\n normalizedAlgorithm, throw a DataError.\n

" }, { - "html": "

\n If the key value is not a valid point on the Elliptic Curve\n identified by the namedCurve member of\n normalizedAlgorithm throw a DataError.\n

" + "html": "

\n If the key value is not a valid point on the Elliptic Curve\n identified by the namedCurve member of\n normalizedAlgorithm throw a DataError.\n

" }, { "html": "

\n Set the [[type]] internal slot\n of key to \"private\".\n

" @@ -3991,7 +3991,7 @@ "rationale": "if", "steps": [ { - "html": "
\n
If keyData is a JsonWebKey dictionary:
\n

Let jwk equal keyData.

\n
Otherwise:
\n

Throw a DataError.

\n
", + "html": "
\n
If keyData is a JsonWebKey dictionary:
\n

Let jwk equal keyData.

\n
Otherwise:
\n

Throw a DataError.

\n
", "rationale": ".switch", "steps": [ { @@ -4003,35 +4003,35 @@ }, { "case": "Otherwise:", - "html": "

Throw a DataError.

" + "html": "

Throw a DataError.

" } ] } ] }, { - "html": "

\n If the d field is present and if usages\n contains an entry which is not\n \"deriveKey\" or \"deriveBits\"\n then throw a\n SyntaxError.\n

" + "html": "

\n If the d field is present and if usages\n contains an entry which is not\n \"deriveKey\" or \"deriveBits\"\n then throw a\n SyntaxError.\n

" }, { - "html": "

\n If the d field is not present and if usages is not\n empty\n then throw a\n SyntaxError.\n

" + "html": "

\n If the d field is not present and if usages is not\n empty\n then throw a\n SyntaxError.\n

" }, { - "html": "

\n If the kty field of jwk is\n not \"EC\",\n then throw a\n DataError.\n

" + "html": "

\n If the kty field of jwk is\n not \"EC\",\n then throw a\n DataError.\n

" }, { - "html": "

\n If usages is non-empty and the use field of jwk is present\n and is not equal to \"enc\" then throw a\n DataError.\n

" + "html": "

\n If usages is non-empty and the use field of jwk is present\n and is not equal to \"enc\" then throw a\n DataError.\n

" }, { - "html": "

\n If the key_ops field of jwk is present, and\n is invalid according to the requirements of JSON Web\n Key [JWK], or it does not contain all of the specified usages\n values, then throw a DataError.\n

" + "html": "

\n If the key_ops field of jwk is present, and\n is invalid according to the requirements of JSON Web\n Key [JWK], or it does not contain all of the specified usages\n values, then throw a DataError.\n

" }, { - "html": "

\n If the ext field of jwk is present and\n has the value false and extractable is true,\n then throw a\n DataError.\n

" + "html": "

\n If the ext field of jwk is present and\n has the value false and extractable is true,\n then throw a\n DataError.\n

" }, { "html": "

\n Let namedCurve be a string whose value is equal to the\n crv field of jwk.\n

" }, { - "html": "

\n If namedCurve is not equal to the namedCurve member of\n normalizedAlgorithm, throw a DataError.\n

" + "html": "

\n If namedCurve is not equal to the namedCurve member of\n normalizedAlgorithm, throw a DataError.\n

" }, { "html": "
\n
\n If namedCurve is \"P-256\",\n \"P-384\" or \"P-521\":\n
\n
\n
\n
If the d field is present:
\n
\n \n
\n
Otherwise:
\n
\n \n
\n
\n
\n
Otherwise
\n
\n \n
\n
", @@ -4054,7 +4054,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If jwk does not meet the requirements of Section\n 6.2.2 of JSON Web Algorithms [JWA], then throw a DataError.\n

" + "html": "

\n If jwk does not meet the requirements of Section\n 6.2.2 of JSON Web Algorithms [JWA], then throw a DataError.\n

" }, { "html": "

\n Let key be a new CryptoKey object that represents the\n Elliptic Curve private key identified by interpreting\n jwk according to Section 6.2.2 of JSON Web Algorithms [JWA].\n

" @@ -4070,7 +4070,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If jwk does not meet the requirements of Section\n 6.2.1 of JSON Web Algorithms [JWA], then throw a DataError.\n

" + "html": "

\n If jwk does not meet the requirements of Section\n 6.2.1 of JSON Web Algorithms [JWA], then throw a DataError.\n

" }, { "html": "

\n Let key be a new CryptoKey object that represents the\n Elliptic Curve public key identified by interpreting\n jwk according to Section 6.2.1 of JSON Web Algorithms [JWA].\n

" @@ -4093,7 +4093,7 @@ "html": "

\n Perform any key import steps defined by\n other applicable\n specifications, passing format, jwk\n and obtaining key.\n

" }, { - "html": "

\n If an error occurred or there are no\n applicable\n specifications,\n throw a\n DataError.\n

" + "html": "

\n If an error occurred or there are no\n applicable\n specifications,\n throw a\n DataError.\n

" } ] } @@ -4102,7 +4102,7 @@ ] }, { - "html": "

\n If the key value is not a valid point on the Elliptic Curve\n identified by the namedCurve member of\n normalizedAlgorithm throw a DataError.\n

" + "html": "

\n If the key value is not a valid point on the Elliptic Curve\n identified by the namedCurve member of\n normalizedAlgorithm throw a DataError.\n

" }, { "html": "

\n Let algorithm be a new instance of an EcKeyAlgorithm object.\n

" @@ -4124,10 +4124,10 @@ "rationale": "if", "steps": [ { - "html": "

\n If the namedCurve\n member of normalizedAlgorithm is not a\n named curve,\n then throw a\n DataError.\n

" + "html": "

\n If the namedCurve\n member of normalizedAlgorithm is not a\n named curve,\n then throw a\n DataError.\n

" }, { - "html": "

\n If usages is not the empty list,\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages is not the empty list,\n then throw a\n SyntaxError.\n

" }, { "html": "
\n
\n If namedCurve is \"P-256\",\n \"P-384\" or \"P-521\":\n
\n
\n \n
\n
Otherwise:
\n
\n \n
\n
", @@ -4145,10 +4145,10 @@ "html": "

\n Let Q be the Elliptic Curve public key on the curve identified\n by the namedCurve\n member of normalizedAlgorithm identified by performing\n the conversion steps defined in Section 2.3.4 of [SEC1] to keyData.\n

\n

\n The uncompressed point format MUST be supported.\n

" }, { - "html": "

\n If the implementation does not support the compressed point format and\n a compressed point is provided,\n throw a\n DataError.\n

" + "html": "

\n If the implementation does not support the compressed point format and\n a compressed point is provided,\n throw a\n DataError.\n

" }, { - "html": "

\n If a decode error occurs or an identity point is found,\n throw a\n DataError.\n

" + "html": "

\n If a decode error occurs or an identity point is found,\n throw a\n DataError.\n

" }, { "html": "

\n Let key be a new CryptoKey\n that represents Q.\n

" @@ -4164,7 +4164,7 @@ "html": "

\n Perform any key import steps defined by\n other applicable\n specifications, passing format, keyData\n and obtaining key.\n

" }, { - "html": "

\n If an error occured or there are no\n applicable\n specifications,\n throw a\n DataError.\n

" + "html": "

\n If an error occured or there are no\n applicable\n specifications,\n throw a\n DataError.\n

" } ] } @@ -4206,7 +4206,7 @@ "html": "

\n Let key be the CryptoKey to be\n exported.\n

" }, { - "html": "

\n If the underlying cryptographic key material represented by the [[handle]] internal slot of key\n cannot be accessed, then throw an OperationError.\n

" + "html": "

\n If the underlying cryptographic key material represented by the [[handle]] internal slot of key\n cannot be accessed, then throw an OperationError.\n

" }, { "html": "
\n
If format is \"spki\":
\n
\n \n
\n
If format is \"pkcs8\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
\n If format is \"raw\":\n
\n
\n \n
\n
", @@ -4221,7 +4221,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If the [[type]] internal slot\n of key is not \"public\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[type]] internal slot\n of key is not \"public\", then throw an InvalidAccessError.\n

" }, { "html": "Set the parameters field to an instance of the\n ECParameters ASN.1 type defined in\n [RFC5480] as follows:", @@ -4279,7 +4279,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If the [[type]] internal slot\n of key is not \"private\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[type]] internal slot\n of key is not \"private\", then throw an InvalidAccessError.\n

" }, { "html": "Set the parameters field to an instance of the\n ECParameters ASN.1 type defined in\n [RFC5480] as follows:", @@ -4434,7 +4434,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If the [[type]] internal slot\n of key is not \"public\", then throw an InvalidAccessError.\n

" + "html": "

\n If the [[type]] internal slot\n of key is not \"public\", then throw an InvalidAccessError.\n

" }, { "html": "
\n
\n If the namedCurve\n attribute of the [[algorithm]] internal slot\n of key is \"P-256\", \"P-384\"\n or \"P-521\":\n
\n
\n

\n Let data be the octet string that\n represents the Elliptic Curve public key represented by the [[handle]] internal slot of\n key according to the encoding rules specified in\n Section 2.3.3 of [SEC1] and using the\n uncompressed form.\n

\n
\n
Otherwise:
\n
\n

\n Perform any key export steps\n defined by other applicable\n specifications, passing format and the\n namedCurve attribute of\n the [[algorithm]]\n internal slot of key\n and obtaining namedCurve and data.\n

\n
\n
", @@ -4456,7 +4456,7 @@ ] }, { - "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" + "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" } ] } @@ -4469,21 +4469,946 @@ } ] }, + { + "html": "When signing, the following algorithm should be used:", + "rationale": "if", + "steps": [ + { + "html": "

\n If the [[type]] internal slot of\n key is not \"private\", then throw an InvalidAccessError.\n

" + }, + { + "html": "

\n Perform the Ed25519 signing process, as specified in [RFC8032],\n Section 5.1.6, with message as M,\n using the Ed25519 private key associated with key.\n

" + }, + { + "html": "

\n Return a new ArrayBuffer associated with the\n relevant global object\n of this [HTML], and containing the\n bytes of the signature resulting from performing\n the Ed25519 signing process.\n

" + } + ] + }, + { + "html": "When verifying, the following algorithm should be used:", + "rationale": "if", + "steps": [ + { + "html": "

\n If the [[type]] internal slot of\n key is not \"public\", then throw an InvalidAccessError.\n

" + }, + { + "html": "

\n If the key data of key represents an invalid point or a small-order element\n on the Elliptic Curve of Ed25519, return false.\n

" + }, + { + "html": "

\n If the point R, encoded in the first half of signature,\n represents an invalid point or a small-order element\n on the Elliptic Curve of Ed25519, return false.\n

" + }, + { + "html": "

\n Perform the Ed25519 verification steps, as specified in [RFC8032],\n Section 5.1.7, using the cofactorless (unbatched) equation,\n [S]B = R + [k]A', on the signature, with message as M,\n using the Ed25519 public key associated with key.\n

" + }, + { + "html": "

\n Let result be a boolean with the value true if the signature is valid\n and the value false otherwise.\n

" + }, + { + "html": "

\n Return result.\n

" + } + ] + }, + { + "html": "", + "rationale": "if", + "steps": [ + { + "html": "

\n If usages contains a value which is not\n one of \"sign\" or \"verify\",\n then throw a\n SyntaxError.\n

" + }, + { + "html": "

\n Generate an Ed25519 key pair, as defined in [RFC8032], section 5.1.5.\n

" + }, + { + "html": "

\n Let algorithm be a new KeyAlgorithm object.\n

" + }, + { + "html": "

\n Set the name attribute of\n algorithm to \"Ed25519\".\n

" + }, + { + "html": "

\n Let publicKey be a new CryptoKey associated with the\n relevant global object\n of this [HTML], and\n representing the public key of the generated key pair.\n

" + }, + { + "html": "

\n Set the [[type]] internal slot of\n publicKey to \"public\"\n

" + }, + { + "html": "

\n Set the [[algorithm]] internal\n slot of publicKey to algorithm.\n

" + }, + { + "html": "

\n Set the [[extractable]] internal\n slot of publicKey to true.\n

" + }, + { + "html": "

\n Set the [[usages]] internal slot of\n publicKey to be the usage intersection\n of usages and [ \"verify\" ].\n

" + }, + { + "html": "

\n Let privateKey be a new CryptoKey associated with the\n relevant global object\n of this [HTML], and\n representing the private key of the generated key pair.\n

" + }, + { + "html": "

\n Set the [[type]] internal slot of\n privateKey to \"private\"\n

" + }, + { + "html": "

\n Set the [[algorithm]] internal\n slot of privateKey to algorithm.\n

" + }, + { + "html": "

\n Set the [[extractable]] internal\n slot of privateKey to extractable.\n

" + }, + { + "html": "

\n Set the [[usages]] internal slot of\n privateKey to be the usage intersection\n of usages and [ \"sign\" ].\n

" + }, + { + "html": "

\n Let result be a new CryptoKeyPair\n dictionary.\n

" + }, + { + "html": "

\n Set the publicKey attribute\n of result to be publicKey.\n

" + }, + { + "html": "

\n Set the privateKey attribute\n of result to be privateKey.\n

" + }, + { + "html": "

\n Return the result of converting result to an ECMAScript Object, as\n defined by [WebIDL].\n

" + } + ] + }, + { + "html": "", + "rationale": "let", + "steps": [ + { + "html": "

Let keyData be the key data to be imported.

" + }, + { + "html": "
\n
If format is \"spki\":
\n
\n \n
\n
If format is \"pkcs8\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
If format is \"raw\":
\n
\n \n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", + "rationale": ".switch", + "steps": [ + { + "operation": "switch", + "steps": [ + { + "case": "If format is \"spki\":", + "html": "", + "rationale": "if", + "steps": [ + { + "html": "

\n If usages contains a value which is not\n \"verify\"\n then throw a\n SyntaxError.\n

" + }, + { + "html": "

\n Let spki be the result of running the\n parse a subjectPublicKeyInfo\n algorithm over keyData.\n

" + }, + { + "html": "

\n If an error occurred while parsing,\n then throw a\n DataError.\n

" + }, + { + "html": "

\n If the algorithm object identifier field of the\n algorithm AlgorithmIdentifier field of spki is\n not equal to the id-Ed25519\n object identifier defined in [RFC8410],\n then throw a\n DataError.\n

" + }, + { + "html": "

\n If the parameters field of the algorithm\n AlgorithmIdentifier field of spki is present,\n then throw a\n DataError.\n

" + }, + { + "html": "

\n Let publicKey be the Ed25519 public key identified by\n the subjectPublicKey field of spki.\n

" + }, + { + "html": "

\n Let key be a new CryptoKey associated with the\n relevant global object\n of this [HTML], and\n that represents publicKey.\n

" + }, + { + "html": "

\n Set the [[type]] internal slot\n of key to \"public\"\n

" + }, + { + "html": "

\n Let algorithm be a new KeyAlgorithm.\n

" + }, + { + "html": "

\n Set the name attribute of\n algorithm to \"Ed25519\".\n

" + }, + { + "html": "

\n Set the [[algorithm]]\n internal slot of key to algorithm.\n

" + } + ] + }, + { + "case": "If format is \"pkcs8\":", + "html": "", + "rationale": "if", + "steps": [ + { + "html": "

\n If usages contains a value which is not\n \"sign\"\n then throw a\n SyntaxError.\n

" + }, + { + "html": "

\n Let privateKeyInfo be the result of running the\n parse a privateKeyInfo\n algorithm over keyData.\n

" + }, + { + "html": "

\n If an error occurs while parsing,\n then throw a\n DataError.\n

" + }, + { + "html": "

\n If the algorithm object identifier field of the\n privateKeyAlgorithm PrivateKeyAlgorithm field of\n privateKeyInfo is not equal to the\n id-Ed25519 object identifier defined in [RFC8410],\n then throw a\n DataError.\n

" + }, + { + "html": "

\n If the parameters field of the\n privateKeyAlgorithm PrivateKeyAlgorithmIdentifier field\n of privateKeyInfo is present,\n then throw a\n DataError.\n

" + }, + { + "html": "

\n Let curvePrivateKey be the result of performing the\n parse an ASN.1 structure\n algorithm, with data as the privateKey field\n of privateKeyInfo, structure as the ASN.1\n CurvePrivateKey structure specified in Section 7 of [RFC8410], and exactData set to true.\n

" + }, + { + "html": "

\n If an error occurred while parsing,\n then throw a\n DataError.\n

" + }, + { + "html": "

\n Let key be a new CryptoKey associated with the\n relevant global object\n of this [HTML], and\n that represents the Ed25519 private key identified by curvePrivateKey.\n

" + }, + { + "html": "

\n Set the [[type]] internal slot\n of key to \"private\"\n

" + }, + { + "html": "

\n Let algorithm be a new KeyAlgorithm.\n

" + }, + { + "html": "

\n Set the name attribute of\n algorithm to \"Ed25519\".\n

" + }, + { + "html": "

\n Set the [[algorithm]]\n internal slot of key to algorithm.\n

" + } + ] + }, + { + "case": "If format is \"jwk\":", + "html": "", + "rationale": "if", + "steps": [ + { + "html": "
\n
If keyData is a JsonWebKey dictionary:
\n

Let jwk equal keyData.

\n
Otherwise:
\n

Throw a DataError.

\n
", + "rationale": ".switch", + "steps": [ + { + "operation": "switch", + "steps": [ + { + "case": "If keyData is a JsonWebKey dictionary:", + "html": "

Let jwk equal keyData.

" + }, + { + "case": "Otherwise:", + "html": "

Throw a DataError.

" + } + ] + } + ] + }, + { + "html": "

\n If the d field is present and usages contains\n a value which is not\n \"sign\", or,\n if the d field is not present and usages contains\n a value which is not\n \"verify\"\n then throw a\n SyntaxError.\n

" + }, + { + "html": "

\n If the kty field of jwk is not\n \"OKP\",\n then throw a\n DataError.\n

" + }, + { + "html": "

\n If the crv field of jwk is not\n \"Ed25519\",\n then throw a\n DataError.\n

" + }, + { + "html": "

\n If usages is non-empty and the use field of jwk is present and is\n not \"sig\",\n then throw a\n DataError.\n

" + }, + { + "html": "

\n If the key_ops field of jwk is present, and\n is invalid according to the requirements of JSON Web\n Key [JWK], or it does not contain all of the specified usages\n values,\n then throw a\n DataError.\n

" + }, + { + "html": "

\n If the ext field of jwk is present and\n has the value false and extractable is true,\n then throw a\n DataError.\n

" + }, + { + "html": "
\n
If the d field is present:
\n
\n \n
\n
Otherwise:
\n
\n \n
\n
", + "rationale": ".switch", + "steps": [ + { + "operation": "switch", + "steps": [ + { + "case": "If the d field is present:", + "html": "", + "rationale": "if", + "steps": [ + { + "html": "

\n If jwk does not meet the requirements of\n the JWK private key format described in Section 2\n of [RFC8037], then throw a DataError.\n

" + }, + { + "html": "

\n Let key be a new CryptoKey object that represents the\n Ed25519 private key identified by interpreting\n jwk according to Section 2 of [RFC8037].\n

" + }, + { + "html": "

\n Set the [[type]]\n internal slot of Key to \"private\".\n

" + } + ] + }, + { + "case": "Otherwise:", + "html": "", + "rationale": "if", + "steps": [ + { + "html": "

\n If jwk does not meet the requirements of\n the JWK public key format described in Section 2\n of [RFC8037], then throw a DataError.\n

" + }, + { + "html": "

\n Let key be a new CryptoKey object that represents the\n Ed25519 public key identified by interpreting\n jwk according to Section 2 of [RFC8037].\n

" + }, + { + "html": "

\n Set the [[type]]\n internal slot of Key to \"public\".\n

" + } + ] + } + ] + } + ] + }, + { + "html": "

\n Let algorithm be a new instance of a KeyAlgorithm object.\n

" + }, + { + "html": "

\n Set the name attribute of\n algorithm to \"Ed25519\".\n

" + }, + { + "html": "

\n Set the [[algorithm]]\n internal slot of key to algorithm.\n

" + } + ] + }, + { + "case": "If format is \"raw\":", + "html": "", + "rationale": "if", + "steps": [ + { + "html": "

\n If usages contains a value which is not\n \"verify\"\n then throw a\n SyntaxError.\n

" + }, + { + "html": "

\n Let algorithm be a new KeyAlgorithm object.\n

" + }, + { + "html": "

\n Set the name attribute of\n algorithm to \"Ed25519\".\n

" + }, + { + "html": "

\n Let key be a new CryptoKey associated with the\n relevant global object\n of this [HTML], and\n representing the key data provided in keyData.\n

" + }, + { + "html": "

\n Set the [[type]] internal slot\n of key to \"public\"\n

" + }, + { + "html": "

\n Set the [[algorithm]]\n internal slot of key to algorithm.\n

" + } + ] + }, + { + "case": "Otherwise:", + "html": "

\n throw a\n NotSupportedError.\n

" + } + ] + } + ] + }, + { + "html": "

\n Return key\n

" + } + ] + }, + { + "html": "", + "rationale": "let", + "steps": [ + { + "html": "

\n Let key be the CryptoKey to be\n exported.\n

" + }, + { + "html": "

\n If the underlying cryptographic key material represented by the [[handle]] internal slot of key\n cannot be accessed, then throw an OperationError.\n

" + }, + { + "html": "
\n
If format is \"spki\":
\n
\n \n
\n
If format is \"pkcs8\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
\n If format is \"raw\":\n
\n
\n \n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", + "rationale": ".switch", + "steps": [ + { + "operation": "switch", + "steps": [ + { + "case": "If format is \"spki\":", + "html": "", + "rationale": "if", + "steps": [ + { + "html": "

\n If the [[type]] internal slot\n of key is not \"public\", then throw an InvalidAccessError.\n

" + }, + { + "html": "

\n Let data be an instance of the subjectPublicKeyInfo\n ASN.1 structure defined in [RFC5280]\n with the following properties:\n

\n " + }, + { + "html": "

\n Let result be a new ArrayBuffer associated with the\n relevant global object\n of this [HTML], and containing\n data.\n

" + } + ] + }, + { + "case": "If format is \"pkcs8\":", + "html": "", + "rationale": "if", + "steps": [ + { + "html": "

\n If the [[type]] internal slot\n of key is not \"private\", then throw an InvalidAccessError.\n

" + }, + { + "html": "

\n Let data be an instance of the privateKeyInfo\n ASN.1 structure defined in [RFC5208]\n with the following properties:\n

\n " + }, + { + "html": "

\n Let result be a new ArrayBuffer associated with the\n relevant global object\n of this [HTML], and containing\n data.\n

" + } + ] + }, + { + "case": "If format is \"jwk\":", + "html": "", + "rationale": "let", + "steps": [ + { + "html": "

\n Let jwk be a new JsonWebKey\n dictionary.\n

" + }, + { + "html": "

\n Set the kty attribute of jwk to\n \"OKP\".\n

" + }, + { + "html": "

\n Set the crv attribute of jwk to\n \"Ed25519\".\n

" + }, + { + "html": "

\n Set the x attribute of jwk according to the\n definition in Section 2 of [RFC8037].\n

" + }, + { + "html": "
\n
\n If the [[type]] internal slot\n of key is \"private\"\n
\n
\n Set the d attribute of jwk according to the\n definition in Section 2 of [RFC8037].\n
\n
", + "rationale": ".switch", + "steps": [ + { + "operation": "switch", + "steps": [ + { + "case": "If the [[type]] internal slot of key is \"private\"", + "html": "Set the d attribute of jwk according to the\n definition in Section 2 of [RFC8037]." + } + ] + } + ] + }, + { + "html": "

\n Set the key_ops attribute of jwk to the usages attribute of key.\n

" + }, + { + "html": "

\n Set the ext attribute of jwk to the [[extractable]] internal slot\n of key.\n

" + }, + { + "html": "

\n Let result be the result of converting jwk\n to an ECMAScript Object, as defined by [WebIDL].\n

" + } + ] + }, + { + "case": "If format is \"raw\":", + "html": "", + "rationale": "if", + "steps": [ + { + "html": "

\n If the [[type]] internal slot\n of key is not \"public\", then throw an InvalidAccessError.\n

" + }, + { + "html": "

\n Let data be an octet string representing the Ed25519\n public key represented by the [[handle]] internal slot of\n key.\n

" + }, + { + "html": "

\n Let result be a new ArrayBuffer associated with the\n relevant global object\n of this [HTML], and containing\n data.\n

" + } + ] + }, + { + "case": "Otherwise:", + "html": "

\n throw a\n NotSupportedError.\n

" + } + ] + } + ] + }, + { + "html": "

\n Return result.\n

" + } + ] + }, + { + "html": "", + "rationale": "if", + "steps": [ + { + "html": "

\n If the [[type]] internal slot of\n key is not \"private\", then throw an InvalidAccessError.\n

" + }, + { + "html": "

\n Let publicKey be the\n public member of\n normalizedAlgorithm.\n

" + }, + { + "html": "

\n If the [[type]] internal slot of\n publicKey is not \"public\", then throw an InvalidAccessError.\n

" + }, + { + "html": "

\n If the name attribute of\n the [[algorithm]] internal slot of\n publicKey is not equal to the name property of the [[algorithm]] internal slot of\n key, then throw an InvalidAccessError.\n

" + }, + { + "html": "

\n Let secret be the result of performing the X25519 function specified in\n [RFC7748] Section 5 with key as the X25519 private key k\n and the X25519 public key represented by the [[handle]]\n internal slot of publicKey as the X25519 public key u.\n

" + }, + { + "html": "

\n If secret is the all-zero value,\n then throw a OperationError.\n This check must be performed in constant-time, as per [RFC7748] Section 6.1.\n

" + }, + { + "html": "
\n
If length is null:
\n
Return secret
\n
Otherwise:
\n
\n
\n
\n If the length of secret in bits is less than\n length:\n
\n
\n throw an\n OperationError.\n
\n
Otherwise:
\n
\n Return an octet string containing the first length bits of secret.\n
\n
\n
\n
", + "rationale": ".switch", + "steps": [ + { + "operation": "switch", + "steps": [ + { + "case": "If length is null:", + "html": "Return secret" + }, + { + "case": "Otherwise:", + "html": "
\n
\n If the length of secret in bits is less than\n length:\n
\n
\n throw an\n OperationError.\n
\n
Otherwise:
\n
\n Return an octet string containing the first length bits of secret.\n
\n
", + "rationale": ".switch", + "steps": [ + { + "operation": "switch", + "steps": [ + { + "case": "If the length of secret in bits is less than length:", + "html": "throw an\n OperationError." + }, + { + "case": "Otherwise:", + "html": "Return an octet string containing the first length bits of secret." + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "html": "", + "rationale": "if", + "steps": [ + { + "html": "

\n If usages contains an entry which is not\n \"deriveKey\" or \"deriveBits\"\n then throw a\n SyntaxError.\n

" + }, + { + "html": "

\n Generate an X25519 key pair, with the private key being 32 random bytes,\n and the public key being X25519(a, 9),\n as defined in [RFC7748], section 6.1.\n

" + }, + { + "html": "

\n Let algorithm be a new KeyAlgorithm object.\n

" + }, + { + "html": "

\n Set the name attribute of\n algorithm to \"X25519\".\n

" + }, + { + "html": "

\n Let publicKey be a new CryptoKey associated with the\n relevant global object\n of this [HTML], and\n representing the public key of the generated key pair.\n

" + }, + { + "html": "

\n Set the [[type]] internal slot of\n publicKey to \"public\"\n

" + }, + { + "html": "

\n Set the [[algorithm]] internal\n slot of publicKey to algorithm.\n

" + }, + { + "html": "

\n Set the [[extractable]] internal\n slot of publicKey to true.\n

" + }, + { + "html": "

\n Set the [[usages]] internal slot of\n publicKey to be the empty list.\n

" + }, + { + "html": "

\n Let privateKey be a new CryptoKey associated with the\n relevant global object\n of this [HTML], and\n representing the private key of the generated key pair.\n

" + }, + { + "html": "

\n Set the [[type]] internal slot of\n privateKey to \"private\"\n

" + }, + { + "html": "

\n Set the [[algorithm]] internal\n slot of privateKey to algorithm.\n

" + }, + { + "html": "

\n Set the [[extractable]] internal\n slot of privateKey to extractable.\n

" + }, + { + "html": "

\n Set the [[usages]] internal slot of\n privateKey to be the\n usage intersection of\n usages and [ \"deriveKey\", \"deriveBits\" ].\n

" + }, + { + "html": "

\n Let result be a new CryptoKeyPair\n dictionary.\n

" + }, + { + "html": "

\n Set the publicKey attribute\n of result to be publicKey.\n

" + }, + { + "html": "

\n Set the privateKey attribute\n of result to be privateKey.\n

" + }, + { + "html": "

\n Return the result of converting result to an ECMAScript Object, as\n defined by [WebIDL].\n

" + } + ] + }, + { + "html": "", + "rationale": "let", + "steps": [ + { + "html": "

Let keyData be the key data to be imported.

" + }, + { + "html": "
\n
If format is \"spki\":
\n
\n \n
\n
If format is \"pkcs8\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
If format is \"raw\":
\n
\n \n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", + "rationale": ".switch", + "steps": [ + { + "operation": "switch", + "steps": [ + { + "case": "If format is \"spki\":", + "html": "", + "rationale": "if", + "steps": [ + { + "html": "

\n If usages is not empty\n then throw a\n SyntaxError.\n

" + }, + { + "html": "

\n Let spki be the result of running the\n parse a subjectPublicKeyInfo\n algorithm over keyData.\n

" + }, + { + "html": "

\n If an error occurred while parsing,\n then throw a\n DataError.\n

" + }, + { + "html": "

\n If the algorithm object identifier field of the\n algorithm AlgorithmIdentifier field of spki is\n not equal to the id-X25519\n object identifier defined in [RFC8410],\n then throw a\n DataError.\n

" + }, + { + "html": "

\n If the parameters field of the algorithm\n AlgorithmIdentifier field of spki is present,\n then throw a\n DataError.\n

" + }, + { + "html": "

\n Let publicKey be the X25519 public key identified by\n the subjectPublicKey field of spki.\n

" + }, + { + "html": "

\n Let key be a new CryptoKey associated with the\n relevant global object\n of this [HTML], and\n that represents publicKey.\n

" + }, + { + "html": "

\n Set the [[type]] internal slot\n of key to \"public\"\n

" + }, + { + "html": "

\n Let algorithm be a new KeyAlgorithm.\n

" + }, + { + "html": "

\n Set the name attribute of\n algorithm to \"X25519\".\n

" + }, + { + "html": "

\n Set the [[algorithm]]\n internal slot of key to algorithm.\n

" + } + ] + }, + { + "case": "If format is \"pkcs8\":", + "html": "", + "rationale": "if", + "steps": [ + { + "html": "

\n If usages contains an entry which is not\n \"deriveKey\" or \"deriveBits\"\n then throw a\n SyntaxError.\n

" + }, + { + "html": "

\n Let privateKeyInfo be the result of running the\n parse a privateKeyInfo\n algorithm over keyData.\n

" + }, + { + "html": "

\n If an error occurs while parsing,\n then throw a\n DataError.\n

" + }, + { + "html": "

\n If the algorithm object identifier field of the\n privateKeyAlgorithm PrivateKeyAlgorithm field of\n privateKeyInfo is not equal to the\n id-X25519 object identifier defined in [RFC8410],\n then throw a\n DataError.\n

" + }, + { + "html": "

\n If the parameters field of the\n privateKeyAlgorithm PrivateKeyAlgorithmIdentifier field\n of privateKeyInfo is present,\n then throw a\n DataError.\n

" + }, + { + "html": "

\n Let curvePrivateKey be the result of performing the\n parse an ASN.1 structure\n algorithm, with data as the privateKey field\n of privateKeyInfo, structure as the ASN.1\n CurvePrivateKey structure specified in Section 7 of [RFC8410], and exactData set to true.\n

" + }, + { + "html": "

\n If an error occurred while parsing,\n then throw a\n DataError.\n

" + }, + { + "html": "

\n Let key be a new CryptoKey associated with the\n relevant global object\n of this [HTML], and\n that represents the X25519 private key identified by curvePrivateKey.\n

" + }, + { + "html": "

\n Set the [[type]] internal slot\n of key to \"private\"\n

" + }, + { + "html": "

\n Let algorithm be a new KeyAlgorithm.\n

" + }, + { + "html": "

\n Set the name attribute of\n algorithm to \"X25519\".\n

" + }, + { + "html": "

\n Set the [[algorithm]]\n internal slot of key to algorithm.\n

" + } + ] + }, + { + "case": "If format is \"jwk\":", + "html": "", + "rationale": "if", + "steps": [ + { + "html": "
\n
If keyData is a JsonWebKey dictionary:
\n

Let jwk equal keyData.

\n
Otherwise:
\n

Throw a DataError.

\n
", + "rationale": ".switch", + "steps": [ + { + "operation": "switch", + "steps": [ + { + "case": "If keyData is a JsonWebKey dictionary:", + "html": "

Let jwk equal keyData.

" + }, + { + "case": "Otherwise:", + "html": "

Throw a DataError.

" + } + ] + } + ] + }, + { + "html": "

\n If the d field is present and if usages\n contains an entry which is not\n \"deriveKey\" or \"deriveBits\"\n then throw a\n SyntaxError.\n

" + }, + { + "html": "

\n If the d field is not present and if usages is not\n empty\n then throw a\n SyntaxError.\n

" + }, + { + "html": "

\n If the kty field of jwk is not\n \"OKP\",\n then throw a\n DataError.\n

" + }, + { + "html": "

\n If the crv field of jwk is not\n \"X25519\",\n then throw a\n DataError.\n

" + }, + { + "html": "

\n If usages is non-empty and the use field of jwk is present\n and is not equal to \"enc\" then throw a\n DataError.\n

" + }, + { + "html": "

\n If the key_ops field of jwk is present, and\n is invalid according to the requirements of JSON Web\n Key [JWK], or it does not contain all of the specified usages\n values,\n then throw a\n DataError.\n

" + }, + { + "html": "

\n If the ext field of jwk is present and\n has the value false and extractable is true,\n then throw a\n DataError.\n

" + }, + { + "html": "
\n
If the d field is present:
\n
\n \n
\n
Otherwise:
\n
\n \n
\n
", + "rationale": ".switch", + "steps": [ + { + "operation": "switch", + "steps": [ + { + "case": "If the d field is present:", + "html": "", + "rationale": "if", + "steps": [ + { + "html": "

\n If jwk does not meet the requirements of\n the JWK private key format described in Section 2\n of [RFC8037], then throw a DataError.\n

" + }, + { + "html": "

\n Let key be a new CryptoKey object that represents the\n X25519 private key identified by interpreting\n jwk according to Section 2 of [RFC8037].\n

" + }, + { + "html": "

\n Set the [[type]]\n internal slot of Key to \"private\".\n

" + } + ] + }, + { + "case": "Otherwise:", + "html": "", + "rationale": "if", + "steps": [ + { + "html": "

\n If jwk does not meet the requirements of\n the JWK public key format described in Section 2\n of [RFC8037], then throw a DataError.\n

" + }, + { + "html": "

\n Let key be a new CryptoKey object that represents the\n X25519 public key identified by interpreting\n jwk according to Section 2 of [RFC8037].\n

" + }, + { + "html": "

\n Set the [[type]]\n internal slot of Key to \"public\".\n

" + } + ] + } + ] + } + ] + }, + { + "html": "

\n Let algorithm be a new instance of a KeyAlgorithm object.\n

" + }, + { + "html": "

\n Set the name attribute of\n algorithm to \"X25519\".\n

" + }, + { + "html": "

\n Set the [[algorithm]]\n internal slot of key to algorithm.\n

" + } + ] + }, + { + "case": "If format is \"raw\":", + "html": "", + "rationale": "if", + "steps": [ + { + "html": "

\n If usages is not empty\n then throw a\n SyntaxError.\n

" + }, + { + "html": "

\n Let algorithm be a new KeyAlgorithm object.\n

" + }, + { + "html": "

\n Set the name attribute of\n algorithm to \"X25519\".\n

" + }, + { + "html": "

\n Let key be a new CryptoKey associated with the\n relevant global object\n of this [HTML], and\n representing the key data provided in keyData.\n

" + }, + { + "html": "

\n Set the [[type]] internal slot\n of key to \"public\"\n

" + }, + { + "html": "

\n Set the [[algorithm]]\n internal slot of key to algorithm.\n

" + } + ] + }, + { + "case": "Otherwise:", + "html": "

\n throw a\n NotSupportedError.\n

" + } + ] + } + ] + }, + { + "html": "

\n Return key\n

" + } + ] + }, + { + "html": "", + "rationale": "let", + "steps": [ + { + "html": "

\n Let key be the CryptoKey to be\n exported.\n

" + }, + { + "html": "

\n If the underlying cryptographic key material represented by the [[handle]] internal slot of key\n cannot be accessed, then throw an OperationError.\n

" + }, + { + "html": "
\n
If format is \"spki\":
\n
\n \n
\n
If format is \"pkcs8\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
\n If format is \"raw\":\n
\n
\n \n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", + "rationale": ".switch", + "steps": [ + { + "operation": "switch", + "steps": [ + { + "case": "If format is \"spki\":", + "html": "", + "rationale": "if", + "steps": [ + { + "html": "

\n If the [[type]] internal slot\n of key is not \"public\", then throw an InvalidAccessError.\n

" + }, + { + "html": "

\n Let data be an instance of the subjectPublicKeyInfo\n ASN.1 structure defined in [RFC5280]\n with the following properties:\n

\n " + }, + { + "html": "

\n Let result be a new ArrayBuffer associated with the\n relevant global object\n of this [HTML], and containing\n data.\n

" + } + ] + }, + { + "case": "If format is \"pkcs8\":", + "html": "", + "rationale": "if", + "steps": [ + { + "html": "

\n If the [[type]] internal slot\n of key is not \"private\", then throw an InvalidAccessError.\n

" + }, + { + "html": "

\n Let data be an instance of the privateKeyInfo\n ASN.1 structure defined in [RFC5208]\n with the following properties:\n

\n " + }, + { + "html": "

\n Let result be a new ArrayBuffer associated with the\n relevant global object\n of this [HTML], and containing\n data.\n

" + } + ] + }, + { + "case": "If format is \"jwk\":", + "html": "", + "rationale": "let", + "steps": [ + { + "html": "

\n Let jwk be a new JsonWebKey\n dictionary.\n

" + }, + { + "html": "

\n Set the kty attribute of jwk to\n \"OKP\".\n

" + }, + { + "html": "

\n Set the crv attribute of jwk to\n \"X25519\".\n

" + }, + { + "html": "

\n Set the x attribute of jwk according to the\n definition in Section 2 of [RFC8037].\n

" + }, + { + "html": "
\n
\n If the [[type]] internal slot\n of key is \"private\"\n
\n
\n Set the d attribute of jwk according to the\n definition in Section 2 of [RFC8037].\n
\n
", + "rationale": ".switch", + "steps": [ + { + "operation": "switch", + "steps": [ + { + "case": "If the [[type]] internal slot of key is \"private\"", + "html": "Set the d attribute of jwk according to the\n definition in Section 2 of [RFC8037]." + } + ] + } + ] + }, + { + "html": "

\n Set the key_ops attribute of jwk to the usages attribute of key.\n

" + }, + { + "html": "

\n Set the ext attribute of jwk to the [[extractable]] internal slot\n of key.\n

" + }, + { + "html": "

\n Let result be the result of converting jwk\n to an ECMAScript Object, as defined by [WebIDL].\n

" + } + ] + }, + { + "case": "If format is \"raw\":", + "html": "", + "rationale": "if", + "steps": [ + { + "html": "

\n If the [[type]] internal slot\n of key is not \"public\", then throw an InvalidAccessError.\n

" + }, + { + "html": "

\n Let data be an octet string representing the X25519\n public key represented by the [[handle]] internal slot of\n key.\n

" + }, + { + "html": "

\n Let result be a new ArrayBuffer associated with the\n relevant global object\n of this [HTML], and containing\n data.\n

" + } + ] + }, + { + "case": "Otherwise:", + "html": "

\n throw a\n NotSupportedError.\n

" + } + ] + } + ] + }, + { + "html": "

\n Return result.\n

" + } + ] + }, { "html": "", "rationale": "if", "steps": [ { - "html": "

\n If the counter member of\n normalizedAlgorithm does not have length 16\n bytes,\n then throw an\n OperationError.\n

" + "html": "

\n If the counter member of\n normalizedAlgorithm does not have length 16\n bytes,\n then throw an\n OperationError.\n

" }, { - "html": "

\n If the length member of\n normalizedAlgorithm is zero or is greater\n than 128,\n then throw an\n OperationError.\n

" + "html": "

\n If the length member of\n normalizedAlgorithm is zero or is greater\n than 128,\n then throw an\n OperationError.\n

" }, { "html": "

\n Let ciphertext be the result of performing the CTR Encryption\n operation described in Section 6.5 of [NIST-SP800-38A] using AES as the block cipher, the contents of the counter member of\n normalizedAlgorithm as the initial value of the counter block, the\n length member of\n normalizedAlgorithm as the input parameter m to the\n standard counter block incrementing function defined in Appendix B.1 of\n [NIST-SP800-38A] and the contents of\n plaintext as the input plaintext.\n

" }, { - "html": "

\n Return the result of creating\n an ArrayBuffer containing ciphertext.\n

" + "html": "

\n Return the result of creating\n an ArrayBuffer containing ciphertext.\n

" } ] }, @@ -4492,16 +5417,16 @@ "rationale": "if", "steps": [ { - "html": "

\n If the counter member of\n normalizedAlgorithm does not have length 16\n bytes,\n then throw an\n OperationError.\n

" + "html": "

\n If the counter member of\n normalizedAlgorithm does not have length 16\n bytes,\n then throw an\n OperationError.\n

" }, { - "html": "

\n If the length member of\n normalizedAlgorithm is zero or is greater\n than 128,\n then throw an\n OperationError.\n

" + "html": "

\n If the length member of\n normalizedAlgorithm is zero or is greater\n than 128,\n then throw an\n OperationError.\n

" }, { "html": "

\n Let plaintext be the result of performing the CTR Decryption\n operation described in Section 6.5 of [NIST-SP800-38A] using AES as the block cipher, the contents of the counter member of\n normalizedAlgorithm as the initial value of the counter block, the\n length member of\n normalizedAlgorithm as the input parameter m to the\n standard counter block incrementing function defined in Appendix B.1 of\n [NIST-SP800-38A] and the contents of\n ciphertext as the input ciphertext.\n

" }, { - "html": "

\n Return the result of creating\n an ArrayBuffer containing plaintext.\n

" + "html": "

\n Return the result of creating\n an ArrayBuffer containing plaintext.\n

" } ] }, @@ -4510,40 +5435,40 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains any entry which is not\n one of \"encrypt\", \"decrypt\",\n \"wrapKey\" or \"unwrapKey\",\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains any entry which is not\n one of \"encrypt\", \"decrypt\",\n \"wrapKey\" or \"unwrapKey\",\n then throw a\n SyntaxError.\n

" }, { - "html": "

\n If the length member of\n normalizedAlgorithm is not equal to one of\n 128, 192 or 256,\n then throw an\n OperationError.\n

" + "html": "

\n If the length member of\n normalizedAlgorithm is not equal to one of\n 128, 192 or 256,\n then throw an\n OperationError.\n

" }, { "html": "

\n Generate an AES key of length\n equal to the length member of\n normalizedAlgorithm.\n

" }, { - "html": "

\n If the key generation step fails,\n then throw an\n OperationError.\n

" + "html": "

\n If the key generation step fails,\n then throw an\n OperationError.\n

" }, { - "html": "

\n Let key be a new\n CryptoKey object representing the\n generated AES key.\n

" + "html": "

\n Let key be a new\n CryptoKey object representing the\n generated AES key.\n

" }, { "html": "

\n Let algorithm be a new\n AesKeyAlgorithm.\n

" }, { - "html": "

\n Set the name attribute of\n algorithm to \"AES-CTR\".\n

" + "html": "

\n Set the name attribute of\n algorithm to \"AES-CTR\".\n

" }, { "html": "

\n Set the length attribute of\n algorithm to equal the\n length member of\n normalizedAlgorithm.\n

" }, { - "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" + "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" }, { - "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" + "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" }, { - "html": "

\n Set the [[extractable]] internal\n slot of key to be extractable.\n

" + "html": "

\n Set the [[extractable]] internal\n slot of key to be extractable.\n

" }, { - "html": "

\n Set the [[usages]] internal slot of\n key to be usages.\n

" + "html": "

\n Set the [[usages]] internal slot of\n key to be usages.\n

" }, { "html": "

\n Return key.\n

" @@ -4555,10 +5480,10 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains an entry which is not\n one of \"encrypt\", \"decrypt\",\n \"wrapKey\" or \"unwrapKey\",\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains an entry which is not\n one of \"encrypt\", \"decrypt\",\n \"wrapKey\" or \"unwrapKey\",\n then throw a\n SyntaxError.\n

" }, { - "html": "
\n
If format is \"raw\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n throw a\n NotSupportedError.\n
\n
", + "html": "
\n
If format is \"raw\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n throw a\n NotSupportedError.\n
\n
", "rationale": ".switch", "steps": [ { @@ -4570,10 +5495,10 @@ "rationale": "let", "steps": [ { - "html": "

\n Let data be the octet string contained in keyData.\n

" + "html": "

\n Let data be the octet string contained in keyData.\n

" }, { - "html": "

\n If the length in bits of data is not 128, 192 or 256\n then throw a\n DataError.\n

" + "html": "

\n If the length in bits of data is not 128, 192 or 256\n then throw a\n DataError.\n

" } ] }, @@ -4583,7 +5508,7 @@ "rationale": "if", "steps": [ { - "html": "
\n
If keyData is a JsonWebKey dictionary:
\n

Let jwk equal keyData.

\n
Otherwise:
\n

Throw a DataError.

\n
", + "html": "
\n
If keyData is a JsonWebKey dictionary:
\n

Let jwk equal keyData.

\n
Otherwise:
\n

Throw a DataError.

\n
", "rationale": ".switch", "steps": [ { @@ -4595,23 +5520,23 @@ }, { "case": "Otherwise:", - "html": "

Throw a DataError.

" + "html": "

Throw a DataError.

" } ] } ] }, { - "html": "

\n If the kty field of jwk is not\n \"oct\",\n then throw a\n DataError.\n

" + "html": "

\n If the kty field of jwk is not\n \"oct\",\n then throw a\n DataError.\n

" }, { - "html": "

\n If jwk does not meet the requirements of\n Section 6.4 of JSON Web Algorithms [JWA],\n then throw a\n DataError.\n

" + "html": "

\n If jwk does not meet the requirements of\n Section 6.4 of JSON Web Algorithms [JWA],\n then throw a\n DataError.\n

" }, { - "html": "

\n Let data be the octet string obtained by decoding the\n k field of jwk.\n

" + "html": "

\n Let data be the octet string obtained by decoding the\n k field of jwk.\n

" }, { - "html": "
\n
If data has length 128 bits:
\n
\n If the alg field of jwk is present, and is\n not \"A128CTR\", then throw a DataError.\n
\n
If data has length 192 bits:
\n
\n If the alg field of jwk is present, and is\n not \"A192CTR\", then throw a DataError.\n
\n
If data has length 256 bits:
\n
\n If the alg field of jwk is present, and is\n not \"A256CTR\", then throw a DataError.\n
\n
Otherwise:
\n
\n throw a\n DataError.
\n
", + "html": "
\n
If data has length 128 bits:
\n
\n If the alg field of jwk is present, and is\n not \"A128CTR\", then throw a DataError.\n
\n
If data has length 192 bits:
\n
\n If the alg field of jwk is present, and is\n not \"A192CTR\", then throw a DataError.\n
\n
If data has length 256 bits:
\n
\n If the alg field of jwk is present, and is\n not \"A256CTR\", then throw a DataError.\n
\n
Otherwise:
\n
\n throw a\n DataError.
\n
", "rationale": ".switch", "steps": [ { @@ -4619,60 +5544,60 @@ "steps": [ { "case": "If data has length 128 bits:", - "html": "If the alg field of jwk is present, and is\n not \"A128CTR\", then throw a DataError." + "html": "If the alg field of jwk is present, and is\n not \"A128CTR\", then throw a DataError." }, { "case": "If data has length 192 bits:", - "html": "If the alg field of jwk is present, and is\n not \"A192CTR\", then throw a DataError." + "html": "If the alg field of jwk is present, and is\n not \"A192CTR\", then throw a DataError." }, { "case": "If data has length 256 bits:", - "html": "If the alg field of jwk is present, and is\n not \"A256CTR\", then throw a DataError." + "html": "If the alg field of jwk is present, and is\n not \"A256CTR\", then throw a DataError." }, { "case": "Otherwise:", - "html": "throw a\n DataError." + "html": "throw a\n DataError." } ] } ] }, { - "html": "

\n If usages is non-empty and the use field of jwk is present and is\n not \"enc\",\n then throw a\n DataError.\n

" + "html": "

\n If usages is non-empty and the use field of jwk is present and is\n not \"enc\",\n then throw a\n DataError.\n

" }, { - "html": "

\n If the key_ops field of jwk is present, and\n is invalid according to the requirements of\n JSON Web Key [JWK] or\n does not contain all of the specified usages values,\n then throw a\n DataError.\n

" + "html": "

\n If the key_ops field of jwk is present, and\n is invalid according to the requirements of\n JSON Web Key [JWK] or\n does not contain all of the specified usages values,\n then throw a\n DataError.\n

" }, { - "html": "

\n If the ext field of jwk is present and\n has the value false and extractable is true,\n then throw a\n DataError.\n

" + "html": "

\n If the ext field of jwk is present and\n has the value false and extractable is true,\n then throw a\n DataError.\n

" } ] }, { "case": "Otherwise:", - "html": "throw a\n NotSupportedError." + "html": "throw a\n NotSupportedError." } ] } ] }, { - "html": "

\n Let key be a new CryptoKey object representing an AES key with\n value data.\n

" + "html": "

\n Let key be a new CryptoKey object representing an AES key with\n value data.\n

" }, { - "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" + "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" }, { "html": "

\n Let algorithm be a new\n AesKeyAlgorithm.\n

" }, { - "html": "

\n Set the name attribute of\n algorithm to \"AES-CTR\".\n

" + "html": "

\n Set the name attribute of\n algorithm to \"AES-CTR\".\n

" }, { "html": "

\n Set the length attribute of\n algorithm to the length, in bits, of data.\n

" }, { - "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" + "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" }, { "html": "

\n Return key.\n

" @@ -4684,10 +5609,10 @@ "rationale": "if", "steps": [ { - "html": "

\n If the underlying cryptographic key material represented by the [[handle]] internal slot of key\n cannot be accessed, then throw an OperationError.\n

" + "html": "

\n If the underlying cryptographic key material represented by the [[handle]] internal slot of key\n cannot be accessed, then throw an OperationError.\n

" }, { - "html": "
\n
If format is \"raw\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", + "html": "
\n
If format is \"raw\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", "rationale": ".switch", "steps": [ { @@ -4699,10 +5624,10 @@ "rationale": "let", "steps": [ { - "html": "

\n Let data be the raw octets of the key represented by [[handle]] internal slot of\n key.\n

" + "html": "

\n Let data be the raw octets of the key represented by [[handle]] internal slot of\n key.\n

" }, { - "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" + "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" } ] }, @@ -4712,13 +5637,13 @@ "rationale": "let", "steps": [ { - "html": "

\n Let jwk be a new JsonWebKey\n dictionary.\n

" + "html": "

\n Let jwk be a new JsonWebKey\n dictionary.\n

" }, { "html": "

\n Set the kty attribute of jwk to the\n string \"oct\".\n

" }, { - "html": "

\n Set the k attribute of jwk to be a string\n containing the raw octets of the key represented by [[handle]] internal slot of\n key, encoded according to Section 6.4 of JSON Web Algorithms [JWA].\n

" + "html": "

\n Set the k attribute of jwk to be a string\n containing the raw octets of the key represented by [[handle]] internal slot of\n key, encoded according to Section 6.4 of JSON Web Algorithms [JWA].\n

" }, { "html": "
\n
If the length attribute of\n key is 128:
\n
Set the alg attribute of jwk to\n the string \"A128CTR\".
\n
If the length attribute of\n key is 192:
\n
Set the alg attribute of jwk to\n the string \"A192CTR\".
\n
If the length attribute of\n key is 256:
\n
Set the alg attribute of jwk to\n the string \"A256CTR\".
\n
", @@ -4744,10 +5669,10 @@ ] }, { - "html": "

\n Set the key_ops attribute of jwk to equal the\n [[usages]] internal slot of\n key.\n

" + "html": "

\n Set the key_ops attribute of jwk to equal the\n [[usages]] internal slot of\n key.\n

" }, { - "html": "

\n Set the ext attribute of jwk to equal the [[extractable]] internal slot\n of key.\n

" + "html": "

\n Set the ext attribute of jwk to equal the [[extractable]] internal slot\n of key.\n

" }, { "html": "

\n Let result be the result of converting jwk\n to an ECMAScript Object, as defined by [WebIDL].\n

" @@ -4756,7 +5681,7 @@ }, { "case": "Otherwise:", - "html": "

\n throw a\n NotSupportedError.\n

" + "html": "

\n throw a\n NotSupportedError.\n

" } ] } @@ -4772,7 +5697,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If the length member of\n normalizedDerivedKeyAlgorithm is not 128, 192 or 256,\n then throw a\n OperationError.\n

" + "html": "

\n If the length member of\n normalizedDerivedKeyAlgorithm is not 128, 192 or 256,\n then throw a\n OperationError.\n

" }, { "html": "

\n Return the length member of\n normalizedDerivedKeyAlgorithm.\n

" @@ -4784,7 +5709,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If the iv member of\n normalizedAlgorithm does not have length 16\n bytes,\n then throw an\n OperationError.\n

" + "html": "

\n If the iv member of\n normalizedAlgorithm does not have length 16\n bytes,\n then throw an\n OperationError.\n

" }, { "html": "

\n Let paddedPlaintext be the result of adding padding octets to\n the contents of plaintext\n according to the procedure defined in Section 10.3\n of [RFC2315], step 2, with a value of\n k of 16.\n

" @@ -4793,7 +5718,7 @@ "html": "

\n Let ciphertext be the result of performing the CBC Encryption\n operation described in Section 6.2 of [NIST-SP800-38A] using AES as the block cipher, the contents of the iv member of normalizedAlgorithm as\n the IV input parameter and paddedPlaintext\n as the input plaintext.\n

" }, { - "html": "

\n Return the result of creating\n an ArrayBuffer containing ciphertext.\n

" + "html": "

\n Return the result of creating\n an ArrayBuffer containing ciphertext.\n

" } ] }, @@ -4802,7 +5727,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If the iv member of\n normalizedAlgorithm does not have length 16\n bytes,\n then throw an\n OperationError.\n

" + "html": "

\n If the iv member of\n normalizedAlgorithm does not have length 16\n bytes,\n then throw an\n OperationError.\n

" }, { "html": "

\n Let paddedPlaintext be the result of performing the CBC Decryption\n operation described in Section 6.2 of [NIST-SP800-38A] using AES as the block cipher, the contents of the iv member of normalizedAlgorithm as\n the IV input parameter and the contents of\n ciphertext as the input ciphertext.\n

" @@ -4811,13 +5736,13 @@ "html": "

\n Let p be the value of the last octet of paddedPlaintext.\n

" }, { - "html": "

\n If p is zero or greater than 16, or if any of the last p\n octets of paddedPlaintext have a value which is not p,\n then throw an\n OperationError.\n

" + "html": "

\n If p is zero or greater than 16, or if any of the last p\n octets of paddedPlaintext have a value which is not p,\n then throw an\n OperationError.\n

" }, { "html": "

\n Let plaintext be the result of removing p octets from\n the end of paddedPlaintext.\n

" }, { - "html": "

\n Return the result of creating\n an ArrayBuffer containing plaintext.\n

" + "html": "

\n Return the result of creating\n an ArrayBuffer containing plaintext.\n

" } ] }, @@ -4826,40 +5751,40 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains any entry which is not\n one of \"encrypt\", \"decrypt\",\n \"wrapKey\" or \"unwrapKey\",\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains any entry which is not\n one of \"encrypt\", \"decrypt\",\n \"wrapKey\" or \"unwrapKey\",\n then throw a\n SyntaxError.\n

" }, { - "html": "

\n If the length member of\n normalizedAlgorithm is not equal to one of\n 128, 192 or 256,\n then throw an\n OperationError.\n

" + "html": "

\n If the length member of\n normalizedAlgorithm is not equal to one of\n 128, 192 or 256,\n then throw an\n OperationError.\n

" }, { "html": "

\n Generate an AES key of length\n equal to the length member of\n normalizedAlgorithm.\n

" }, { - "html": "

\n If the key generation step fails,\n then throw an\n OperationError.\n

" + "html": "

\n If the key generation step fails,\n then throw an\n OperationError.\n

" }, { - "html": "

\n Let key be a new\n CryptoKey object representing the\n generated AES key.\n

" + "html": "

\n Let key be a new\n CryptoKey object representing the\n generated AES key.\n

" }, { "html": "

\n Let algorithm be a new\n AesKeyAlgorithm.\n

" }, { - "html": "

\n Set the name attribute of\n algorithm to \"AES-CBC\".\n

" + "html": "

\n Set the name attribute of\n algorithm to \"AES-CBC\".\n

" }, { "html": "

\n Set the length attribute of\n algorithm to equal the\n length member of\n normalizedAlgorithm.\n

" }, { - "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" + "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" }, { - "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" + "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" }, { - "html": "

\n Set the [[extractable]] internal\n slot of key to be extractable.\n

" + "html": "

\n Set the [[extractable]] internal\n slot of key to be extractable.\n

" }, { - "html": "

\n Set the [[usages]] internal slot of\n key to be usages.\n

" + "html": "

\n Set the [[usages]] internal slot of\n key to be usages.\n

" }, { "html": "

\n Return key.\n

" @@ -4871,10 +5796,10 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains an entry which is not\n one of \"encrypt\", \"decrypt\",\n \"wrapKey\" or \"unwrapKey\",\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains an entry which is not\n one of \"encrypt\", \"decrypt\",\n \"wrapKey\" or \"unwrapKey\",\n then throw a\n SyntaxError.\n

" }, { - "html": "
\n
If format is \"raw\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n throw a\n NotSupportedError\n
\n
", + "html": "
\n
If format is \"raw\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n throw a\n NotSupportedError\n
\n
", "rationale": ".switch", "steps": [ { @@ -4886,10 +5811,10 @@ "rationale": "let", "steps": [ { - "html": "

\n Let data be the octet string contained in keyData.\n

" + "html": "

\n Let data be the octet string contained in keyData.\n

" }, { - "html": "

\n If the length in bits of data is not 128, 192 or 256\n then throw a\n DataError.\n

" + "html": "

\n If the length in bits of data is not 128, 192 or 256\n then throw a\n DataError.\n

" } ] }, @@ -4899,7 +5824,7 @@ "rationale": "if", "steps": [ { - "html": "
\n
If keyData is a JsonWebKey dictionary:
\n

Let jwk equal keyData.

\n
Otherwise:
\n

Throw a DataError.

\n
", + "html": "
\n
If keyData is a JsonWebKey dictionary:
\n

Let jwk equal keyData.

\n
Otherwise:
\n

Throw a DataError.

\n
", "rationale": ".switch", "steps": [ { @@ -4911,23 +5836,23 @@ }, { "case": "Otherwise:", - "html": "

Throw a DataError.

" + "html": "

Throw a DataError.

" } ] } ] }, { - "html": "

\n If the kty field of jwk is not\n \"oct\",\n then throw a\n DataError.\n

" + "html": "

\n If the kty field of jwk is not\n \"oct\",\n then throw a\n DataError.\n

" }, { - "html": "

\n If jwk does not meet the requirements of\n Section 6.4 of JSON Web Algorithms [JWA],\n then throw a\n DataError.\n

" + "html": "

\n If jwk does not meet the requirements of\n Section 6.4 of JSON Web Algorithms [JWA],\n then throw a\n DataError.\n

" }, { - "html": "

\n Let data be the octet string obtained by decoding the\n k field of jwk.\n

" + "html": "

\n Let data be the octet string obtained by decoding the\n k field of jwk.\n

" }, { - "html": "
\n
If data has length 128 bits:
\n
If the alg field of jwk is present, and is\n not \"A128CBC\",\n then throw a\n DataError.
\n
If data has length 192 bits:
\n
If the alg field of jwk is present, and is\n not \"A192CBC\",\n then throw a\n DataError.
\n
If data has length 256 bits:
\n
If the alg field of jwk is present, and is\n not \"A256CBC\",\n then throw a\n DataError.
\n
Otherwise:
\n
\n throw a\n DataError.\n
\n
", + "html": "
\n
If data has length 128 bits:
\n
If the alg field of jwk is present, and is\n not \"A128CBC\",\n then throw a\n DataError.
\n
If data has length 192 bits:
\n
If the alg field of jwk is present, and is\n not \"A192CBC\",\n then throw a\n DataError.
\n
If data has length 256 bits:
\n
If the alg field of jwk is present, and is\n not \"A256CBC\",\n then throw a\n DataError.
\n
Otherwise:
\n
\n throw a\n DataError.\n
\n
", "rationale": ".switch", "steps": [ { @@ -4935,60 +5860,60 @@ "steps": [ { "case": "If data has length 128 bits:", - "html": "If the alg field of jwk is present, and is\n not \"A128CBC\",\n then throw a\n DataError." + "html": "If the alg field of jwk is present, and is\n not \"A128CBC\",\n then throw a\n DataError." }, { "case": "If data has length 192 bits:", - "html": "If the alg field of jwk is present, and is\n not \"A192CBC\",\n then throw a\n DataError." + "html": "If the alg field of jwk is present, and is\n not \"A192CBC\",\n then throw a\n DataError." }, { "case": "If data has length 256 bits:", - "html": "If the alg field of jwk is present, and is\n not \"A256CBC\",\n then throw a\n DataError." + "html": "If the alg field of jwk is present, and is\n not \"A256CBC\",\n then throw a\n DataError." }, { "case": "Otherwise:", - "html": "throw a\n DataError." + "html": "throw a\n DataError." } ] } ] }, { - "html": "

\n If usages is non-empty and the use field of jwk is present and is\n not \"enc\",\n then throw a\n DataError.\n

" + "html": "

\n If usages is non-empty and the use field of jwk is present and is\n not \"enc\",\n then throw a\n DataError.\n

" }, { - "html": "

\n If the key_ops field of jwk is present, and\n is invalid according to the requirements of\n JSON Web Key [JWK] or\n does not contain all of the specified usages values,\n then throw a\n DataError.\n

" + "html": "

\n If the key_ops field of jwk is present, and\n is invalid according to the requirements of\n JSON Web Key [JWK] or\n does not contain all of the specified usages values,\n then throw a\n DataError.\n

" }, { - "html": "

\n If the ext field of jwk is present and\n has the value false and extractable is true,\n then throw a\n DataError.\n

" + "html": "

\n If the ext field of jwk is present and\n has the value false and extractable is true,\n then throw a\n DataError.\n

" } ] }, { "case": "Otherwise:", - "html": "throw a\n NotSupportedError" + "html": "throw a\n NotSupportedError" } ] } ] }, { - "html": "

\n Let key be a new CryptoKey\n object representing an AES key with value data.\n

" + "html": "

\n Let key be a new CryptoKey\n object representing an AES key with value data.\n

" }, { - "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" + "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" }, { "html": "

\n Let algorithm be a new\n AesKeyAlgorithm.\n

" }, { - "html": "

\n Set the name attribute of\n algorithm to \"AES-CBC\".\n

" + "html": "

\n Set the name attribute of\n algorithm to \"AES-CBC\".\n

" }, { "html": "

\n Set the length attribute of\n algorithm to the length, in bits, of data.\n

" }, { - "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" + "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" }, { "html": "

\n Return key.\n

" @@ -5000,10 +5925,10 @@ "rationale": "if", "steps": [ { - "html": "

\n If the underlying cryptographic key material represented by the [[handle]] internal slot of key\n cannot be accessed, then throw an OperationError.\n

" + "html": "

\n If the underlying cryptographic key material represented by the [[handle]] internal slot of key\n cannot be accessed, then throw an OperationError.\n

" }, { - "html": "
\n
If format is \"raw\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", + "html": "
\n
If format is \"raw\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", "rationale": ".switch", "steps": [ { @@ -5015,10 +5940,10 @@ "rationale": "let", "steps": [ { - "html": "

\n Let data be the raw octets of the key represented by [[handle]] internal slot of\n key.\n

" + "html": "

\n Let data be the raw octets of the key represented by [[handle]] internal slot of\n key.\n

" }, { - "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" + "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" } ] }, @@ -5028,13 +5953,13 @@ "rationale": "let", "steps": [ { - "html": "

Let jwk be a new JsonWebKey dictionary.

" + "html": "

Let jwk be a new JsonWebKey dictionary.

" }, { "html": "

\n Set the kty attribute of jwk to the\n string \"oct\".\n

" }, { - "html": "

\n Set the k attribute of jwk to be a string\n containing the raw octets of the key represented by [[handle]] internal slot of\n key, encoded according to Section 6.4 of JSON Web Algorithms [JWA].\n

" + "html": "

\n Set the k attribute of jwk to be a string\n containing the raw octets of the key represented by [[handle]] internal slot of\n key, encoded according to Section 6.4 of JSON Web Algorithms [JWA].\n

" }, { "html": "
\n
If the length attribute of\n key is 128:
\n
Set the alg attribute of jwk to\n the string \"A128CBC\".
\n
If the length attribute of\n key is 192:
\n
Set the alg attribute of jwk to\n the string \"A192CBC\".
\n
If the length attribute of\n key is 256:
\n
Set the alg attribute of jwk to\n the string \"A256CBC\".
\n
", @@ -5060,10 +5985,10 @@ ] }, { - "html": "

\n Set the key_ops attribute of jwk to equal the\n usages attribute of key.\n

" + "html": "

\n Set the key_ops attribute of jwk to equal the\n usages attribute of key.\n

" }, { - "html": "

\n Set the ext attribute of jwk to equal the [[extractable]] internal slot\n of key.\n

" + "html": "

\n Set the ext attribute of jwk to equal the [[extractable]] internal slot\n of key.\n

" }, { "html": "

\n Let result be the result of converting jwk\n to an ECMAScript Object, as defined by [WebIDL].\n

" @@ -5072,7 +5997,7 @@ }, { "case": "Otherwise:", - "html": "

\n throw a\n NotSupportedError.\n

" + "html": "

\n throw a\n NotSupportedError.\n

" } ] } @@ -5088,7 +6013,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If the length member of\n normalizedDerivedKeyAlgorithm is not 128, 192 or 256,\n then throw an\n OperationError.\n

" + "html": "

\n If the length member of\n normalizedDerivedKeyAlgorithm is not 128, 192 or 256,\n then throw an\n OperationError.\n

" }, { "html": "

\n Return the length member of\n normalizedDerivedKeyAlgorithm.\n

" @@ -5100,16 +6025,16 @@ "rationale": "if", "steps": [ { - "html": "

\n If plaintext has a length greater than 2^39 - 256\n bytes,\n then throw an\n OperationError.\n

" + "html": "

\n If plaintext has a length greater than 2^39 - 256\n bytes,\n then throw an\n OperationError.\n

" }, { - "html": "

\n If the iv member of\n normalizedAlgorithm has a length greater than 2^64 - 1\n bytes,\n then throw an\n OperationError.\n

" + "html": "

\n If the iv member of\n normalizedAlgorithm has a length greater than 2^64 - 1\n bytes,\n then throw an\n OperationError.\n

" }, { - "html": "

\n If the additionalData member\n of normalizedAlgorithm is present and has a length\n greater than 2^64 - 1 bytes,\n then throw an\n OperationError.\n

" + "html": "

\n If the additionalData member\n of normalizedAlgorithm is present and has a length\n greater than 2^64 - 1 bytes,\n then throw an\n OperationError.\n

" }, { - "html": "
\n
If the tagLength member of\n normalizedAlgorithm is not present:
\n
Let tagLength be 128.
\n
If the tagLength member of\n normalizedAlgorithm is one of 32, 64, 96, 104, 112, 120 or 128:
\n
Let tagLength be equal to the\n tagLength member of\n normalizedAlgorithm
\n
Otherwise:
\n
\n throw an\n OperationError.\n
\n
", + "html": "
\n
If the tagLength member of\n normalizedAlgorithm is not present:
\n
Let tagLength be 128.
\n
If the tagLength member of\n normalizedAlgorithm is one of 32, 64, 96, 104, 112, 120 or 128:
\n
Let tagLength be equal to the\n tagLength member of\n normalizedAlgorithm
\n
Otherwise:
\n
\n throw an\n OperationError.\n
\n
", "rationale": ".switch", "steps": [ { @@ -5125,7 +6050,7 @@ }, { "case": "Otherwise:", - "html": "throw an\n OperationError." + "html": "throw an\n OperationError." } ] } @@ -5141,7 +6066,7 @@ "html": "

\n Let ciphertext be equal to C | T,\n where '|' denotes concatenation.\n

" }, { - "html": "

\n Return the result of creating\n an ArrayBuffer containing ciphertext.\n

" + "html": "

\n Return the result of creating\n an ArrayBuffer containing ciphertext.\n

" } ] }, @@ -5150,7 +6075,7 @@ "rationale": "if", "steps": [ { - "html": "
\n
If the tagLength member of\n normalizedAlgorithm is not present:
\n
Let tagLength be 128.
\n
If the tagLength member of\n normalizedAlgorithm is one of 32, 64, 96, 104, 112, 120 or 128:
\n
Let tagLength be equal to the\n tagLength member of\n normalizedAlgorithm
\n
Otherwise:
\n
\n throw an\n OperationError.\n
\n
", + "html": "
\n
If the tagLength member of\n normalizedAlgorithm is not present:
\n
Let tagLength be 128.
\n
If the tagLength member of\n normalizedAlgorithm is one of 32, 64, 96, 104, 112, 120 or 128:
\n
Let tagLength be equal to the\n tagLength member of\n normalizedAlgorithm
\n
Otherwise:
\n
\n throw an\n OperationError.\n
\n
", "rationale": ".switch", "steps": [ { @@ -5166,20 +6091,20 @@ }, { "case": "Otherwise:", - "html": "throw an\n OperationError." + "html": "throw an\n OperationError." } ] } ] }, { - "html": "

\n If ciphertext has a length less than tagLength bits,\n then throw an\n OperationError.\n

" + "html": "

\n If ciphertext has a length less than tagLength bits,\n then throw an\n OperationError.\n

" }, { - "html": "

\n If the iv member of\n normalizedAlgorithm has a length greater than 2^64 - 1\n bytes,\n then throw an\n OperationError.\n

" + "html": "

\n If the iv member of\n normalizedAlgorithm has a length greater than 2^64 - 1\n bytes,\n then throw an\n OperationError.\n

" }, { - "html": "

\n If the additionalData member\n of normalizedAlgorithm is present and has a length\n greater than 2^64 - 1\n bytes,\n then throw an\n OperationError.\n

" + "html": "

\n If the additionalData member\n of normalizedAlgorithm is present and has a length\n greater than 2^64 - 1\n bytes,\n then throw an\n OperationError.\n

" }, { "html": "

\n Let tag be the last tagLength bits of\n ciphertext.\n

" @@ -5199,7 +6124,7 @@ "steps": [ { "case": "If the result of the algorithm is the indication of inauthenticity, \"FAIL\":", - "html": "throw an\n OperationError" + "html": "throw an\n OperationError" }, { "case": "Otherwise:", @@ -5210,7 +6135,7 @@ ] }, { - "html": "

\n Return the result of creating\n an ArrayBuffer containing plaintext.\n

" + "html": "

\n Return the result of creating\n an ArrayBuffer containing plaintext.\n

" } ] }, @@ -5219,40 +6144,40 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains any entry which is not\n one of \"encrypt\", \"decrypt\",\n \"wrapKey\" or \"unwrapKey\",\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains any entry which is not\n one of \"encrypt\", \"decrypt\",\n \"wrapKey\" or \"unwrapKey\",\n then throw a\n SyntaxError.\n

" }, { - "html": "

\n If the length member of\n normalizedAlgorithm is not equal to one of\n 128, 192 or 256,\n then throw an\n OperationError.\n

" + "html": "

\n If the length member of\n normalizedAlgorithm is not equal to one of\n 128, 192 or 256,\n then throw an\n OperationError.\n

" }, { "html": "

\n Generate an AES key of length\n equal to the length member of\n normalizedAlgorithm.\n

" }, { - "html": "

\n If the key generation step fails,\n then throw an\n OperationError.\n

" + "html": "

\n If the key generation step fails,\n then throw an\n OperationError.\n

" }, { - "html": "

\n Let key be a new\n CryptoKey object representing the\n generated AES key.\n

" + "html": "

\n Let key be a new\n CryptoKey object representing the\n generated AES key.\n

" }, { "html": "

\n Let algorithm be a new\n AesKeyAlgorithm.\n

" }, { - "html": "

\n Set the name attribute of\n algorithm to \"AES-GCM\".\n

" + "html": "

\n Set the name attribute of\n algorithm to \"AES-GCM\".\n

" }, { "html": "

\n Set the length attribute of\n algorithm to equal the\n length member of\n normalizedAlgorithm.\n

" }, { - "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" + "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" }, { - "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" + "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" }, { - "html": "

\n Set the [[extractable]] internal\n slot of key to be extractable.\n

" + "html": "

\n Set the [[extractable]] internal\n slot of key to be extractable.\n

" }, { - "html": "

\n Set the [[usages]] internal slot of\n key to be usages.\n

" + "html": "

\n Set the [[usages]] internal slot of\n key to be usages.\n

" }, { "html": "

\n Return key.\n

" @@ -5264,10 +6189,10 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains an entry which is not\n one of \"encrypt\", \"decrypt\",\n \"wrapKey\" or \"unwrapKey\",\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains an entry which is not\n one of \"encrypt\", \"decrypt\",\n \"wrapKey\" or \"unwrapKey\",\n then throw a\n SyntaxError.\n

" }, { - "html": "
\n
If format is \"raw\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n throw a\n NotSupportedError.\n
\n
", + "html": "
\n
If format is \"raw\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n throw a\n NotSupportedError.\n
\n
", "rationale": ".switch", "steps": [ { @@ -5279,10 +6204,10 @@ "rationale": "let", "steps": [ { - "html": "

\n Let data be the octet string contained in keyData.\n

" + "html": "

\n Let data be the octet string contained in keyData.\n

" }, { - "html": "

\n If the length in bits of data is not 128, 192 or 256\n then throw a\n DataError.\n

" + "html": "

\n If the length in bits of data is not 128, 192 or 256\n then throw a\n DataError.\n

" } ] }, @@ -5292,7 +6217,7 @@ "rationale": "if", "steps": [ { - "html": "
\n
If keyData is a JsonWebKey dictionary:
\n

Let jwk equal keyData.

\n
Otherwise:
\n

Throw a DataError.

\n
", + "html": "
\n
If keyData is a JsonWebKey dictionary:
\n

Let jwk equal keyData.

\n
Otherwise:
\n

Throw a DataError.

\n
", "rationale": ".switch", "steps": [ { @@ -5304,23 +6229,23 @@ }, { "case": "Otherwise:", - "html": "

Throw a DataError.

" + "html": "

Throw a DataError.

" } ] } ] }, { - "html": "

\n If the kty field of jwk is not\n \"oct\",\n then throw a\n DataError.\n

" + "html": "

\n If the kty field of jwk is not\n \"oct\",\n then throw a\n DataError.\n

" }, { - "html": "

\n If jwk does not meet the requirements of\n Section 6.4 of JSON Web Algorithms [JWA],\n then throw a\n DataError.\n

" + "html": "

\n If jwk does not meet the requirements of\n Section 6.4 of JSON Web Algorithms [JWA],\n then throw a\n DataError.\n

" }, { - "html": "

\n Let data be the octet string obtained by decoding the\n k field of jwk.\n

" + "html": "

\n Let data be the octet string obtained by decoding the\n k field of jwk.\n

" }, { - "html": "
\n
If data has length 128 bits:
\n
If the alg field of jwk is present, and is\n not \"A128GCM\",\n then throw a\n DataError.
\n
If data has length 192 bits:
\n
If the alg field of jwk is present, and is\n not \"A192GCM\",\n then throw a\n DataError.
\n
If data has length 256 bits:
\n
If the alg field of jwk is present, and is\n not \"A256GCM\",\n then throw a\n DataError.
\n
Otherwise:
\n
\n throw a\n DataError.\n
\n
", + "html": "
\n
If data has length 128 bits:
\n
If the alg field of jwk is present, and is\n not \"A128GCM\",\n then throw a\n DataError.
\n
If data has length 192 bits:
\n
If the alg field of jwk is present, and is\n not \"A192GCM\",\n then throw a\n DataError.
\n
If data has length 256 bits:
\n
If the alg field of jwk is present, and is\n not \"A256GCM\",\n then throw a\n DataError.
\n
Otherwise:
\n
\n throw a\n DataError.\n
\n
", "rationale": ".switch", "steps": [ { @@ -5328,60 +6253,60 @@ "steps": [ { "case": "If data has length 128 bits:", - "html": "If the alg field of jwk is present, and is\n not \"A128GCM\",\n then throw a\n DataError." + "html": "If the alg field of jwk is present, and is\n not \"A128GCM\",\n then throw a\n DataError." }, { "case": "If data has length 192 bits:", - "html": "If the alg field of jwk is present, and is\n not \"A192GCM\",\n then throw a\n DataError." + "html": "If the alg field of jwk is present, and is\n not \"A192GCM\",\n then throw a\n DataError." }, { "case": "If data has length 256 bits:", - "html": "If the alg field of jwk is present, and is\n not \"A256GCM\",\n then throw a\n DataError." + "html": "If the alg field of jwk is present, and is\n not \"A256GCM\",\n then throw a\n DataError." }, { "case": "Otherwise:", - "html": "throw a\n DataError." + "html": "throw a\n DataError." } ] } ] }, { - "html": "

\n If usages is non-empty and the use field of jwk is present and is\n not \"enc\",\n then throw a\n DataError.\n

" + "html": "

\n If usages is non-empty and the use field of jwk is present and is\n not \"enc\",\n then throw a\n DataError.\n

" }, { - "html": "

\n If the key_ops field of jwk is present, and\n is invalid according to the requirements of\n JSON Web Key [JWK] or\n does not contain all of the specified usages values,\n then throw a\n DataError.\n

" + "html": "

\n If the key_ops field of jwk is present, and\n is invalid according to the requirements of\n JSON Web Key [JWK] or\n does not contain all of the specified usages values,\n then throw a\n DataError.\n

" }, { - "html": "

\n If the ext field of jwk is present and\n has the value false and extractable is true,\n then throw a\n DataError.\n

" + "html": "

\n If the ext field of jwk is present and\n has the value false and extractable is true,\n then throw a\n DataError.\n

" } ] }, { "case": "Otherwise:", - "html": "throw a\n NotSupportedError." + "html": "throw a\n NotSupportedError." } ] } ] }, { - "html": "

\n Let key be a new CryptoKey\n object representing an AES key with value data.\n

" + "html": "

\n Let key be a new CryptoKey\n object representing an AES key with value data.\n

" }, { - "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" + "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" }, { "html": "

\n Let algorithm be a new\n AesKeyAlgorithm.\n

" }, { - "html": "

\n Set the name attribute of\n algorithm to \"AES-GCM\".\n

" + "html": "

\n Set the name attribute of\n algorithm to \"AES-GCM\".\n

" }, { "html": "

\n Set the length attribute of\n algorithm to the length, in bits, of data.\n

" }, { - "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" + "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" }, { "html": "

\n Return key.\n

" @@ -5393,10 +6318,10 @@ "rationale": "if", "steps": [ { - "html": "

\n If the underlying cryptographic key material represented by the [[handle]] internal slot of key\n cannot be accessed, then throw an OperationError.\n

" + "html": "

\n If the underlying cryptographic key material represented by the [[handle]] internal slot of key\n cannot be accessed, then throw an OperationError.\n

" }, { - "html": "
\n
If format is \"raw\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", + "html": "
\n
If format is \"raw\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", "rationale": ".switch", "steps": [ { @@ -5408,10 +6333,10 @@ "rationale": "let", "steps": [ { - "html": "

\n Let data be the raw octets of the key represented by [[handle]] internal slot of\n key.\n

" + "html": "

\n Let data be the raw octets of the key represented by [[handle]] internal slot of\n key.\n

" }, { - "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" + "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" } ] }, @@ -5421,13 +6346,13 @@ "rationale": "let", "steps": [ { - "html": "

\n Let jwk be a new JsonWebKey\n dictionary.\n

" + "html": "

\n Let jwk be a new JsonWebKey\n dictionary.\n

" }, { "html": "

\n Set the kty attribute of jwk to the\n string \"oct\".\n

" }, { - "html": "

\n Set the k attribute of jwk to be a string\n containing the raw octets of the key represented by [[handle]] internal slot of\n key, encoded according to Section 6.4 of JSON Web Algorithms [JWA].\n

" + "html": "

\n Set the k attribute of jwk to be a string\n containing the raw octets of the key represented by [[handle]] internal slot of\n key, encoded according to Section 6.4 of JSON Web Algorithms [JWA].\n

" }, { "html": "
\n
If the length attribute of\n key is 128:
\n
Set the alg attribute of jwk to\n the string \"A128GCM\".
\n
If the length attribute of\n key is 192:
\n
Set the alg attribute of jwk to\n the string \"A192GCM\".
\n
If the length attribute of\n key is 256:
\n
Set the alg attribute of jwk to\n the string \"A256GCM\".
\n
", @@ -5453,10 +6378,10 @@ ] }, { - "html": "

\n Set the key_ops attribute of jwk to equal the\n usages attribute of\n key.\n

" + "html": "

\n Set the key_ops attribute of jwk to equal the\n usages attribute of\n key.\n

" }, { - "html": "

\n Set the ext attribute of jwk to equal the [[extractable]] internal slot\n of key.\n

" + "html": "

\n Set the ext attribute of jwk to equal the [[extractable]] internal slot\n of key.\n

" }, { "html": "

\n Let result be the result of converting jwk\n to an ECMAScript Object, as defined by [WebIDL].\n

" @@ -5465,7 +6390,7 @@ }, { "case": "Otherwise:", - "html": "

\n throw a\n NotSupportedError.\n

" + "html": "

\n throw a\n NotSupportedError.\n

" } ] } @@ -5481,7 +6406,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If the length member of\n normalizedDerivedKeyAlgorithm is not 128, 192 or 256, then throw an OperationError.\n

" + "html": "

\n If the length member of\n normalizedDerivedKeyAlgorithm is not 128, 192 or 256, then throw an OperationError.\n

" }, { "html": "

\n Return the length member of\n normalizedDerivedKeyAlgorithm.\n

" @@ -5493,7 +6418,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If plaintext is not a multiple of 64 bits in length,\n then throw an\n OperationError.\n

" + "html": "

\n If plaintext is not a multiple of 64 bits in length,\n then throw an\n OperationError.\n

" }, { "html": "

\n Let ciphertext be the result of performing the Key Wrap\n operation described in Section 2.2.1 of [RFC3394]\n with plaintext as the plaintext to be wrapped and using the default\n Initial Value defined in Section 2.2.3.1 of the same document.\n

" @@ -5511,7 +6436,7 @@ "html": "

\n Let plaintext be the result of performing the Key Unwrap\n operation described in Section 2.2.2 of [RFC3394] with\n ciphertext as the input ciphertext and using the default Initial\n Value defined in Section 2.2.3.1 of the same document.\n

" }, { - "html": "

\n If the Key Unwrap operation returns an error,\n then throw an\n OperationError.\n

" + "html": "

\n If the Key Unwrap operation returns an error,\n then throw an\n OperationError.\n

" }, { "html": "

\n Return plaintext.\n

" @@ -5523,40 +6448,40 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains any entry which is not one of\n \"wrapKey\" or \"unwrapKey\", then throw a SyntaxError.\n

" + "html": "

\n If usages contains any entry which is not one of\n \"wrapKey\" or \"unwrapKey\", then throw a SyntaxError.\n

" }, { - "html": "

\n If the length property of\n normalizedAlgorithm is not equal to one of 128, 192 or 256, then throw an OperationError.\n

" + "html": "

\n If the length property of\n normalizedAlgorithm is not equal to one of 128, 192 or 256, then throw an OperationError.\n

" }, { "html": "

\n Generate an AES key of length\n equal to the length member of\n normalizedAlgorithm.\n

" }, { - "html": "

\n If the key generation step fails,\n then throw an\n OperationError.\n

" + "html": "

\n If the key generation step fails,\n then throw an\n OperationError.\n

" }, { - "html": "

\n Let key be a new\n CryptoKey object representing the\n generated AES key.\n

" + "html": "

\n Let key be a new\n CryptoKey object representing the\n generated AES key.\n

" }, { "html": "

\n Let algorithm be a new\n AesKeyAlgorithm.\n

" }, { - "html": "

\n Set the name attribute of\n algorithm to \"AES-KW\".\n

" + "html": "

\n Set the name attribute of\n algorithm to \"AES-KW\".\n

" }, { "html": "

\n Set the length attribute of\n algorithm to equal the\n length property of\n normalizedAlgorithm.\n

" }, { - "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" + "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" }, { - "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" + "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" }, { - "html": "

\n Set the [[extractable]] internal\n slot of key to be extractable.\n

" + "html": "

\n Set the [[extractable]] internal\n slot of key to be extractable.\n

" }, { - "html": "

\n Set the [[usages]] internal slot of\n key to be usages.\n

" + "html": "

\n Set the [[usages]] internal slot of\n key to be usages.\n

" }, { "html": "

\n Return key.\n

" @@ -5568,10 +6493,10 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains an entry which is not\n one of \"wrapKey\" or \"unwrapKey\",\n\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains an entry which is not\n one of \"wrapKey\" or \"unwrapKey\",\n\n then throw a\n SyntaxError.\n

" }, { - "html": "
\n
If format is \"raw\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n throw a\n NotSupportedError.\n
\n
", + "html": "
\n
If format is \"raw\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n throw a\n NotSupportedError.\n
\n
", "rationale": ".switch", "steps": [ { @@ -5583,10 +6508,10 @@ "rationale": "let", "steps": [ { - "html": "

\n Let data be the octet string contained in keyData.\n

" + "html": "

\n Let data be the octet string contained in keyData.\n

" }, { - "html": "

\n If the length in bits of data is not 128, 192 or 256\n\n then throw a\n DataError.\n

" + "html": "

\n If the length in bits of data is not 128, 192 or 256\n\n then throw a\n DataError.\n

" } ] }, @@ -5596,7 +6521,7 @@ "rationale": "if", "steps": [ { - "html": "
\n
If keyData is a JsonWebKey dictionary:
\n

Let jwk equal keyData.

\n
Otherwise:
\n

Throw a DataError.

\n
", + "html": "
\n
If keyData is a JsonWebKey dictionary:
\n

Let jwk equal keyData.

\n
Otherwise:
\n

Throw a DataError.

\n
", "rationale": ".switch", "steps": [ { @@ -5608,23 +6533,23 @@ }, { "case": "Otherwise:", - "html": "

Throw a DataError.

" + "html": "

Throw a DataError.

" } ] } ] }, { - "html": "

\n If the kty field of jwk is not\n \"oct\",\n then throw a\n DataError.\n

" + "html": "

\n If the kty field of jwk is not\n \"oct\",\n then throw a\n DataError.\n

" }, { - "html": "

\n If jwk does not meet the requirements of\n Section 6.4 of JSON Web Algorithms [JWA],\n then throw a\n DataError.\n

" + "html": "

\n If jwk does not meet the requirements of\n Section 6.4 of JSON Web Algorithms [JWA],\n then throw a\n DataError.\n

" }, { - "html": "

\n Let data be the octet string obtained by decoding the\n k field of jwk.\n

" + "html": "

\n Let data be the octet string obtained by decoding the\n k field of jwk.\n

" }, { - "html": "
\n
If data has length 128 bits:
\n
If the alg field of jwk is present, and is\n not \"A128KW\",\n then throw a\n DataError.
\n
If data has length 192 bits:
\n
If the alg field of jwk is present, and is\n not \"A192KW\",\n then throw a\n DataError.
\n
If data has length 256 bits:
\n
If the alg field of jwk is present, and is\n not \"A256KW\",\n then throw a\n DataError.
\n
Otherwise:
\n
\n throw a\n DataError.\n
\n
", + "html": "
\n
If data has length 128 bits:
\n
If the alg field of jwk is present, and is\n not \"A128KW\",\n then throw a\n DataError.
\n
If data has length 192 bits:
\n
If the alg field of jwk is present, and is\n not \"A192KW\",\n then throw a\n DataError.
\n
If data has length 256 bits:
\n
If the alg field of jwk is present, and is\n not \"A256KW\",\n then throw a\n DataError.
\n
Otherwise:
\n
\n throw a\n DataError.\n
\n
", "rationale": ".switch", "steps": [ { @@ -5632,60 +6557,60 @@ "steps": [ { "case": "If data has length 128 bits:", - "html": "If the alg field of jwk is present, and is\n not \"A128KW\",\n then throw a\n DataError." + "html": "If the alg field of jwk is present, and is\n not \"A128KW\",\n then throw a\n DataError." }, { "case": "If data has length 192 bits:", - "html": "If the alg field of jwk is present, and is\n not \"A192KW\",\n then throw a\n DataError." + "html": "If the alg field of jwk is present, and is\n not \"A192KW\",\n then throw a\n DataError." }, { "case": "If data has length 256 bits:", - "html": "If the alg field of jwk is present, and is\n not \"A256KW\",\n then throw a\n DataError." + "html": "If the alg field of jwk is present, and is\n not \"A256KW\",\n then throw a\n DataError." }, { "case": "Otherwise:", - "html": "throw a\n DataError." + "html": "throw a\n DataError." } ] } ] }, { - "html": "

\n If usages is non-empty and the use field of jwk is present and is\n not \"enc\",\n then throw a\n DataError.\n

" + "html": "

\n If usages is non-empty and the use field of jwk is present and is\n not \"enc\",\n then throw a\n DataError.\n

" }, { - "html": "

\n If the key_ops field of jwk is present, and\n is invalid according to the requirements of\n JSON Web Key [JWK] or\n does not contain all of the specified usages values,\n then throw a\n DataError.\n

" + "html": "

\n If the key_ops field of jwk is present, and\n is invalid according to the requirements of\n JSON Web Key [JWK] or\n does not contain all of the specified usages values,\n then throw a\n DataError.\n

" }, { - "html": "

\n If the ext field of jwk is present and\n has the value false and extractable is true,\n then throw a\n DataError.

" + "html": "

\n If the ext field of jwk is present and\n has the value false and extractable is true,\n then throw a\n DataError.

" } ] }, { "case": "Otherwise:", - "html": "throw a\n NotSupportedError." + "html": "throw a\n NotSupportedError." } ] } ] }, { - "html": "

\n Let key be a new CryptoKey\n representing an AES key with value data.\n

" + "html": "

\n Let key be a new CryptoKey\n representing an AES key with value data.\n

" }, { - "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" + "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" }, { "html": "

\n Let algorithm be a new\n AesKeyAlgorithm.\n

" }, { - "html": "

\n Set the name attribute of\n algorithm to \"AES-KW\".\n

" + "html": "

\n Set the name attribute of\n algorithm to \"AES-KW\".\n

" }, { "html": "

\n Set the length attribute of\n algorithm to the length, in bits, of data.\n

" }, { - "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" + "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" }, { "html": "

\n Return key.\n

" @@ -5697,10 +6622,10 @@ "rationale": "if", "steps": [ { - "html": "

\n If the underlying cryptographic key material represented by the [[handle]] internal slot of key\n cannot be accessed, then throw an OperationError.\n

" + "html": "

\n If the underlying cryptographic key material represented by the [[handle]] internal slot of key\n cannot be accessed, then throw an OperationError.\n

" }, { - "html": "
\n
If format is \"raw\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", + "html": "
\n
If format is \"raw\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", "rationale": ".switch", "steps": [ { @@ -5712,10 +6637,10 @@ "rationale": "let", "steps": [ { - "html": "

\n Let data be the raw octets of the key represented by [[handle]] internal slot of\n key.\n

" + "html": "

\n Let data be the raw octets of the key represented by [[handle]] internal slot of\n key.\n

" }, { - "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" + "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" } ] }, @@ -5725,13 +6650,13 @@ "rationale": "let", "steps": [ { - "html": "

\n Let jwk be a new JsonWebKey\n dictionary.\n

" + "html": "

\n Let jwk be a new JsonWebKey\n dictionary.\n

" }, { "html": "

\n Set the kty attribute of jwk to the\n string \"oct\".\n

" }, { - "html": "

\n Set the k attribute of jwk to be a string\n containing the raw octets of the key represented by [[handle]] internal slot of\n key, encoded according to Section 6.4 of JSON Web Algorithms [JWA].\n

" + "html": "

\n Set the k attribute of jwk to be a string\n containing the raw octets of the key represented by [[handle]] internal slot of\n key, encoded according to Section 6.4 of JSON Web Algorithms [JWA].\n

" }, { "html": "
\n
If the length attribute of\n key is 128:
\n
Set the alg attribute of jwk to\n the string \"A128KW\".
\n
If the length attribute of\n key is 192:
\n
Set the alg attribute of jwk to\n the string \"A192KW\".
\n
If the length attribute of\n key is 256:
\n
Set the alg attribute of jwk to\n the string \"A256KW\".
\n
", @@ -5757,10 +6682,10 @@ ] }, { - "html": "

\n Set the key_ops attribute of jwk to equal the\n usages attribute of key.\n

" + "html": "

\n Set the key_ops attribute of jwk to equal the\n usages attribute of key.\n

" }, { - "html": "

\n Set the ext attribute of jwk to equal the [[extractable]] internal slot\n of key.\n

" + "html": "

\n Set the ext attribute of jwk to equal the [[extractable]] internal slot\n of key.\n

" }, { "html": "

\n Let result be the result of converting jwk\n to an ECMAScript Object, as defined by [WebIDL].\n

" @@ -5769,7 +6694,7 @@ }, { "case": "Otherwise:", - "html": "

\n throw a\n NotSupportedError.\n

" + "html": "

\n throw a\n NotSupportedError.\n

" } ] } @@ -5785,7 +6710,7 @@ "rationale": "if", "steps": [ { - "html": "

\n If the length member of\n normalizedDerivedKeyAlgorithm is not 128, 192 or 256, then throw an OperationError.\n

" + "html": "

\n If the length member of\n normalizedDerivedKeyAlgorithm is not 128, 192 or 256, then throw an OperationError.\n

" }, { "html": "

\n Return the length member of\n normalizedDerivedKeyAlgorithm.\n

" @@ -5797,10 +6722,10 @@ "rationale": "let", "steps": [ { - "html": "

\n Let mac be the result of performing the MAC Generation operation\n described in Section 4 of [FIPS-198-1] using\n the key represented by [[handle]]\n internal slot of key, the hash function identified by the hash attribute of the [[algorithm]] internal slot of\n key and message as the input data text.\n

" + "html": "

\n Let mac be the result of performing the MAC Generation operation\n described in Section 4 of [FIPS-198-1] using\n the key represented by [[handle]]\n internal slot of key, the hash function identified by the hash attribute of the [[algorithm]] internal slot of\n key and message as the input data text.\n

" }, { - "html": "

\n Return the result of creating\n an ArrayBuffer containing mac.\n

" + "html": "

\n Return the result of creating\n an ArrayBuffer containing mac.\n

" } ] }, @@ -5809,7 +6734,7 @@ "rationale": "let", "steps": [ { - "html": "

\n Let mac be the result of performing the MAC Generation operation\n described in Section 4 of [FIPS-198-1] using\n the key represented by [[handle]]\n internal slot of key, the hash function identified by the hash attribute of the [[algorithm]] internal slot of\n key and message as the input data text.\n

" + "html": "

\n Let mac be the result of performing the MAC Generation operation\n described in Section 4 of [FIPS-198-1] using\n the key represented by [[handle]]\n internal slot of key, the hash function identified by the hash attribute of the [[algorithm]] internal slot of\n key and message as the input data text.\n

" }, { "html": "

\n Return true if mac is equal to signature and false\n otherwise.\n

" @@ -5821,10 +6746,10 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains any entry which is not \"sign\" or\n \"verify\", then throw a SyntaxError.\n

" + "html": "

\n If usages contains any entry which is not \"sign\" or\n \"verify\", then throw a SyntaxError.\n

" }, { - "html": "
\n
\n If the length member of\n normalizedAlgorithm is not present:\n
\n
\n Let length be the block size in bits of the hash function\n identified by the hash member\n of normalizedAlgorithm.\n
\n
\n Otherwise, if the length\n member of normalizedAlgorithm is non-zero:\n
\n
\n Let length be equal to the\n length\n member of normalizedAlgorithm.\n
\n
Otherwise:
\n
\n throw an\n OperationError.\n
\n
", + "html": "
\n
\n If the length member of\n normalizedAlgorithm is not present:\n
\n
\n Let length be the block size in bits of the hash function\n identified by the hash member\n of normalizedAlgorithm.\n
\n
\n Otherwise, if the length\n member of normalizedAlgorithm is non-zero:\n
\n
\n Let length be equal to the\n length\n member of normalizedAlgorithm.\n
\n
Otherwise:
\n
\n throw an\n OperationError.\n
\n
", "rationale": ".switch", "steps": [ { @@ -5840,7 +6765,7 @@ }, { "case": "Otherwise:", - "html": "throw an\n OperationError." + "html": "throw an\n OperationError." } ] } @@ -5850,37 +6775,37 @@ "html": "

\n Generate a key of length length bits.\n

" }, { - "html": "

\n If the key generation step fails,\n then throw an\n OperationError.\n

" + "html": "

\n If the key generation step fails,\n then throw an\n OperationError.\n

" }, { - "html": "

\n Let key be a new\n CryptoKey object representing the\n generated key.\n

" + "html": "

\n Let key be a new\n CryptoKey object representing the\n generated key.\n

" }, { "html": "

\n Let algorithm be a new\n HmacKeyAlgorithm.\n

" }, { - "html": "

\n Set the name attribute of\n algorithm to \"HMAC\".\n

" + "html": "

\n Set the name attribute of\n algorithm to \"HMAC\".\n

" }, { - "html": "

\n Let hash be a new\n KeyAlgorithm.\n

" + "html": "

\n Let hash be a new\n KeyAlgorithm.\n

" }, { - "html": "

\n Set the name attribute of\n hash to equal the name\n member of the hash\n member of normalizedAlgorithm.\n

" + "html": "

\n Set the name attribute of\n hash to equal the name\n member of the hash\n member of normalizedAlgorithm.\n

" }, { "html": "

\n Set the hash attribute\n of algorithm to hash.\n

" }, { - "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" + "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" }, { - "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" + "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" }, { - "html": "

\n Set the [[extractable]] internal\n slot of key to be extractable.\n

" + "html": "

\n Set the [[extractable]] internal\n slot of key to be extractable.\n

" }, { - "html": "

\n Set the [[usages]] internal slot of\n key to be usages.\n

" + "html": "

\n Set the [[usages]] internal slot of\n key to be usages.\n

" }, { "html": "

\n Return key.\n

" @@ -5895,13 +6820,13 @@ "html": "

Let keyData be the key data to be imported.

" }, { - "html": "

\n If usages contains an entry which is not\n \"sign\" or \"verify\",\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains an entry which is not\n \"sign\" or \"verify\",\n then throw a\n SyntaxError.\n

" }, { - "html": "

\n Let hash be a new KeyAlgorithm.\n

" + "html": "

\n Let hash be a new KeyAlgorithm.\n

" }, { - "html": "
\n
If format is \"raw\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n throw a\n NotSupportedError.\n
\n
", + "html": "
\n
If format is \"raw\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n throw a\n NotSupportedError.\n
\n
", "rationale": ".switch", "steps": [ { @@ -5913,7 +6838,7 @@ "rationale": "let", "steps": [ { - "html": "

\n Let data be the octet string contained in keyData.\n

" + "html": "

\n Let data be the octet string contained in keyData.\n

" }, { "html": "

\n Set hash to equal the hash\n member of normalizedAlgorithm.\n

" @@ -5926,7 +6851,7 @@ "rationale": "if", "steps": [ { - "html": "
\n
If keyData is a JsonWebKey dictionary:
\n

Let jwk equal keyData.

\n
Otherwise:
\n

Throw a DataError.

\n
", + "html": "
\n
If keyData is a JsonWebKey dictionary:
\n

Let jwk equal keyData.

\n
Otherwise:
\n

Throw a DataError.

\n
", "rationale": ".switch", "steps": [ { @@ -5938,26 +6863,26 @@ }, { "case": "Otherwise:", - "html": "

Throw a DataError.

" + "html": "

Throw a DataError.

" } ] } ] }, { - "html": "

\n If the kty field of jwk is not\n \"oct\",\n then throw a\n DataError.\n

" + "html": "

\n If the kty field of jwk is not\n \"oct\",\n then throw a\n DataError.\n

" }, { - "html": "

\n If jwk does not meet the requirements of\n Section 6.4 of JSON Web Algorithms [JWA],\n then throw a\n DataError.\n

" + "html": "

\n If jwk does not meet the requirements of\n Section 6.4 of JSON Web Algorithms [JWA],\n then throw a\n DataError.\n

" }, { - "html": "

\n Let data be the octet string obtained by decoding the\n k field of jwk.\n

" + "html": "

\n Let data be the octet string obtained by decoding the\n k field of jwk.\n

" }, { "html": "

\n Set the hash to equal the hash member of\n normalizedAlgorithm.\n

" }, { - "html": "
\n
\n If the name attribute\n of hash is\n \"SHA-1\":\n
\n
\n If the alg field of jwk is present\n and is not \"HS1\",\n then throw a\n DataError.\n
\n
\n If the name attribute\n of hash is\n \"SHA-256\":\n
\n
\n If the alg field of jwk is present\n and is not \"HS256\",\n then throw a\n DataError.\n
\n
\n If the name attribute\n of hash is\n \"SHA-384\":\n
\n
\n If the alg field of jwk is present\n and is not \"HS384\",\n then throw a\n DataError.\n
\n
\n If the name attribute\n of hash is\n \"SHA-512\":\n
\n
\n If the alg field of jwk is present\n and is not \"HS512\",\n then throw a\n DataError.\n
\n
\n Otherwise, if the name attribute\n of hash is defined in\n another applicable\n specification:\n
\n
\n Perform any key import steps defined by\n other applicable\n specifications, passing format, jwk\n and hash\n and obtaining hash.\n
\n
", + "html": "
\n
\n If the name attribute\n of hash is\n \"SHA-1\":\n
\n
\n If the alg field of jwk is present\n and is not \"HS1\",\n then throw a\n DataError.\n
\n
\n If the name attribute\n of hash is\n \"SHA-256\":\n
\n
\n If the alg field of jwk is present\n and is not \"HS256\",\n then throw a\n DataError.\n
\n
\n If the name attribute\n of hash is\n \"SHA-384\":\n
\n
\n If the alg field of jwk is present\n and is not \"HS384\",\n then throw a\n DataError.\n
\n
\n If the name attribute\n of hash is\n \"SHA-512\":\n
\n
\n If the alg field of jwk is present\n and is not \"HS512\",\n then throw a\n DataError.\n
\n
\n Otherwise, if the name attribute\n of hash is defined in\n another applicable\n specification:\n
\n
\n Perform any key import steps defined by\n other applicable\n specifications, passing format, jwk\n and hash\n and obtaining hash.\n
\n
", "rationale": ".switch", "steps": [ { @@ -5965,19 +6890,19 @@ "steps": [ { "case": "If the name attribute of hash is \"SHA-1\":", - "html": "If the alg field of jwk is present\n and is not \"HS1\",\n then throw a\n DataError." + "html": "If the alg field of jwk is present\n and is not \"HS1\",\n then throw a\n DataError." }, { "case": "If the name attribute of hash is \"SHA-256\":", - "html": "If the alg field of jwk is present\n and is not \"HS256\",\n then throw a\n DataError." + "html": "If the alg field of jwk is present\n and is not \"HS256\",\n then throw a\n DataError." }, { "case": "If the name attribute of hash is \"SHA-384\":", - "html": "If the alg field of jwk is present\n and is not \"HS384\",\n then throw a\n DataError." + "html": "If the alg field of jwk is present\n and is not \"HS384\",\n then throw a\n DataError." }, { "case": "If the name attribute of hash is \"SHA-512\":", - "html": "If the alg field of jwk is present\n and is not \"HS512\",\n then throw a\n DataError." + "html": "If the alg field of jwk is present\n and is not \"HS512\",\n then throw a\n DataError." }, { "case": "Otherwise, if the name attribute of hash is defined in another applicable specification:", @@ -5988,19 +6913,19 @@ ] }, { - "html": "

\n If usages is non-empty and the use field of jwk is present and is\n not \"sign\",\n then throw a\n DataError.\n

" + "html": "

\n If usages is non-empty and the use field of jwk is present and is\n not \"sign\",\n then throw a\n DataError.\n

" }, { - "html": "

\n If the key_ops field of jwk is present, and\n is invalid according to the requirements of\n JSON Web Key [JWK] or\n does not contain all of the specified usages values,\n then throw a\n DataError.\n

" + "html": "

\n If the key_ops field of jwk is present, and\n is invalid according to the requirements of\n JSON Web Key [JWK] or\n does not contain all of the specified usages values,\n then throw a\n DataError.\n

" }, { - "html": "

\n If the ext field of jwk is present and\n has the value false and extractable is true,\n then throw a\n DataError.\n

" + "html": "

\n If the ext field of jwk is present and\n has the value false and extractable is true,\n then throw a\n DataError.\n

" } ] }, { "case": "Otherwise:", - "html": "throw a\n NotSupportedError." + "html": "throw a\n NotSupportedError." } ] } @@ -6010,10 +6935,10 @@ "html": "

\n Let length be equivalent to the length, in octets, of\n data, multiplied by 8.\n

" }, { - "html": "

\n If length is zero\n then throw a\n DataError.\n

" + "html": "

\n If length is zero\n then throw a\n DataError.\n

" }, { - "html": "
\n
\n If the length member of\n normalizedAlgorithm is present:\n
\n
\n
\n
\n If the length member of\n normalizedAlgorithm is greater than length:\n
\n
\n throw a\n DataError.\n
\n
\n If the length member of\n normalizedAlgorithm, is less than or equal to\n length minus eight:\n
\n
\n throw a\n DataError.\n
\n
\n Otherwise:\n
\n
\n Set length equal to the length\n member of normalizedAlgorithm.\n
\n
\n
\n
", + "html": "
\n
\n If the length member of\n normalizedAlgorithm is present:\n
\n
\n
\n
\n If the length member of\n normalizedAlgorithm is greater than length:\n
\n
\n throw a\n DataError.\n
\n
\n If the length member of\n normalizedAlgorithm, is less than or equal to\n length minus eight:\n
\n
\n throw a\n DataError.\n
\n
\n Otherwise:\n
\n
\n Set length equal to the length\n member of normalizedAlgorithm.\n
\n
\n
\n
", "rationale": ".switch", "steps": [ { @@ -6021,7 +6946,7 @@ "steps": [ { "case": "If the length member of normalizedAlgorithm is present:", - "html": "
\n
\n If the length member of\n normalizedAlgorithm is greater than length:\n
\n
\n throw a\n DataError.\n
\n
\n If the length member of\n normalizedAlgorithm, is less than or equal to\n length minus eight:\n
\n
\n throw a\n DataError.\n
\n
\n Otherwise:\n
\n
\n Set length equal to the length\n member of normalizedAlgorithm.\n
\n
", + "html": "
\n
\n If the length member of\n normalizedAlgorithm is greater than length:\n
\n
\n throw a\n DataError.\n
\n
\n If the length member of\n normalizedAlgorithm, is less than or equal to\n length minus eight:\n
\n
\n throw a\n DataError.\n
\n
\n Otherwise:\n
\n
\n Set length equal to the length\n member of normalizedAlgorithm.\n
\n
", "rationale": ".switch", "steps": [ { @@ -6029,11 +6954,11 @@ "steps": [ { "case": "If the length member of normalizedAlgorithm is greater than length:", - "html": "throw a\n DataError." + "html": "throw a\n DataError." }, { "case": "If the length member of normalizedAlgorithm, is less than or equal to length minus eight:", - "html": "throw a\n DataError." + "html": "throw a\n DataError." }, { "case": "Otherwise:", @@ -6048,16 +6973,16 @@ ] }, { - "html": "

\n Let key be a new CryptoKey\n object representing an HMAC key with the first length\n bits of data.\n

" + "html": "

\n Let key be a new CryptoKey\n object representing an HMAC key with the first length\n bits of data.\n

" }, { - "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" + "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" }, { "html": "

\n Let algorithm be a new\n HmacKeyAlgorithm.\n

" }, { - "html": "

\n Set the name attribute of\n algorithm to \"HMAC\".\n

" + "html": "

\n Set the name attribute of\n algorithm to \"HMAC\".\n

" }, { "html": "

\n Set the length attribute of\n algorithm to length.\n

" @@ -6066,7 +6991,7 @@ "html": "

\n Set the hash attribute of\n algorithm to hash.\n

" }, { - "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" + "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" }, { "html": "

\n Return key.\n

" @@ -6078,16 +7003,16 @@ "rationale": "if", "steps": [ { - "html": "

\n If the underlying cryptographic key material represented by the [[handle]] internal slot of key\n cannot be accessed, then throw an OperationError.\n

" + "html": "

\n If the underlying cryptographic key material represented by the [[handle]] internal slot of key\n cannot be accessed, then throw an OperationError.\n

" }, { - "html": "

\n Let bits be the raw bits of the key represented by [[handle]] internal slot of\n key.\n

" + "html": "

\n Let bits be the raw bits of the key represented by [[handle]] internal slot of\n key.\n

" }, { - "html": "

\n Let data be an octet string containing bits.\n

" + "html": "

\n Let data be an octet string containing bits.\n

" }, { - "html": "
\n
If format is \"raw\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", + "html": "
\n
If format is \"raw\":
\n
\n \n
\n
If format is \"jwk\":
\n
\n \n
\n
Otherwise:
\n
\n

\n throw a\n NotSupportedError.\n

\n
\n
", "rationale": ".switch", "steps": [ { @@ -6099,7 +7024,7 @@ "rationale": "let", "steps": [ { - "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" + "html": "

\n Let result be the result of creating\n an ArrayBuffer containing data.\n

" } ] }, @@ -6109,7 +7034,7 @@ "rationale": "let", "steps": [ { - "html": "

\n Let jwk be a new JsonWebKey\n dictionary.\n

" + "html": "

\n Let jwk be a new JsonWebKey\n dictionary.\n

" }, { "html": "

\n Set the kty attribute of jwk to the\n string \"oct\".\n

" @@ -6118,13 +7043,13 @@ "html": "

\n Set the k attribute of jwk to be a string\n containing data, encoded according to Section 6.4 of JSON Web Algorithms [JWA].\n

" }, { - "html": "

\n Let algorithm be the [[algorithm]] internal slot of\n key.\n

" + "html": "

\n Let algorithm be the [[algorithm]] internal slot of\n key.\n

" }, { "html": "

\n Let hash be the\n hash attribute of\n algorithm.\n

" }, { - "html": "
\n
If the name attribute of\n hash is \"SHA-1\":
\n
Set the alg attribute of jwk to\n the string \"HS1\".
\n
If the name attribute of\n hash is \"SHA-256\":
\n
Set the alg attribute of jwk to\n the string \"HS256\".
\n
If the name attribute of\n hash is \"SHA-384\":
\n
Set the alg attribute of jwk to\n the string \"HS384\".
\n
If the name attribute of\n hash is \"SHA-512\":
\n
Set the alg attribute of jwk to\n the string \"HS512\".
\n
\n Otherwise, the name attribute\n of hash is defined in\n another applicable\n specification:\n
\n
\n \n
\n
", + "html": "
\n
If the name attribute of\n hash is \"SHA-1\":
\n
Set the alg attribute of jwk to\n the string \"HS1\".
\n
If the name attribute of\n hash is \"SHA-256\":
\n
Set the alg attribute of jwk to\n the string \"HS256\".
\n
If the name attribute of\n hash is \"SHA-384\":
\n
Set the alg attribute of jwk to\n the string \"HS384\".
\n
If the name attribute of\n hash is \"SHA-512\":
\n
Set the alg attribute of jwk to\n the string \"HS512\".
\n
\n Otherwise, the name attribute\n of hash is defined in\n another applicable\n specification:\n
\n
\n \n
\n
", "rationale": ".switch", "steps": [ { @@ -6164,10 +7089,10 @@ ] }, { - "html": "

\n Set the key_ops attribute of jwk to equal the\n usages attribute of key.\n

" + "html": "

\n Set the key_ops attribute of jwk to equal the\n usages attribute of key.\n

" }, { - "html": "

\n Set the ext attribute of jwk to equal the [[extractable]] internal slot\n of key.\n

" + "html": "

\n Set the ext attribute of jwk to equal the [[extractable]] internal slot\n of key.\n

" }, { "html": "

\n Let result be the result of converting jwk\n to an ECMAScript Object, as defined by [WebIDL].\n

" @@ -6176,7 +7101,7 @@ }, { "case": "Otherwise:", - "html": "

\n throw a\n NotSupportedError.\n

" + "html": "

\n throw a\n NotSupportedError.\n

" } ] } @@ -6192,7 +7117,7 @@ "rationale": "if", "steps": [ { - "html": "
\n
\n If the length member of\n normalizedDerivedKeyAlgorithm is not present:\n
\n
\n

\n Let length be the block size in bits of the hash function\n identified by the hash member\n of normalizedDerivedKeyAlgorithm.\n

\n
\n
\n Otherwise, if the length\n member of normalizedDerivedKeyAlgorithm is non-zero:\n
\n
\n Let length be equal to the\n length\n member of normalizedDerivedKeyAlgorithm.\n
\n
Otherwise:
\n
\n throw a\n TypeError.\n
\n
", + "html": "
\n
\n If the length member of\n normalizedDerivedKeyAlgorithm is not present:\n
\n
\n

\n Let length be the block size in bits of the hash function\n identified by the hash member\n of normalizedDerivedKeyAlgorithm.\n

\n
\n
\n Otherwise, if the length\n member of normalizedDerivedKeyAlgorithm is non-zero:\n
\n
\n Let length be equal to the\n length\n member of normalizedDerivedKeyAlgorithm.\n
\n
Otherwise:
\n
\n throw a\n TypeError.\n
\n
", "rationale": ".switch", "steps": [ { @@ -6208,7 +7133,7 @@ }, { "case": "Otherwise:", - "html": "throw a\n TypeError." + "html": "throw a\n TypeError." } ] } @@ -6251,10 +7176,10 @@ ] }, { - "html": "

\n If performing the operation results in an error, then throw an OperationError.\n

" + "html": "

\n If performing the operation results in an error, then throw an OperationError.\n

" }, { - "html": "

\n Return the result of creating\n an ArrayBuffer containing result.\n

" + "html": "

\n Return the result of creating\n an ArrayBuffer containing result.\n

" } ] }, @@ -6263,19 +7188,19 @@ "rationale": "if", "steps": [ { - "html": "

\n If length is null or is not a multiple of 8, then throw an OperationError.\n

" + "html": "

\n If length is null or is not a multiple of 8, then throw an OperationError.\n

" }, { - "html": "

\n Let keyDerivationKey be the secret represented by [[handle]] internal slot of key.\n

" + "html": "

\n Let keyDerivationKey be the secret represented by [[handle]] internal slot of key.\n

" }, { "html": "

\n Let result be the result of performing the HKDF extract and then\n the HKDF expand step described in Section 2 of\n [RFC5869] using:\n

\n " }, { - "html": "

\n If the key derivation operation fails,\n then throw an\n OperationError.\n

" + "html": "

\n If the key derivation operation fails,\n then throw an\n OperationError.\n

" }, { - "html": "

\n Return the result of creating\n an ArrayBuffer containing result.\n

" + "html": "

\n Return the result of creating\n an ArrayBuffer containing result.\n

" } ] }, @@ -6287,7 +7212,7 @@ "html": "

Let keyData be the key data to be imported.

" }, { - "html": "
\n
\n If format is \"raw\":\n
\n
\n \n
\n
Otherwise:
\n
\n throw a\n NotSupportedError.\n
\n
", + "html": "
\n
\n If format is \"raw\":\n
\n
\n \n
\n
Otherwise:
\n
\n throw a\n NotSupportedError.\n
\n
", "rationale": ".switch", "steps": [ { @@ -6299,25 +7224,25 @@ "rationale": "if", "steps": [ { - "html": "

\n If usages contains a value that is not\n \"deriveKey\" or \"deriveBits\",\n\n then throw a\n SyntaxError.\n

" + "html": "

\n If usages contains a value that is not\n \"deriveKey\" or \"deriveBits\",\n\n then throw a\n SyntaxError.\n

" }, { - "html": "

\n If extractable is not false,\n then throw a\n SyntaxError.\n

" + "html": "

\n If extractable is not false,\n then throw a\n SyntaxError.\n

" }, { - "html": "

\n Let key be a new CryptoKey\n representing the key data provided in keyData.\n

" + "html": "

\n Let key be a new CryptoKey\n representing the key data provided in keyData.\n

" }, { - "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" + "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" }, { - "html": "

\n Let algorithm be a new\n KeyAlgorithm object.\n

" + "html": "

\n Let algorithm be a new\n KeyAlgorithm object.\n

" }, { - "html": "

\n Set the name attribute of\n algorithm to \"HKDF\".\n

" + "html": "

\n Set the name attribute of\n algorithm to \"HKDF\".\n

" }, { - "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" + "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" }, { "html": "

\n Return key.\n

" @@ -6326,7 +7251,7 @@ }, { "case": "Otherwise:", - "html": "throw a\n NotSupportedError." + "html": "throw a\n NotSupportedError." } ] } @@ -6348,25 +7273,25 @@ "rationale": "if", "steps": [ { - "html": "

\n If length is null or is not a multiple of 8, then throw an OperationError.\n

" + "html": "

\n If length is null or is not a multiple of 8, then throw an OperationError.\n

" }, { - "html": "

\n If the iterations member of normalizedAlgorithm is zero,\n then throw an OperationError.\n

" + "html": "

\n If the iterations member of normalizedAlgorithm is zero,\n then throw an OperationError.\n

" }, { - "html": "

\n If length is zero, return the result of\n creating an ArrayBuffer\n containing an empty byte sequence.\n

" + "html": "

\n If length is zero, return the result of\n creating an ArrayBuffer\n containing an empty byte sequence.\n

" }, { "html": "

\n Let prf be the MAC Generation function described in Section 4 of\n [FIPS-198-1] using the hash function\n described by the hash member of\n normalizedAlgorithm.\n

" }, { - "html": "

\n Let result be the result of performing the PBKDF2 operation defined\n in Section 5.2 of [RFC8018] using prf as the\n pseudo-random function, PRF, the password represented by [[handle]] internal slot of key\n as the password, P, the\n contents of the salt attribute of\n normalizedAlgorithm as the salt, S, the value of the iterations attribute of\n normalizedAlgorithm as the iteration count, c, and\n length divided by 8 as the intended key length, dkLen.\n

" + "html": "

\n Let result be the result of performing the PBKDF2 operation defined\n in Section 5.2 of [RFC8018] using prf as the\n pseudo-random function, PRF, the password represented by [[handle]] internal slot of key\n as the password, P, the\n contents of the salt attribute of\n normalizedAlgorithm as the salt, S, the value of the iterations attribute of\n normalizedAlgorithm as the iteration count, c, and\n length divided by 8 as the intended key length, dkLen.\n

" }, { - "html": "

\n If the key derivation operation fails,\n then throw an\n OperationError.\n

" + "html": "

\n If the key derivation operation fails,\n then throw an\n OperationError.\n

" }, { - "html": "

\n Return the result of creating\n an ArrayBuffer containing result.\n

" + "html": "

\n Return the result of creating\n an ArrayBuffer containing result.\n

" } ] }, @@ -6375,28 +7300,28 @@ "rationale": "if", "steps": [ { - "html": "

\n If format is not \"raw\", throw a NotSupportedError\n

" + "html": "

\n If format is not \"raw\", throw a NotSupportedError\n

" }, { - "html": "

\n If usages contains a value that is not\n \"deriveKey\" or \"deriveBits\", then\n throw a SyntaxError.\n

" + "html": "

\n If usages contains a value that is not\n \"deriveKey\" or \"deriveBits\", then\n throw a SyntaxError.\n

" }, { - "html": "

\n If extractable is not false,\n then throw a\n SyntaxError.\n

" + "html": "

\n If extractable is not false,\n then throw a\n SyntaxError.\n

" }, { - "html": "

\n Let key be a new CryptoKey\n representing keyData.\n

" + "html": "

\n Let key be a new CryptoKey\n representing keyData.\n

" }, { - "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" + "html": "

\n Set the [[type]] internal slot of\n key to \"secret\".\n

" }, { - "html": "

\n Let algorithm be a new KeyAlgorithm\n object.\n

" + "html": "

\n Let algorithm be a new KeyAlgorithm\n object.\n

" }, { - "html": "

\n Set the name attribute of\n algorithm to \"PBKDF2\".\n

" + "html": "

\n Set the name attribute of\n algorithm to \"PBKDF2\".\n

" }, { - "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" + "html": "

\n Set the [[algorithm]] internal\n slot of key to algorithm.\n

" }, { "html": "

\n Return key.\n

" diff --git a/ed/algorithms/webdriver2.json b/ed/algorithms/webdriver2.json index 71df3f3fc82b..03ad4dacf9f4 100644 --- a/ed/algorithms/webdriver2.json +++ b/ed/algorithms/webdriver2.json @@ -4934,25 +4934,36 @@ ] }, { - "name": "dispatch actions", - "href": "https://w3c.github.io/webdriver/#dfn-dispatch-actions", - "html": "To dispatch actions given input\nstate, actions by tick, browsing\ncontext, and actions options:", + "name": "wait for an action queue token", + "href": "https://w3c.github.io/webdriver/#dfn-wait-for-an-action-queue-token", + "html": "To wait for an action queue token given input state:", "rationale": ".algorithm", "steps": [ { "html": "

Let token be a new unique identifier.\n\n

" }, { - "html": "

Enqueue token in input state's actions\n queue.\n\n

" + "html": "

Enqueue token in input state's\n actions queue.\n\n

" }, { - "html": "

Wait for token to be the first item\n in input state's actions queue.\n\n

" + "html": "

Wait for token to be the first item\n in input state's actions queue.\n\n

" + } + ] + }, + { + "name": "dispatch actions", + "href": "https://w3c.github.io/webdriver/#dfn-dispatch-actions", + "html": "To dispatch actions given input\nstate, actions by tick, browsing\ncontext, and actions options:", + "rationale": ".algorithm", + "steps": [ + { + "html": "

Wait for an action queue token with input state.\n\n

" }, { - "html": "

Let actions result be the result of dispatch\n actions inner with input state, actions by\n tick, browsing context, and actions options.\n\n

" + "html": "

Let actions result be the result of\n dispatch actions inner with input state, actions by\n tick, browsing context, and actions options.\n\n

" }, { - "html": "

Dequeue input state's actions queue.\n

Assert: this returns token\n\n

" + "html": "

Dequeue input state's actions queue.\n

Assert: this returns token\n\n

" }, { "html": "

Return actions result.\n

" @@ -5538,19 +5549,22 @@ "html": "

If session's current browsing context\n is no longer open, return error with error\n code no such window.\n\n

" }, { - "html": "

Let input state be the result of get the\n input state with session and current\n top-level browsing context.\n\n

" + "html": "

Let input state be the result of get the input state\n with session and current top-level browsing context.\n\n

" }, { "html": "

Let actions options be a new actions options\n with the is element origin steps set to represents a web\n element, and the get element origin steps set\n to get a WebElement origin.\n\n

" }, { - "html": "

Let undo actions be input\n state's input cancel list in reverse order.\n\n

" + "html": "

Wait for an action queue token with input state.\n\n

" + }, + { + "html": "

Let undo actions be input\n state's input cancel list in reverse order.\n\n

" }, { - "html": "

Try to dispatch tick actions with arguments\n undo\n actions, 0,session's current\n browsing context, and actions options.\n\n

" + "html": "

Try to dispatch actions with input state,\n undo actions, current browsing context,\n and actions options.\n\n\n

" }, { - "html": "

Reset the input state with session\n and session's current top-level browsing\n context.\n\n

" + "html": "

Reset the input state with session\n and session's current top-level browsing context.\n\n

" }, { "html": "

Return success with data null.\n

" diff --git a/ed/dfns/WebCryptoAPI.json b/ed/dfns/WebCryptoAPI.json index 0c1cadea1237..e1b727403980 100644 --- a/ed/dfns/WebCryptoAPI.json +++ b/ed/dfns/WebCryptoAPI.json @@ -3199,7 +3199,7 @@ "id": "aes-ctr-params", "href": "https://w3c.github.io/webcrypto/#aes-ctr-params", "title": "AesCtrParams dictionary", - "number": "25.3" + "number": "27.3" }, "definedIn": "heading" }, @@ -3220,7 +3220,7 @@ "id": "aes-ctr-params", "href": "https://w3c.github.io/webcrypto/#aes-ctr-params", "title": "AesCtrParams dictionary", - "number": "25.3" + "number": "27.3" }, "definedIn": "prose" }, @@ -3241,7 +3241,7 @@ "id": "aes-ctr-params", "href": "https://w3c.github.io/webcrypto/#aes-ctr-params", "title": "AesCtrParams dictionary", - "number": "25.3" + "number": "27.3" }, "definedIn": "prose" }, @@ -3260,7 +3260,7 @@ "id": "AesKeyAlgorithm-dictionary", "href": "https://w3c.github.io/webcrypto/#AesKeyAlgorithm-dictionary", "title": "AesKeyAlgorithm dictionary", - "number": "25.4" + "number": "27.4" }, "definedIn": "heading" }, @@ -3281,7 +3281,7 @@ "id": "AesKeyAlgorithm-dictionary", "href": "https://w3c.github.io/webcrypto/#AesKeyAlgorithm-dictionary", "title": "AesKeyAlgorithm dictionary", - "number": "25.4" + "number": "27.4" }, "definedIn": "prose" }, @@ -3300,7 +3300,7 @@ "id": "aes-keygen-params", "href": "https://w3c.github.io/webcrypto/#aes-keygen-params", "title": "AesKeyGenParams dictionary", - "number": "25.5" + "number": "27.5" }, "definedIn": "heading" }, @@ -3321,7 +3321,7 @@ "id": "aes-keygen-params", "href": "https://w3c.github.io/webcrypto/#aes-keygen-params", "title": "AesKeyGenParams dictionary", - "number": "25.5" + "number": "27.5" }, "definedIn": "prose" }, @@ -3340,7 +3340,7 @@ "id": "aes-derivedkey-params", "href": "https://w3c.github.io/webcrypto/#aes-derivedkey-params", "title": "AesDerivedKeyParams dictionary", - "number": "25.6" + "number": "27.6" }, "definedIn": "heading" }, @@ -3361,7 +3361,7 @@ "id": "aes-derivedkey-params", "href": "https://w3c.github.io/webcrypto/#aes-derivedkey-params", "title": "AesDerivedKeyParams dictionary", - "number": "25.6" + "number": "27.6" }, "definedIn": "prose" }, @@ -3380,7 +3380,7 @@ "id": "aes-cbc-params", "href": "https://w3c.github.io/webcrypto/#aes-cbc-params", "title": "AesCbcParams dictionary", - "number": "26.3" + "number": "28.3" }, "definedIn": "heading" }, @@ -3401,7 +3401,7 @@ "id": "aes-cbc-params", "href": "https://w3c.github.io/webcrypto/#aes-cbc-params", "title": "AesCbcParams dictionary", - "number": "26.3" + "number": "28.3" }, "definedIn": "prose" }, @@ -3420,7 +3420,7 @@ "id": "aes-gcm-params", "href": "https://w3c.github.io/webcrypto/#aes-gcm-params", "title": "AesGcmParams dictionary", - "number": "27.3" + "number": "29.3" }, "definedIn": "heading" }, @@ -3441,7 +3441,7 @@ "id": "aes-gcm-params", "href": "https://w3c.github.io/webcrypto/#aes-gcm-params", "title": "AesGcmParams dictionary", - "number": "27.3" + "number": "29.3" }, "definedIn": "prose" }, @@ -3462,7 +3462,7 @@ "id": "aes-gcm-params", "href": "https://w3c.github.io/webcrypto/#aes-gcm-params", "title": "AesGcmParams dictionary", - "number": "27.3" + "number": "29.3" }, "definedIn": "prose" }, @@ -3483,7 +3483,7 @@ "id": "aes-gcm-params", "href": "https://w3c.github.io/webcrypto/#aes-gcm-params", "title": "AesGcmParams dictionary", - "number": "27.3" + "number": "29.3" }, "definedIn": "prose" }, @@ -3502,7 +3502,7 @@ "id": "hmac-description", "href": "https://w3c.github.io/webcrypto/#hmac-description", "title": "Description", - "number": "29.1" + "number": "31.1" }, "definedIn": "prose" }, @@ -3521,7 +3521,7 @@ "id": "hmac-description", "href": "https://w3c.github.io/webcrypto/#hmac-description", "title": "Description", - "number": "29.1" + "number": "31.1" }, "definedIn": "prose" }, @@ -3540,7 +3540,7 @@ "id": "hmac-importparams", "href": "https://w3c.github.io/webcrypto/#hmac-importparams", "title": "HmacImportParams dictionary", - "number": "29.3" + "number": "31.3" }, "definedIn": "heading" }, @@ -3561,7 +3561,7 @@ "id": "hmac-importparams", "href": "https://w3c.github.io/webcrypto/#hmac-importparams", "title": "HmacImportParams dictionary", - "number": "29.3" + "number": "31.3" }, "definedIn": "prose" }, @@ -3582,7 +3582,7 @@ "id": "hmac-importparams", "href": "https://w3c.github.io/webcrypto/#hmac-importparams", "title": "HmacImportParams dictionary", - "number": "29.3" + "number": "31.3" }, "definedIn": "prose" }, @@ -3601,7 +3601,7 @@ "id": "HmacKeyAlgorithm-dictionary", "href": "https://w3c.github.io/webcrypto/#HmacKeyAlgorithm-dictionary", "title": "HmacKeyAlgorithm dictionary", - "number": "29.4" + "number": "31.4" }, "definedIn": "heading" }, @@ -3622,7 +3622,7 @@ "id": "HmacKeyAlgorithm-dictionary", "href": "https://w3c.github.io/webcrypto/#HmacKeyAlgorithm-dictionary", "title": "HmacKeyAlgorithm dictionary", - "number": "29.4" + "number": "31.4" }, "definedIn": "prose" }, @@ -3643,7 +3643,7 @@ "id": "HmacKeyAlgorithm-dictionary", "href": "https://w3c.github.io/webcrypto/#HmacKeyAlgorithm-dictionary", "title": "HmacKeyAlgorithm dictionary", - "number": "29.4" + "number": "31.4" }, "definedIn": "prose" }, @@ -3662,7 +3662,7 @@ "id": "hmac-keygen-params", "href": "https://w3c.github.io/webcrypto/#hmac-keygen-params", "title": "HmacKeyGenParams dictionary", - "number": "29.5" + "number": "31.5" }, "definedIn": "heading" }, @@ -3683,7 +3683,7 @@ "id": "hmac-keygen-params", "href": "https://w3c.github.io/webcrypto/#hmac-keygen-params", "title": "HmacKeyGenParams dictionary", - "number": "29.5" + "number": "31.5" }, "definedIn": "prose" }, @@ -3704,7 +3704,7 @@ "id": "hmac-keygen-params", "href": "https://w3c.github.io/webcrypto/#hmac-keygen-params", "title": "HmacKeyGenParams dictionary", - "number": "29.5" + "number": "31.5" }, "definedIn": "prose" }, @@ -3723,7 +3723,7 @@ "id": "hkdf-params", "href": "https://w3c.github.io/webcrypto/#hkdf-params", "title": "HkdfParams dictionary", - "number": "31.3" + "number": "33.3" }, "definedIn": "heading" }, @@ -3744,7 +3744,7 @@ "id": "hkdf-params", "href": "https://w3c.github.io/webcrypto/#hkdf-params", "title": "HkdfParams dictionary", - "number": "31.3" + "number": "33.3" }, "definedIn": "prose" }, @@ -3765,7 +3765,7 @@ "id": "hkdf-params", "href": "https://w3c.github.io/webcrypto/#hkdf-params", "title": "HkdfParams dictionary", - "number": "31.3" + "number": "33.3" }, "definedIn": "prose" }, @@ -3786,7 +3786,7 @@ "id": "hkdf-params", "href": "https://w3c.github.io/webcrypto/#hkdf-params", "title": "HkdfParams dictionary", - "number": "31.3" + "number": "33.3" }, "definedIn": "prose" }, @@ -3805,7 +3805,7 @@ "id": "pbkdf2-params", "href": "https://w3c.github.io/webcrypto/#pbkdf2-params", "title": "Pbkdf2Params dictionary", - "number": "32.3" + "number": "34.3" }, "definedIn": "heading" }, @@ -3826,7 +3826,7 @@ "id": "pbkdf2-params", "href": "https://w3c.github.io/webcrypto/#pbkdf2-params", "title": "Pbkdf2Params dictionary", - "number": "32.3" + "number": "34.3" }, "definedIn": "prose" }, @@ -3847,7 +3847,7 @@ "id": "pbkdf2-params", "href": "https://w3c.github.io/webcrypto/#pbkdf2-params", "title": "Pbkdf2Params dictionary", - "number": "32.3" + "number": "34.3" }, "definedIn": "prose" }, @@ -3868,7 +3868,7 @@ "id": "pbkdf2-params", "href": "https://w3c.github.io/webcrypto/#pbkdf2-params", "title": "Pbkdf2Params dictionary", - "number": "32.3" + "number": "34.3" }, "definedIn": "prose" } diff --git a/ed/dfns/webdriver2.json b/ed/dfns/webdriver2.json index bec3baf85e82..9b73f722765d 100644 --- a/ed/dfns/webdriver2.json +++ b/ed/dfns/webdriver2.json @@ -6435,6 +6435,25 @@ }, "definedIn": "prose" }, + { + "id": "dfn-wait-for-an-action-queue-token", + "href": "https://w3c.github.io/webdriver/#dfn-wait-for-an-action-queue-token", + "linkingText": [ + "wait for an action queue token" + ], + "localLinkingText": [], + "type": "dfn", + "for": [], + "access": "private", + "informative": false, + "heading": { + "id": "dispatching-actions", + "href": "https://w3c.github.io/webdriver/#dispatching-actions", + "title": "Dispatching actions", + "number": "15.6" + }, + "definedIn": "prose" + }, { "id": "dfn-dispatch-actions", "href": "https://w3c.github.io/webdriver/#dfn-dispatch-actions", diff --git a/ed/headings/WebCryptoAPI.json b/ed/headings/WebCryptoAPI.json index 27df7a7f1bd8..b3ff1d00dba5 100644 --- a/ed/headings/WebCryptoAPI.json +++ b/ed/headings/WebCryptoAPI.json @@ -764,353 +764,412 @@ "title": "Operations", "number": "24.4" }, + { + "id": "ed25519", + "href": "https://w3c.github.io/webcrypto/#ed25519", + "level": 2, + "title": "25. Ed25519" + }, + { + "id": "ed25519-description", + "href": "https://w3c.github.io/webcrypto/#ed25519-description", + "level": 3, + "title": "Description", + "number": "25.1" + }, + { + "id": "ed25519-registration", + "href": "https://w3c.github.io/webcrypto/#ed25519-registration", + "level": 3, + "title": "Registration", + "number": "25.2" + }, + { + "id": "ed25519-operations", + "href": "https://w3c.github.io/webcrypto/#ed25519-operations", + "level": 3, + "title": "Operations", + "number": "25.3" + }, + { + "id": "x25519", + "href": "https://w3c.github.io/webcrypto/#x25519", + "level": 2, + "title": "26. X25519" + }, + { + "id": "x25519-description", + "href": "https://w3c.github.io/webcrypto/#x25519-description", + "level": 3, + "title": "Description", + "number": "26.1" + }, + { + "id": "x25519-registration", + "href": "https://w3c.github.io/webcrypto/#x25519-registration", + "level": 3, + "title": "Registration", + "number": "26.2" + }, + { + "id": "x25519-operations", + "href": "https://w3c.github.io/webcrypto/#x25519-operations", + "level": 3, + "title": "Operations", + "number": "26.3" + }, { "id": "aes-ctr", "href": "https://w3c.github.io/webcrypto/#aes-ctr", "level": 2, - "title": "25. AES-CTR" + "title": "27. AES-CTR" }, { "id": "aes-ctr-description", "href": "https://w3c.github.io/webcrypto/#aes-ctr-description", "level": 3, "title": "Description", - "number": "25.1" + "number": "27.1" }, { "id": "aes-ctr-registration", "href": "https://w3c.github.io/webcrypto/#aes-ctr-registration", "level": 3, "title": "Registration", - "number": "25.2" + "number": "27.2" }, { "id": "aes-ctr-params", "href": "https://w3c.github.io/webcrypto/#aes-ctr-params", "level": 3, "title": "AesCtrParams dictionary", - "number": "25.3" + "number": "27.3" }, { "id": "AesKeyAlgorithm-dictionary", "href": "https://w3c.github.io/webcrypto/#AesKeyAlgorithm-dictionary", "level": 3, "title": "AesKeyAlgorithm dictionary", - "number": "25.4" + "number": "27.4" }, { "id": "aes-keygen-params", "href": "https://w3c.github.io/webcrypto/#aes-keygen-params", "level": 3, "title": "AesKeyGenParams dictionary", - "number": "25.5" + "number": "27.5" }, { "id": "aes-derivedkey-params", "href": "https://w3c.github.io/webcrypto/#aes-derivedkey-params", "level": 3, "title": "AesDerivedKeyParams dictionary", - "number": "25.6" + "number": "27.6" }, { "id": "aes-ctr-operations", "href": "https://w3c.github.io/webcrypto/#aes-ctr-operations", "level": 3, "title": "Operations", - "number": "25.7" + "number": "27.7" }, { "id": "aes-cbc", "href": "https://w3c.github.io/webcrypto/#aes-cbc", "level": 2, - "title": "26. AES-CBC" + "title": "28. AES-CBC" }, { "id": "aes-cbc-description", "href": "https://w3c.github.io/webcrypto/#aes-cbc-description", "level": 3, "title": "Description", - "number": "26.1" + "number": "28.1" }, { "id": "aes-cbc-registration", "href": "https://w3c.github.io/webcrypto/#aes-cbc-registration", "level": 3, "title": "Registration", - "number": "26.2" + "number": "28.2" }, { "id": "aes-cbc-params", "href": "https://w3c.github.io/webcrypto/#aes-cbc-params", "level": 3, "title": "AesCbcParams dictionary", - "number": "26.3" + "number": "28.3" }, { "id": "aes-cbc-operations", "href": "https://w3c.github.io/webcrypto/#aes-cbc-operations", "level": 3, "title": "Operations", - "number": "26.4" + "number": "28.4" }, { "id": "aes-gcm", "href": "https://w3c.github.io/webcrypto/#aes-gcm", "level": 2, - "title": "27. AES-GCM" + "title": "29. AES-GCM" }, { "id": "aes-gcm-description", "href": "https://w3c.github.io/webcrypto/#aes-gcm-description", "level": 3, "title": "Description", - "number": "27.1" + "number": "29.1" }, { "id": "aes-gcm-registration", "href": "https://w3c.github.io/webcrypto/#aes-gcm-registration", "level": 3, "title": "Registration", - "number": "27.2" + "number": "29.2" }, { "id": "aes-gcm-params", "href": "https://w3c.github.io/webcrypto/#aes-gcm-params", "level": 3, "title": "AesGcmParams dictionary", - "number": "27.3" + "number": "29.3" }, { "id": "aes-gcm-operations", "href": "https://w3c.github.io/webcrypto/#aes-gcm-operations", "level": 3, "title": "Operations", - "number": "27.4" + "number": "29.4" }, { "id": "aes-kw", "href": "https://w3c.github.io/webcrypto/#aes-kw", "level": 2, - "title": "28. AES-KW" + "title": "30. AES-KW" }, { "id": "aes-kw-description", "href": "https://w3c.github.io/webcrypto/#aes-kw-description", "level": 3, "title": "Description", - "number": "28.1" + "number": "30.1" }, { "id": "aes-kw-registration", "href": "https://w3c.github.io/webcrypto/#aes-kw-registration", "level": 3, "title": "Registration", - "number": "28.2" + "number": "30.2" }, { "id": "aes-kw-operations", "href": "https://w3c.github.io/webcrypto/#aes-kw-operations", "level": 3, "title": "Operations", - "number": "28.3" + "number": "30.3" }, { "id": "hmac", "href": "https://w3c.github.io/webcrypto/#hmac", "level": 2, - "title": "29. HMAC" + "title": "31. HMAC" }, { "id": "hmac-description", "href": "https://w3c.github.io/webcrypto/#hmac-description", "level": 3, "title": "Description", - "number": "29.1" + "number": "31.1" }, { "id": "hmac-registration", "href": "https://w3c.github.io/webcrypto/#hmac-registration", "level": 3, "title": "Registration", - "number": "29.2" + "number": "31.2" }, { "id": "hmac-importparams", "href": "https://w3c.github.io/webcrypto/#hmac-importparams", "level": 3, "title": "HmacImportParams dictionary", - "number": "29.3" + "number": "31.3" }, { "id": "HmacKeyAlgorithm-dictionary", "href": "https://w3c.github.io/webcrypto/#HmacKeyAlgorithm-dictionary", "level": 3, "title": "HmacKeyAlgorithm dictionary", - "number": "29.4" + "number": "31.4" }, { "id": "hmac-keygen-params", "href": "https://w3c.github.io/webcrypto/#hmac-keygen-params", "level": 3, "title": "HmacKeyGenParams dictionary", - "number": "29.5" + "number": "31.5" }, { "id": "hmac-operations", "href": "https://w3c.github.io/webcrypto/#hmac-operations", "level": 3, "title": "Operations", - "number": "29.6" + "number": "31.6" }, { "id": "sha", "href": "https://w3c.github.io/webcrypto/#sha", "level": 2, - "title": "30. SHA" + "title": "32. SHA" }, { "id": "sha-description", "href": "https://w3c.github.io/webcrypto/#sha-description", "level": 3, "title": "Description", - "number": "30.1" + "number": "32.1" }, { "id": "sha-registration", "href": "https://w3c.github.io/webcrypto/#sha-registration", "level": 3, "title": "Registration", - "number": "30.2" + "number": "32.2" }, { "id": "sha-operations", "href": "https://w3c.github.io/webcrypto/#sha-operations", "level": 3, "title": "Operations", - "number": "30.3" + "number": "32.3" }, { "id": "hkdf", "href": "https://w3c.github.io/webcrypto/#hkdf", "level": 2, - "title": "31. HKDF" + "title": "33. HKDF" }, { "id": "hkdf-description", "href": "https://w3c.github.io/webcrypto/#hkdf-description", "level": 3, "title": "Description", - "number": "31.1" + "number": "33.1" }, { "id": "hkdf-registration", "href": "https://w3c.github.io/webcrypto/#hkdf-registration", "level": 3, "title": "Registration", - "number": "31.2" + "number": "33.2" }, { "id": "hkdf-params", "href": "https://w3c.github.io/webcrypto/#hkdf-params", "level": 3, "title": "HkdfParams dictionary", - "number": "31.3" + "number": "33.3" }, { "id": "hkdf-operations", "href": "https://w3c.github.io/webcrypto/#hkdf-operations", "level": 3, "title": "Operations", - "number": "31.4" + "number": "33.4" }, { "id": "pbkdf2", "href": "https://w3c.github.io/webcrypto/#pbkdf2", "level": 2, - "title": "32. PBKDF2" + "title": "34. PBKDF2" }, { "id": "pbkdf2-description", "href": "https://w3c.github.io/webcrypto/#pbkdf2-description", "level": 3, "title": "Description", - "number": "32.1" + "number": "34.1" }, { "id": "pbkdf2-registration", "href": "https://w3c.github.io/webcrypto/#pbkdf2-registration", "level": 3, "title": "Registration", - "number": "32.2" + "number": "34.2" }, { "id": "pbkdf2-params", "href": "https://w3c.github.io/webcrypto/#pbkdf2-params", "level": 3, "title": "Pbkdf2Params dictionary", - "number": "32.3" + "number": "34.3" }, { "id": "pbkdf2-operations", "href": "https://w3c.github.io/webcrypto/#pbkdf2-operations", "level": 3, "title": "Operations", - "number": "32.4" + "number": "34.4" }, { "id": "examples-section", "href": "https://w3c.github.io/webcrypto/#examples-section", "level": 2, - "title": "33. JavaScript Example Code" + "title": "35. JavaScript Example Code" + }, + { + "id": "example-key-exchange", + "href": "https://w3c.github.io/webcrypto/#example-key-exchange", + "level": 3, + "title": "Generate two key pairs, derive a shared key, encrypt some data", + "number": "35.1" }, { "id": "examples-signing", "href": "https://w3c.github.io/webcrypto/#examples-signing", "level": 3, "title": "Generate a signing key pair, sign some data", - "number": "33.1" + "number": "35.2" }, { "id": "examples-symmetric-encryption", "href": "https://w3c.github.io/webcrypto/#examples-symmetric-encryption", "level": 3, - "title": "Symmetric Encryption", - "number": "33.2" + "title": "Generate a symmetric key, encrypt some data", + "number": "35.3" }, { "id": "examples-random-uuid", "href": "https://w3c.github.io/webcrypto/#examples-random-uuid", "level": 3, "title": "Generate unique name for download", - "number": "33.3" + "number": "35.4" }, { "id": "iana-section", "href": "https://w3c.github.io/webcrypto/#iana-section", - "level": 3, - "title": "IANA Considerations", - "number": "33.4" + "level": 2, + "title": "36. IANA Considerations" }, { "id": "iana-section-jws-jwa", "href": "https://w3c.github.io/webcrypto/#iana-section-jws-jwa", - "level": 4, + "level": 3, "title": "JSON Web Signature and Encryption Algorithms Registration", - "number": "33.4.1" + "number": "36.1" }, { "id": "iana-section-jwk", "href": "https://w3c.github.io/webcrypto/#iana-section-jwk", - "level": 4, + "level": 3, "title": "JSON Web Key Parameters Registration", - "number": "33.4.2" + "number": "36.2" }, { "id": "acknowledgements-section", "href": "https://w3c.github.io/webcrypto/#acknowledgements-section", - "level": 3, - "title": "Acknowledgments", - "number": "33.5" + "level": 2, + "title": "37. Acknowledgments" }, { "id": "jwk-mapping", diff --git a/ed/ids/WebCryptoAPI.json b/ed/ids/WebCryptoAPI.json index 8c1c8d2179a3..5b60c9e9984e 100644 --- a/ed/ids/WebCryptoAPI.json +++ b/ed/ids/WebCryptoAPI.json @@ -1726,24 +1726,231 @@ "https://w3c.github.io/webcrypto/#ref-for-dfn-applicable-specification-45", "https://w3c.github.io/webcrypto/#ref-for-dfn-EcKeyAlgorithm-namedCurve-53", "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-92", - "https://w3c.github.io/webcrypto/#aes-ctr", - "https://w3c.github.io/webcrypto/#x25-aes-ctr", - "https://w3c.github.io/webcrypto/#aes-ctr-description", + "https://w3c.github.io/webcrypto/#ed25519", + "https://w3c.github.io/webcrypto/#x25-ed25519", + "https://w3c.github.io/webcrypto/#ed25519-description", "https://w3c.github.io/webcrypto/#x25-1-description", - "https://w3c.github.io/webcrypto/#aes-ctr-registration", + "https://w3c.github.io/webcrypto/#ed25519-registration", "https://w3c.github.io/webcrypto/#x25-2-registration", "https://w3c.github.io/webcrypto/#ref-for-recognized-algorithm-name-7", "https://w3c.github.io/webcrypto/#ref-for-supported-operations-6", "https://w3c.github.io/webcrypto/#ref-for-algorithm-specific-params-6", "https://w3c.github.io/webcrypto/#ref-for-algorithm-result-6", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKeyPair-13", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-81", + "https://w3c.github.io/webcrypto/#ed25519-operations", + "https://w3c.github.io/webcrypto/#x25-3-operations", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-67", + "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-private-36", + "https://w3c.github.io/webcrypto/#issue-container-number-1", + "https://w3c.github.io/webcrypto/#h-issue", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-68", + "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-public-2", + "https://w3c.github.io/webcrypto/#issue-container-number-2", + "https://w3c.github.io/webcrypto/#h-issue-0", + "https://w3c.github.io/webcrypto/#issue-container-number-3", + "https://w3c.github.io/webcrypto/#h-issue-1", + "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-7", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-31", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-82", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-69", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-93", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-25", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-usages-27", + "https://w3c.github.io/webcrypto/#ref-for-concept-usage-intersection-11", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-83", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-70", + "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-private-37", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-94", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-26", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-usages-28", + "https://w3c.github.io/webcrypto/#ref-for-concept-usage-intersection-12", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKeyPair-14", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKeyPair-publicKey-7", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKeyPair-privateKey-8", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-spki-16", + "https://w3c.github.io/webcrypto/#ref-for-concept-parse-a-spki-6", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-84", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-71", + "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-8", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-32", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-95", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-pkcs8-16", + "https://w3c.github.io/webcrypto/#ref-for-concept-parse-a-privateKeyInfo-6", + "https://w3c.github.io/webcrypto/#ref-for-concept-parse-an-asn1-structure-11", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-85", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-72", + "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-private-38", + "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-9", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-33", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-96", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-16", + "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-17", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-d-21", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-d-22", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-kty-7", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-crv-11", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-use-6", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-key_ops-6", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-ext-7", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-d-23", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-86", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-73", + "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-private-39", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-87", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-74", + "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-public-3", + "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-10", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-34", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-97", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-13", + "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-11", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-35", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-88", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-75", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-98", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-89", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-33", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-spki-17", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-76", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-pkcs8-17", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-77", + "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-private-40", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-34", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-17", + "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-18", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-x-3", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-78", + "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-private-41", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-d-24", + "https://w3c.github.io/webcrypto/#ref-for-dom-cryptokey-usages-6", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-27", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-14", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-79", + "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-9", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-35", + "https://w3c.github.io/webcrypto/#x25519", + "https://w3c.github.io/webcrypto/#x26-x25519", + "https://w3c.github.io/webcrypto/#x25519-description", + "https://w3c.github.io/webcrypto/#x26-1-description", + "https://w3c.github.io/webcrypto/#x25519-registration", + "https://w3c.github.io/webcrypto/#x26-2-registration", + "https://w3c.github.io/webcrypto/#ref-for-recognized-algorithm-name-8", + "https://w3c.github.io/webcrypto/#ref-for-supported-operations-7", + "https://w3c.github.io/webcrypto/#ref-for-algorithm-specific-params-7", + "https://w3c.github.io/webcrypto/#ref-for-algorithm-result-7", + "https://w3c.github.io/webcrypto/#ref-for-dfn-EcdhKeyDeriveParams-3", + "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-10", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKeyPair-15", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-90", + "https://w3c.github.io/webcrypto/#x25519-operations", + "https://w3c.github.io/webcrypto/#x26-3-operations", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-80", + "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-private-42", + "https://w3c.github.io/webcrypto/#ref-for-dfn-EcdhKeyDeriveParams-public-3", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-81", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-36", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-99", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-37", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-100", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-36", + "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-containing-2", + "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-12", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-38", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-91", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-82", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-101", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-28", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-usages-29", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-92", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-83", + "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-private-43", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-102", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-29", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-usages-30", + "https://w3c.github.io/webcrypto/#ref-for-concept-usage-intersection-13", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKeyPair-16", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKeyPair-publicKey-8", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKeyPair-privateKey-9", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-spki-18", + "https://w3c.github.io/webcrypto/#ref-for-concept-parse-a-spki-7", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-93", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-84", + "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-13", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-39", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-103", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-pkcs8-18", + "https://w3c.github.io/webcrypto/#ref-for-concept-parse-a-privateKeyInfo-7", + "https://w3c.github.io/webcrypto/#ref-for-concept-parse-an-asn1-structure-12", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-94", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-85", + "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-private-44", + "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-14", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-40", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-104", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-18", + "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-19", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-d-25", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-d-26", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-kty-8", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-crv-12", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-use-7", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-key_ops-7", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-ext-8", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-d-27", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-95", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-86", + "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-private-45", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-96", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-87", + "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-public-4", + "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-15", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-41", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-105", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-15", + "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-16", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-42", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-97", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-88", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-106", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-98", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-37", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-spki-19", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-89", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-pkcs8-19", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-90", + "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-private-46", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-38", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-19", + "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-20", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-x-4", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-91", + "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-private-47", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-d-28", + "https://w3c.github.io/webcrypto/#ref-for-dom-cryptokey-usages-7", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-30", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-16", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-92", + "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-11", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-39", + "https://w3c.github.io/webcrypto/#aes-ctr", + "https://w3c.github.io/webcrypto/#x27-aes-ctr", + "https://w3c.github.io/webcrypto/#aes-ctr-description", + "https://w3c.github.io/webcrypto/#x27-1-description", + "https://w3c.github.io/webcrypto/#aes-ctr-registration", + "https://w3c.github.io/webcrypto/#x27-2-registration", + "https://w3c.github.io/webcrypto/#ref-for-recognized-algorithm-name-9", + "https://w3c.github.io/webcrypto/#ref-for-supported-operations-8", + "https://w3c.github.io/webcrypto/#ref-for-algorithm-specific-params-8", + "https://w3c.github.io/webcrypto/#ref-for-algorithm-result-8", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesCtrParams-1", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesCtrParams-2", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyGenParams-1", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-81", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-82", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-99", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-100", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesDerivedKeyParams-1", "https://w3c.github.io/webcrypto/#aes-ctr-params", - "https://w3c.github.io/webcrypto/#x25-3-aesctrparams-dictionary", + "https://w3c.github.io/webcrypto/#x27-3-aesctrparams-dictionary", "https://w3c.github.io/webcrypto/#dfn-AesCtrParams", "https://w3c.github.io/webcrypto/#webidl-1566726741", "https://w3c.github.io/webcrypto/#idl-def-aesctrparams", @@ -1757,17 +1964,17 @@ "https://w3c.github.io/webcrypto/#ref-for-dfn-AesCtrParams-counter-2", "https://w3c.github.io/webcrypto/#dfn-AesCtrParams-length", "https://w3c.github.io/webcrypto/#AesKeyAlgorithm-dictionary", - "https://w3c.github.io/webcrypto/#x25-4-aeskeyalgorithm-dictionary", + "https://w3c.github.io/webcrypto/#x27-4-aeskeyalgorithm-dictionary", "https://w3c.github.io/webcrypto/#dfn-AesKeyAlgorithm", "https://w3c.github.io/webcrypto/#webidl-1138295941", "https://w3c.github.io/webcrypto/#idl-def-aeskeyalgorithm", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-1", - "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-7", + "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-17", "https://w3c.github.io/webcrypto/#idl-def-aeskeyalgorithm-length", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-length-1", "https://w3c.github.io/webcrypto/#dfn-AesKeyAlgorithm-length", "https://w3c.github.io/webcrypto/#aes-keygen-params", - "https://w3c.github.io/webcrypto/#x25-5-aeskeygenparams-dictionary", + "https://w3c.github.io/webcrypto/#x27-5-aeskeygenparams-dictionary", "https://w3c.github.io/webcrypto/#dfn-AesKeyGenParams", "https://w3c.github.io/webcrypto/#webidl-1306510144", "https://w3c.github.io/webcrypto/#idl-def-aeskeygenparams", @@ -1777,7 +1984,7 @@ "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyGenParams-length-1", "https://w3c.github.io/webcrypto/#dfn-AesKeyGenParams-length", "https://w3c.github.io/webcrypto/#aes-derivedkey-params", - "https://w3c.github.io/webcrypto/#x25-6-aesderivedkeyparams-dictionary", + "https://w3c.github.io/webcrypto/#x27-6-aesderivedkeyparams-dictionary", "https://w3c.github.io/webcrypto/#dfn-AesDerivedKeyParams", "https://w3c.github.io/webcrypto/#webidl-379647633", "https://w3c.github.io/webcrypto/#idl-def-aesderivedkeyparams", @@ -1787,7 +1994,7 @@ "https://w3c.github.io/webcrypto/#ref-for-dfn-AesDerivedKeyParams-length-1", "https://w3c.github.io/webcrypto/#dfn-AesDerivedKeyParams-length", "https://w3c.github.io/webcrypto/#aes-ctr-operations", - "https://w3c.github.io/webcrypto/#x25-7-operations", + "https://w3c.github.io/webcrypto/#x27-7-operations", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesCtrParams-counter-3", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesCtrParams-length-2", "https://w3c.github.io/webcrypto/#ref-for-concept-contents-of-arraybuffer-11", @@ -1802,68 +2009,68 @@ "https://w3c.github.io/webcrypto/#ref-for-concept-contents-of-arraybuffer-14", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyGenParams-length-2", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyGenParams-length-3", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-83", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-101", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-2", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-31", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-43", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-length-2", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyGenParams-length-4", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-67", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-93", "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-secret-6", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-93", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-25", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-usages-27", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-13", - "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-9", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-16", - "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-17", - "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-kty-7", - "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-10", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-107", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-31", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-usages-31", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-17", + "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-12", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-20", + "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-21", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-kty-9", + "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-13", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-k-1", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-alg-15", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-alg-16", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-alg-17", - "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-use-6", - "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-key_ops-6", - "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-ext-7", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-84", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-68", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-use-8", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-key_ops-8", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-ext-9", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-102", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-94", "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-secret-7", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-3", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-32", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-44", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-length-3", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-94", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-33", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-14", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-34", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-17", - "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-18", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-108", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-40", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-18", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-41", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-21", + "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-22", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-k-2", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-35", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-42", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-length-4", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-length-5", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-length-6", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-usages-28", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-26", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-usages-32", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-32", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesDerivedKeyParams-length-2", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesDerivedKeyParams-length-3", "https://w3c.github.io/webcrypto/#aes-cbc", - "https://w3c.github.io/webcrypto/#x26-aes-cbc", + "https://w3c.github.io/webcrypto/#x28-aes-cbc", "https://w3c.github.io/webcrypto/#aes-cbc-description", - "https://w3c.github.io/webcrypto/#x26-1-description", + "https://w3c.github.io/webcrypto/#x28-1-description", "https://w3c.github.io/webcrypto/#aes-cbc-registration", - "https://w3c.github.io/webcrypto/#x26-2-registration", - "https://w3c.github.io/webcrypto/#ref-for-recognized-algorithm-name-8", - "https://w3c.github.io/webcrypto/#ref-for-supported-operations-7", - "https://w3c.github.io/webcrypto/#ref-for-algorithm-specific-params-7", - "https://w3c.github.io/webcrypto/#ref-for-algorithm-result-7", + "https://w3c.github.io/webcrypto/#x28-2-registration", + "https://w3c.github.io/webcrypto/#ref-for-recognized-algorithm-name-10", + "https://w3c.github.io/webcrypto/#ref-for-supported-operations-9", + "https://w3c.github.io/webcrypto/#ref-for-algorithm-specific-params-9", + "https://w3c.github.io/webcrypto/#ref-for-algorithm-result-9", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesCbcParams-1", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesCbcParams-2", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyGenParams-3", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-85", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-86", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-103", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-104", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesDerivedKeyParams-3", "https://w3c.github.io/webcrypto/#aes-cbc-params", - "https://w3c.github.io/webcrypto/#x26-3-aescbcparams-dictionary", + "https://w3c.github.io/webcrypto/#x28-3-aescbcparams-dictionary", "https://w3c.github.io/webcrypto/#dfn-AesCbcParams", "https://w3c.github.io/webcrypto/#webidl-15109397", "https://w3c.github.io/webcrypto/#idl-def-aescbcparams", @@ -1873,7 +2080,7 @@ "https://w3c.github.io/webcrypto/#ref-for-dfn-AesCbcParams-iv-1", "https://w3c.github.io/webcrypto/#dfn-AesCbcParams-iv", "https://w3c.github.io/webcrypto/#aes-cbc-operations", - "https://w3c.github.io/webcrypto/#x26-4-operations", + "https://w3c.github.io/webcrypto/#x28-4-operations", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesCbcParams-iv-2", "https://w3c.github.io/webcrypto/#ref-for-concept-contents-of-arraybuffer-15", "https://w3c.github.io/webcrypto/#ref-for-concept-contents-of-arraybuffer-16", @@ -1884,68 +2091,68 @@ "https://w3c.github.io/webcrypto/#ref-for-concept-contents-of-arraybuffer-18", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyGenParams-length-5", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyGenParams-length-6", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-87", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-105", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-4", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-33", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-45", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-length-7", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyGenParams-length-7", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-69", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-95", "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-secret-8", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-95", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-27", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-usages-29", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-15", - "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-11", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-18", - "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-19", - "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-kty-8", - "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-12", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-109", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-33", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-usages-33", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-19", + "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-14", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-22", + "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-23", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-kty-10", + "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-15", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-k-3", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-alg-18", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-alg-19", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-alg-20", - "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-use-7", - "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-key_ops-7", - "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-ext-8", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-88", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-70", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-use-9", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-key_ops-9", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-ext-10", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-106", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-96", "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-secret-9", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-5", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-34", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-46", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-length-8", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-96", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-36", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-16", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-37", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-19", - "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-20", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-110", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-43", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-20", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-44", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-23", + "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-24", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-k-4", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-38", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-45", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-length-9", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-length-10", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-length-11", - "https://w3c.github.io/webcrypto/#ref-for-dom-cryptokey-usages-6", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-28", + "https://w3c.github.io/webcrypto/#ref-for-dom-cryptokey-usages-8", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-34", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesDerivedKeyParams-length-4", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesDerivedKeyParams-length-5", "https://w3c.github.io/webcrypto/#aes-gcm", - "https://w3c.github.io/webcrypto/#x27-aes-gcm", + "https://w3c.github.io/webcrypto/#x29-aes-gcm", "https://w3c.github.io/webcrypto/#aes-gcm-description", - "https://w3c.github.io/webcrypto/#x27-1-description", + "https://w3c.github.io/webcrypto/#x29-1-description", "https://w3c.github.io/webcrypto/#aes-gcm-registration", - "https://w3c.github.io/webcrypto/#x27-2-registration", - "https://w3c.github.io/webcrypto/#ref-for-recognized-algorithm-name-9", - "https://w3c.github.io/webcrypto/#ref-for-supported-operations-8", - "https://w3c.github.io/webcrypto/#ref-for-algorithm-specific-params-8", - "https://w3c.github.io/webcrypto/#ref-for-algorithm-result-8", + "https://w3c.github.io/webcrypto/#x29-2-registration", + "https://w3c.github.io/webcrypto/#ref-for-recognized-algorithm-name-11", + "https://w3c.github.io/webcrypto/#ref-for-supported-operations-10", + "https://w3c.github.io/webcrypto/#ref-for-algorithm-specific-params-10", + "https://w3c.github.io/webcrypto/#ref-for-algorithm-result-10", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesGcmParams-1", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesGcmParams-2", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyGenParams-4", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-89", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-90", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-107", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-108", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesDerivedKeyParams-4", "https://w3c.github.io/webcrypto/#aes-gcm-params", - "https://w3c.github.io/webcrypto/#x27-3-aesgcmparams-dictionary", + "https://w3c.github.io/webcrypto/#x29-3-aesgcmparams-dictionary", "https://w3c.github.io/webcrypto/#dfn-AesGcmParams", "https://w3c.github.io/webcrypto/#webidl-469526380", "https://w3c.github.io/webcrypto/#idl-def-aesgcmparams", @@ -1961,7 +2168,7 @@ "https://w3c.github.io/webcrypto/#dfn-AesGcmParams-additionalData", "https://w3c.github.io/webcrypto/#dfn-AesGcmParams-tagLength", "https://w3c.github.io/webcrypto/#aes-gcm-operations", - "https://w3c.github.io/webcrypto/#x27-4-operations", + "https://w3c.github.io/webcrypto/#x29-4-operations", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesGcmParams-iv-2", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesGcmParams-additionalData-2", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesGcmParams-tagLength-2", @@ -1987,132 +2194,132 @@ "https://w3c.github.io/webcrypto/#ref-for-concept-contents-of-arraybuffer-27", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyGenParams-length-8", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyGenParams-length-9", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-91", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-109", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-6", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-35", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-47", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-length-12", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyGenParams-length-10", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-71", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-97", "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-secret-10", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-97", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-29", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-usages-30", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-17", - "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-13", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-20", - "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-21", - "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-kty-9", - "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-14", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-111", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-35", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-usages-34", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-21", + "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-16", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-24", + "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-25", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-kty-11", + "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-17", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-k-5", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-alg-21", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-alg-22", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-alg-23", - "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-use-8", - "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-key_ops-8", - "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-ext-9", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-92", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-72", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-use-10", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-key_ops-10", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-ext-11", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-110", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-98", "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-secret-11", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-7", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-36", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-48", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-length-13", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-98", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-39", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-18", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-40", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-21", - "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-22", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-112", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-46", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-22", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-47", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-25", + "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-26", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-k-6", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-41", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-48", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-length-14", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-length-15", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-length-16", - "https://w3c.github.io/webcrypto/#ref-for-dom-cryptokey-usages-7", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-30", + "https://w3c.github.io/webcrypto/#ref-for-dom-cryptokey-usages-9", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-36", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesDerivedKeyParams-length-6", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesDerivedKeyParams-length-7", "https://w3c.github.io/webcrypto/#aes-kw", - "https://w3c.github.io/webcrypto/#x28-aes-kw", + "https://w3c.github.io/webcrypto/#x30-aes-kw", "https://w3c.github.io/webcrypto/#aes-kw-description", - "https://w3c.github.io/webcrypto/#x28-1-description", + "https://w3c.github.io/webcrypto/#x30-1-description", "https://w3c.github.io/webcrypto/#aes-kw-registration", - "https://w3c.github.io/webcrypto/#x28-2-registration", - "https://w3c.github.io/webcrypto/#ref-for-recognized-algorithm-name-10", - "https://w3c.github.io/webcrypto/#ref-for-supported-operations-9", - "https://w3c.github.io/webcrypto/#ref-for-algorithm-specific-params-9", - "https://w3c.github.io/webcrypto/#ref-for-algorithm-result-9", + "https://w3c.github.io/webcrypto/#x30-2-registration", + "https://w3c.github.io/webcrypto/#ref-for-recognized-algorithm-name-12", + "https://w3c.github.io/webcrypto/#ref-for-supported-operations-11", + "https://w3c.github.io/webcrypto/#ref-for-algorithm-specific-params-11", + "https://w3c.github.io/webcrypto/#ref-for-algorithm-result-11", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyGenParams-5", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-93", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-94", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-111", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-112", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesDerivedKeyParams-5", "https://w3c.github.io/webcrypto/#aes-kw-operations", - "https://w3c.github.io/webcrypto/#x28-3-operations", + "https://w3c.github.io/webcrypto/#x30-3-operations", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyGenParams-length-11", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyGenParams-length-12", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-95", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-113", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-8", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-37", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-49", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-length-17", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyGenParams-length-13", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-73", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-99", "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-secret-12", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-99", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-31", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-usages-31", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-19", - "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-15", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-22", - "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-23", - "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-kty-10", - "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-16", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-113", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-37", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-usages-35", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-23", + "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-18", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-26", + "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-27", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-kty-12", + "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-19", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-k-7", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-alg-24", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-alg-25", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-alg-26", - "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-use-9", - "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-key_ops-9", - "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-ext-10", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-96", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-74", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-use-11", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-key_ops-11", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-ext-12", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-114", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-100", "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-secret-13", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-9", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-38", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-50", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-length-18", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-100", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-42", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-20", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-43", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-23", - "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-24", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-114", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-49", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-24", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-50", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-27", + "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-28", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-k-8", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-44", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-51", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-length-19", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-length-20", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesKeyAlgorithm-length-21", - "https://w3c.github.io/webcrypto/#ref-for-dom-cryptokey-usages-8", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-32", + "https://w3c.github.io/webcrypto/#ref-for-dom-cryptokey-usages-10", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-38", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesDerivedKeyParams-length-8", "https://w3c.github.io/webcrypto/#ref-for-dfn-AesDerivedKeyParams-length-9", "https://w3c.github.io/webcrypto/#hmac", - "https://w3c.github.io/webcrypto/#x29-hmac", + "https://w3c.github.io/webcrypto/#x31-hmac", "https://w3c.github.io/webcrypto/#hmac-description", - "https://w3c.github.io/webcrypto/#x29-1-description", + "https://w3c.github.io/webcrypto/#x31-1-description", "https://w3c.github.io/webcrypto/#ref-for-dfn-applicable-specification-46", "https://w3c.github.io/webcrypto/#dfn-hmac-extended-import-steps", "https://w3c.github.io/webcrypto/#dfn-hmac-extended-export-steps", "https://w3c.github.io/webcrypto/#hmac-registration", - "https://w3c.github.io/webcrypto/#x29-2-registration", - "https://w3c.github.io/webcrypto/#ref-for-recognized-algorithm-name-11", - "https://w3c.github.io/webcrypto/#ref-for-supported-operations-10", - "https://w3c.github.io/webcrypto/#ref-for-algorithm-specific-params-10", - "https://w3c.github.io/webcrypto/#ref-for-algorithm-result-10", + "https://w3c.github.io/webcrypto/#x31-2-registration", + "https://w3c.github.io/webcrypto/#ref-for-recognized-algorithm-name-13", + "https://w3c.github.io/webcrypto/#ref-for-supported-operations-12", + "https://w3c.github.io/webcrypto/#ref-for-algorithm-specific-params-12", + "https://w3c.github.io/webcrypto/#ref-for-algorithm-result-12", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacKeyGenParams-1", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-97", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-115", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacImportParams-1", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-98", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-116", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacImportParams-2", "https://w3c.github.io/webcrypto/#hmac-importparams", - "https://w3c.github.io/webcrypto/#x29-3-hmacimportparams-dictionary", + "https://w3c.github.io/webcrypto/#x31-3-hmacimportparams-dictionary", "https://w3c.github.io/webcrypto/#dfn-HmacImportParams", "https://w3c.github.io/webcrypto/#webidl-323396047", "https://w3c.github.io/webcrypto/#idl-def-hmacimportparams", @@ -2126,21 +2333,21 @@ "https://w3c.github.io/webcrypto/#dfn-HmacImportParams-hash", "https://w3c.github.io/webcrypto/#dfn-HmacImportParams-length", "https://w3c.github.io/webcrypto/#HmacKeyAlgorithm-dictionary", - "https://w3c.github.io/webcrypto/#x29-4-hmackeyalgorithm-dictionary", + "https://w3c.github.io/webcrypto/#x31-4-hmackeyalgorithm-dictionary", "https://w3c.github.io/webcrypto/#dfn-HmacKeyAlgorithm", "https://w3c.github.io/webcrypto/#webidl-604581071", "https://w3c.github.io/webcrypto/#idl-def-hmackeyalgorithm", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacKeyAlgorithm-1", - "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-8", + "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-18", "https://w3c.github.io/webcrypto/#idl-def-hmackeyalgorithm-hash", - "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-9", + "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-19", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacKeyAlgorithm-hash-1", "https://w3c.github.io/webcrypto/#idl-def-hmackeyalgorithm-length", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacKeyAlgorithm-length-1", "https://w3c.github.io/webcrypto/#dfn-HmacKeyAlgorithm-hash", "https://w3c.github.io/webcrypto/#dfn-HmacKeyAlgorithm-length", "https://w3c.github.io/webcrypto/#hmac-keygen-params", - "https://w3c.github.io/webcrypto/#x29-5-hmackeygenparams-dictionary", + "https://w3c.github.io/webcrypto/#x31-5-hmackeygenparams-dictionary", "https://w3c.github.io/webcrypto/#dfn-HmacKeyGenParams", "https://w3c.github.io/webcrypto/#webidl-544098843", "https://w3c.github.io/webcrypto/#idl-def-hmackeygenparams", @@ -2154,125 +2361,125 @@ "https://w3c.github.io/webcrypto/#dfn-HmacKeyGenParams-hash", "https://w3c.github.io/webcrypto/#dfn-HmacKeyGenParams-length", "https://w3c.github.io/webcrypto/#hmac-operations", - "https://w3c.github.io/webcrypto/#x29-6-operations", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-45", + "https://w3c.github.io/webcrypto/#x31-6-operations", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-52", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacKeyAlgorithm-hash-2", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-101", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-46", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-115", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-53", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacKeyAlgorithm-hash-3", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-102", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-116", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacKeyGenParams-length-2", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacKeyGenParams-hash-2", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacKeyGenParams-length-3", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacKeyGenParams-length-4", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-99", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-117", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacKeyAlgorithm-2", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-39", - "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-10", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-40", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-51", + "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-20", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-52", "https://w3c.github.io/webcrypto/#ref-for-dom-algorithm-name-14", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacKeyGenParams-hash-3", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacKeyAlgorithm-hash-4", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-75", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-101", "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-secret-14", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-103", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-33", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-usages-32", - "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-11", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-21", - "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-17", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-117", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-39", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-usages-36", + "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-21", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-25", + "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-20", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacImportParams-hash-2", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-24", - "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-25", - "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-kty-11", - "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-18", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-28", + "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-29", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-kty-13", + "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-21", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-k-9", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacImportParams-hash-3", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-41", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-53", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-alg-27", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-42", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-54", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-alg-28", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-43", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-55", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-alg-29", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-44", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-56", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-alg-30", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-45", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-57", "https://w3c.github.io/webcrypto/#ref-for-dfn-applicable-specification-47", "https://w3c.github.io/webcrypto/#ref-for-dfn-hmac-extended-import-steps-1", "https://w3c.github.io/webcrypto/#ref-for-dfn-applicable-specification-48", - "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-use-10", - "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-key_ops-10", - "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-ext-11", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-use-12", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-key_ops-12", + "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-ext-13", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacImportParams-length-2", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacImportParams-length-3", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacImportParams-length-4", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacImportParams-length-5", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-100", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-76", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-118", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-102", "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-secret-15", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacKeyAlgorithm-3", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-46", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-58", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacKeyAlgorithm-length-2", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacKeyAlgorithm-hash-5", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-104", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-47", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-48", - "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-containing-2", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-22", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-25", - "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-26", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-118", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-54", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-55", + "https://w3c.github.io/webcrypto/#ref-for-dfn-octet-string-containing-3", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-26", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-29", + "https://w3c.github.io/webcrypto/#ref-for-dfn-JsonWebKey-30", "https://w3c.github.io/webcrypto/#ref-for-dom-jsonwebkey-k-10", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-105", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-119", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacKeyAlgorithm-hash-6", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-47", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-48", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-49", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-50", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-51", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-59", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-60", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-61", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-62", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-63", "https://w3c.github.io/webcrypto/#ref-for-dfn-applicable-specification-49", "https://w3c.github.io/webcrypto/#ref-for-dfn-hmac-extended-export-steps-1", "https://w3c.github.io/webcrypto/#ref-for-dfn-applicable-specification-50", - "https://w3c.github.io/webcrypto/#ref-for-dom-cryptokey-usages-9", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-34", + "https://w3c.github.io/webcrypto/#ref-for-dom-cryptokey-usages-11", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-extractable-40", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacImportParams-length-6", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacImportParams-hash-4", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacImportParams-length-7", "https://w3c.github.io/webcrypto/#ref-for-dfn-HmacImportParams-length-8", "https://w3c.github.io/webcrypto/#sha", - "https://w3c.github.io/webcrypto/#x30-sha", + "https://w3c.github.io/webcrypto/#x32-sha", "https://w3c.github.io/webcrypto/#sha-description", - "https://w3c.github.io/webcrypto/#x30-1-description", + "https://w3c.github.io/webcrypto/#x32-1-description", "https://w3c.github.io/webcrypto/#sha-registration", - "https://w3c.github.io/webcrypto/#x30-2-registration", - "https://w3c.github.io/webcrypto/#ref-for-recognized-algorithm-name-12", + "https://w3c.github.io/webcrypto/#x32-2-registration", + "https://w3c.github.io/webcrypto/#ref-for-recognized-algorithm-name-14", "https://w3c.github.io/webcrypto/#alg-sha-1", "https://w3c.github.io/webcrypto/#alg-sha-256", "https://w3c.github.io/webcrypto/#alg-sha-384", "https://w3c.github.io/webcrypto/#alg-sha-512", - "https://w3c.github.io/webcrypto/#ref-for-supported-operations-11", - "https://w3c.github.io/webcrypto/#ref-for-algorithm-specific-params-11", - "https://w3c.github.io/webcrypto/#ref-for-algorithm-result-11", + "https://w3c.github.io/webcrypto/#ref-for-supported-operations-13", + "https://w3c.github.io/webcrypto/#ref-for-algorithm-specific-params-13", + "https://w3c.github.io/webcrypto/#ref-for-algorithm-result-13", "https://w3c.github.io/webcrypto/#sha-operations", - "https://w3c.github.io/webcrypto/#x30-3-operations", + "https://w3c.github.io/webcrypto/#x32-3-operations", "https://w3c.github.io/webcrypto/#ref-for-dom-algorithm-name-15", "https://w3c.github.io/webcrypto/#ref-for-dom-algorithm-name-16", "https://w3c.github.io/webcrypto/#ref-for-dom-algorithm-name-17", "https://w3c.github.io/webcrypto/#ref-for-dom-algorithm-name-18", "https://w3c.github.io/webcrypto/#hkdf", - "https://w3c.github.io/webcrypto/#x31-hkdf", + "https://w3c.github.io/webcrypto/#x33-hkdf", "https://w3c.github.io/webcrypto/#hkdf-description", - "https://w3c.github.io/webcrypto/#x31-1-description", + "https://w3c.github.io/webcrypto/#x33-1-description", "https://w3c.github.io/webcrypto/#ref-for-dfn-applicable-specification-51", "https://w3c.github.io/webcrypto/#hkdf-registration", - "https://w3c.github.io/webcrypto/#x31-2-registration", - "https://w3c.github.io/webcrypto/#ref-for-recognized-algorithm-name-13", - "https://w3c.github.io/webcrypto/#ref-for-supported-operations-12", - "https://w3c.github.io/webcrypto/#ref-for-algorithm-specific-params-12", - "https://w3c.github.io/webcrypto/#ref-for-algorithm-result-12", + "https://w3c.github.io/webcrypto/#x33-2-registration", + "https://w3c.github.io/webcrypto/#ref-for-recognized-algorithm-name-15", + "https://w3c.github.io/webcrypto/#ref-for-supported-operations-14", + "https://w3c.github.io/webcrypto/#ref-for-algorithm-specific-params-14", + "https://w3c.github.io/webcrypto/#ref-for-algorithm-result-14", "https://w3c.github.io/webcrypto/#ref-for-dfn-HkdfParams-1", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-101", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-119", "https://w3c.github.io/webcrypto/#hkdf-params", - "https://w3c.github.io/webcrypto/#x31-3-hkdfparams-dictionary", + "https://w3c.github.io/webcrypto/#x33-3-hkdfparams-dictionary", "https://w3c.github.io/webcrypto/#dfn-HkdfParams", "https://w3c.github.io/webcrypto/#webidl-1209901303", "https://w3c.github.io/webcrypto/#idl-def-hkdfparams", @@ -2289,35 +2496,35 @@ "https://w3c.github.io/webcrypto/#dfn-HkdfParams-salt", "https://w3c.github.io/webcrypto/#dfn-HkdfParams-info", "https://w3c.github.io/webcrypto/#hkdf-operations", - "https://w3c.github.io/webcrypto/#x31-4-operations", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-49", + "https://w3c.github.io/webcrypto/#x33-4-operations", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-56", "https://w3c.github.io/webcrypto/#ref-for-dfn-HkdfParams-hash-2", "https://w3c.github.io/webcrypto/#ref-for-concept-contents-of-arraybuffer-28", "https://w3c.github.io/webcrypto/#ref-for-dfn-HkdfParams-salt-2", "https://w3c.github.io/webcrypto/#ref-for-concept-contents-of-arraybuffer-29", "https://w3c.github.io/webcrypto/#ref-for-dfn-HkdfParams-info-2", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-23", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-102", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-77", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-27", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-120", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-103", "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-secret-16", - "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-12", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-52", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-106", + "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-22", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-64", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-120", "https://w3c.github.io/webcrypto/#pbkdf2", - "https://w3c.github.io/webcrypto/#x32-pbkdf2", + "https://w3c.github.io/webcrypto/#x34-pbkdf2", "https://w3c.github.io/webcrypto/#pbkdf2-description", - "https://w3c.github.io/webcrypto/#x32-1-description", + "https://w3c.github.io/webcrypto/#x34-1-description", "https://w3c.github.io/webcrypto/#ref-for-dfn-applicable-specification-52", "https://w3c.github.io/webcrypto/#pbkdf2-registration", - "https://w3c.github.io/webcrypto/#x32-2-registration", - "https://w3c.github.io/webcrypto/#ref-for-recognized-algorithm-name-14", - "https://w3c.github.io/webcrypto/#ref-for-supported-operations-13", - "https://w3c.github.io/webcrypto/#ref-for-algorithm-specific-params-13", - "https://w3c.github.io/webcrypto/#ref-for-algorithm-result-13", + "https://w3c.github.io/webcrypto/#x34-2-registration", + "https://w3c.github.io/webcrypto/#ref-for-recognized-algorithm-name-16", + "https://w3c.github.io/webcrypto/#ref-for-supported-operations-15", + "https://w3c.github.io/webcrypto/#ref-for-algorithm-specific-params-15", + "https://w3c.github.io/webcrypto/#ref-for-algorithm-result-15", "https://w3c.github.io/webcrypto/#ref-for-dfn-Pbkdf2Params-1", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-103", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-121", "https://w3c.github.io/webcrypto/#pbkdf2-params", - "https://w3c.github.io/webcrypto/#x32-3-pbkdf2params-dictionary", + "https://w3c.github.io/webcrypto/#x34-3-pbkdf2params-dictionary", "https://w3c.github.io/webcrypto/#dfn-Pbkdf2Params", "https://w3c.github.io/webcrypto/#webidl-1323938568", "https://w3c.github.io/webcrypto/#idl-def-pbkdf2params", @@ -2335,36 +2542,42 @@ "https://w3c.github.io/webcrypto/#dfn-Pbkdf2Params-iterations", "https://w3c.github.io/webcrypto/#dfn-Pbkdf2Params-hash", "https://w3c.github.io/webcrypto/#pbkdf2-operations", - "https://w3c.github.io/webcrypto/#x32-4-operations", + "https://w3c.github.io/webcrypto/#x34-4-operations", "https://w3c.github.io/webcrypto/#ref-for-dfn-Pbkdf2Params-iterations-2", "https://w3c.github.io/webcrypto/#ref-for-dfn-Pbkdf2Params-hash-2", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-50", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-handle-57", "https://w3c.github.io/webcrypto/#ref-for-concept-contents-of-arraybuffer-30", "https://w3c.github.io/webcrypto/#ref-for-dfn-Pbkdf2Params-salt-2", "https://w3c.github.io/webcrypto/#ref-for-dfn-Pbkdf2Params-iterations-3", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-24", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-104", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-78", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-raw-28", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-122", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-type-104", "https://w3c.github.io/webcrypto/#ref-for-dom-keytype-secret-17", - "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-13", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-53", - "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-107", + "https://w3c.github.io/webcrypto/#ref-for-dfn-KeyAlgorithm-23", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyalgorithm-name-65", + "https://w3c.github.io/webcrypto/#ref-for-dfn-CryptoKey-slot-algorithm-121", "https://w3c.github.io/webcrypto/#examples-section", - "https://w3c.github.io/webcrypto/#x33-javascript-example-code", + "https://w3c.github.io/webcrypto/#x35-javascript-example-code", + "https://w3c.github.io/webcrypto/#example-key-exchange", + "https://w3c.github.io/webcrypto/#x35-1-generate-two-key-pairs-derive-a-shared-key-encrypt-some-data", + "https://w3c.github.io/webcrypto/#example-x25519-key-agreement", "https://w3c.github.io/webcrypto/#examples-signing", - "https://w3c.github.io/webcrypto/#x33-1-generate-a-signing-key-pair-sign-some-data", + "https://w3c.github.io/webcrypto/#x35-2-generate-a-signing-key-pair-sign-some-data", + "https://w3c.github.io/webcrypto/#example-ed25519-signing", "https://w3c.github.io/webcrypto/#examples-symmetric-encryption", - "https://w3c.github.io/webcrypto/#x33-2-symmetric-encryption", + "https://w3c.github.io/webcrypto/#x35-3-generate-a-symmetric-key-encrypt-some-data", + "https://w3c.github.io/webcrypto/#example-aes-gcm-encryption", "https://w3c.github.io/webcrypto/#examples-random-uuid", - "https://w3c.github.io/webcrypto/#x33-3-generate-unique-name-for-download", + "https://w3c.github.io/webcrypto/#x35-4-generate-unique-name-for-download", + "https://w3c.github.io/webcrypto/#example-random-uuid-generation", "https://w3c.github.io/webcrypto/#iana-section", - "https://w3c.github.io/webcrypto/#x33-4-iana-considerations", + "https://w3c.github.io/webcrypto/#x36-iana-considerations", "https://w3c.github.io/webcrypto/#iana-section-jws-jwa", - "https://w3c.github.io/webcrypto/#x33-4-1-json-web-signature-and-encryption-algorithms-registration", + "https://w3c.github.io/webcrypto/#x36-1-json-web-signature-and-encryption-algorithms-registration", "https://w3c.github.io/webcrypto/#iana-section-jwk", - "https://w3c.github.io/webcrypto/#x33-4-2-json-web-key-parameters-registration", + "https://w3c.github.io/webcrypto/#x36-2-json-web-key-parameters-registration", "https://w3c.github.io/webcrypto/#acknowledgements-section", - "https://w3c.github.io/webcrypto/#x33-5-acknowledgments", + "https://w3c.github.io/webcrypto/#x37-acknowledgments", "https://w3c.github.io/webcrypto/#ref-for-dfn-Crypto-method-getRandomValues-2", "https://w3c.github.io/webcrypto/#ref-for-dfn-Crypto-3", "https://w3c.github.io/webcrypto/#jwk-mapping", @@ -2375,7 +2588,7 @@ "https://w3c.github.io/webcrypto/#b-mapping-between-algorithm-and-subjectpublickeyinfo", "https://w3c.github.io/webcrypto/#issue-container-generatedID-19", "https://w3c.github.io/webcrypto/#h-note-19", - "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-26", + "https://w3c.github.io/webcrypto/#ref-for-dom-keyformat-jwk-30", "https://w3c.github.io/webcrypto/#pkcs8-mapping", "https://w3c.github.io/webcrypto/#c-mapping-between-algorithm-and-pkcs-8-privatekeyinfo", "https://w3c.github.io/webcrypto/#references", @@ -2405,8 +2618,12 @@ "https://w3c.github.io/webcrypto/#bib-rfc5869", "https://w3c.github.io/webcrypto/#bib-rfc5915", "https://w3c.github.io/webcrypto/#bib-rfc6090", + "https://w3c.github.io/webcrypto/#bib-rfc7748", "https://w3c.github.io/webcrypto/#bib-rfc8018", + "https://w3c.github.io/webcrypto/#bib-rfc8032", + "https://w3c.github.io/webcrypto/#bib-rfc8037", "https://w3c.github.io/webcrypto/#bib-rfc8174", + "https://w3c.github.io/webcrypto/#bib-rfc8410", "https://w3c.github.io/webcrypto/#bib-sec1", "https://w3c.github.io/webcrypto/#bib-webidl", "https://w3c.github.io/webcrypto/#bib-x690", diff --git a/ed/ids/html.json b/ed/ids/html.json index b32a387d3c9e..31a125f9a2b4 100644 --- a/ed/ids/html.json +++ b/ed/ids/html.json @@ -1563,6 +1563,8 @@ "https://html.spec.whatwg.org/multipage/infrastructure.html#alphabetic-baseline", "https://html.spec.whatwg.org/multipage/infrastructure.html#ascent-metric", "https://html.spec.whatwg.org/multipage/infrastructure.html#descent-metric", + "https://html.spec.whatwg.org/multipage/infrastructure.html#em-over-baseline", + "https://html.spec.whatwg.org/multipage/infrastructure.html#em-under-baseline", "https://html.spec.whatwg.org/multipage/infrastructure.html#hanging-baseline", "https://html.spec.whatwg.org/multipage/infrastructure.html#ideographic-under-baseline", "https://html.spec.whatwg.org/multipage/infrastructure.html#fit-content-inline-size", @@ -28747,14 +28749,18 @@ "https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-textalign-center", "https://html.spec.whatwg.org/multipage/canvas.html#text-styles%3Adom-context-2d-textbaseline-3", "https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-textbaseline-top", + "https://html.spec.whatwg.org/multipage/canvas.html#text-styles%3Aem-over-baseline", "https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-textbaseline-hanging", "https://html.spec.whatwg.org/multipage/canvas.html#text-styles%3Ahanging-baseline", "https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-textbaseline-middle", + "https://html.spec.whatwg.org/multipage/canvas.html#text-styles%3Aem-over-baseline-2", + "https://html.spec.whatwg.org/multipage/canvas.html#text-styles%3Aem-under-baseline", "https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-textbaseline-alphabetic", "https://html.spec.whatwg.org/multipage/canvas.html#text-styles%3Aalphabetic-baseline", "https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-textbaseline-ideographic", "https://html.spec.whatwg.org/multipage/canvas.html#text-styles%3Aideographic-under-baseline", "https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-textbaseline-bottom", + "https://html.spec.whatwg.org/multipage/canvas.html#text-styles%3Aem-under-baseline-2", "https://html.spec.whatwg.org/multipage/canvas.html#text-styles%3Adom-context-2d-direction-3", "https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-direction-ltr", "https://html.spec.whatwg.org/multipage/canvas.html#text-styles%3Atext-preparation-algorithm", @@ -29434,12 +29440,20 @@ "https://html.spec.whatwg.org/multipage/canvas.html#drawing-text-to-the-bitmap%3A'px'-10", "https://html.spec.whatwg.org/multipage/canvas.html#dom-textmetrics-emheightascent", "https://html.spec.whatwg.org/multipage/canvas.html#drawing-text-to-the-bitmap%3Adom-context-2d-textbaseline-7", + "https://html.spec.whatwg.org/multipage/canvas.html#drawing-text-to-the-bitmap%3Aem-over-baseline", "https://html.spec.whatwg.org/multipage/canvas.html#drawing-text-to-the-bitmap%3Ainline-box-4", "https://html.spec.whatwg.org/multipage/canvas.html#drawing-text-to-the-bitmap%3A'px'-11", + "https://html.spec.whatwg.org/multipage/canvas.html#drawing-text-to-the-bitmap%3Aem-over-baseline-2", + "https://html.spec.whatwg.org/multipage/canvas.html#drawing-text-to-the-bitmap%3Aem-over-baseline-3", + "https://html.spec.whatwg.org/multipage/canvas.html#drawing-text-to-the-bitmap%3Aem-over-baseline-4", + "https://html.spec.whatwg.org/multipage/canvas.html#drawing-text-to-the-bitmap%3Aem-under-baseline", "https://html.spec.whatwg.org/multipage/canvas.html#dom-textmetrics-emheightdescent", "https://html.spec.whatwg.org/multipage/canvas.html#drawing-text-to-the-bitmap%3Adom-context-2d-textbaseline-8", + "https://html.spec.whatwg.org/multipage/canvas.html#drawing-text-to-the-bitmap%3Aem-under-baseline-2", "https://html.spec.whatwg.org/multipage/canvas.html#drawing-text-to-the-bitmap%3Ainline-box-5", "https://html.spec.whatwg.org/multipage/canvas.html#drawing-text-to-the-bitmap%3A'px'-12", + "https://html.spec.whatwg.org/multipage/canvas.html#drawing-text-to-the-bitmap%3Aem-under-baseline-3", + "https://html.spec.whatwg.org/multipage/canvas.html#drawing-text-to-the-bitmap%3Aem-under-baseline-4", "https://html.spec.whatwg.org/multipage/canvas.html#dom-textmetrics-hangingbaseline", "https://html.spec.whatwg.org/multipage/canvas.html#drawing-text-to-the-bitmap%3Adom-context-2d-textbaseline-9", "https://html.spec.whatwg.org/multipage/canvas.html#drawing-text-to-the-bitmap%3Ahanging-baseline", diff --git a/ed/ids/webdriver2.json b/ed/ids/webdriver2.json index b48939d347af..eddfc913e894 100644 --- a/ed/ids/webdriver2.json +++ b/ed/ids/webdriver2.json @@ -3967,11 +3967,13 @@ "https://w3c.github.io/webdriver/#x15-6-dispatching-actions", "https://w3c.github.io/webdriver/#ref-for-dfn-dispatch-actions-1", "https://w3c.github.io/webdriver/#ref-for-dfn-ticks-21", - "https://w3c.github.io/webdriver/#dfn-dispatch-actions", + "https://w3c.github.io/webdriver/#dfn-wait-for-an-action-queue-token", "https://w3c.github.io/webdriver/#ref-for-dfn-actions-queue-1", "https://w3c.github.io/webdriver/#ref-for-dfn-actions-queue-2", "https://w3c.github.io/webdriver/#issue-container-generatedID-50", "https://w3c.github.io/webdriver/#h-note-50", + "https://w3c.github.io/webdriver/#dfn-dispatch-actions", + "https://w3c.github.io/webdriver/#ref-for-dfn-wait-for-an-action-queue-token-1", "https://w3c.github.io/webdriver/#ref-for-dfn-dispatch-actions-inner-1", "https://w3c.github.io/webdriver/#ref-for-dfn-actions-queue-3", "https://w3c.github.io/webdriver/#dfn-dispatch-actions-inner", @@ -4156,11 +4158,11 @@ "https://w3c.github.io/webdriver/#ref-for-dfn-represents-a-web-element-9", "https://w3c.github.io/webdriver/#ref-for-dfn-get-element-origin-6", "https://w3c.github.io/webdriver/#ref-for-dfn-get-a-webelement-origin-5", + "https://w3c.github.io/webdriver/#ref-for-dfn-wait-for-an-action-queue-token-2", "https://w3c.github.io/webdriver/#ref-for-dfn-input-cancel-list-5", "https://w3c.github.io/webdriver/#ref-for-dfn-try-120", - "https://w3c.github.io/webdriver/#ref-for-dfn-dispatch-tick-actions-4", + "https://w3c.github.io/webdriver/#ref-for-dfn-dispatch-actions-4", "https://w3c.github.io/webdriver/#ref-for-dfn-current-browsing-context-86", - "https://w3c.github.io/webdriver/#ref-for-dfn-actions-options-7", "https://w3c.github.io/webdriver/#ref-for-dfn-reset-the-input-state-1", "https://w3c.github.io/webdriver/#ref-for-dfn-current-top-level-browsing-context-66", "https://w3c.github.io/webdriver/#ref-for-dfn-success-116", diff --git a/ed/index.json b/ed/index.json index 15a13659b1f9..f4e7f41cae21 100644 --- a/ed/index.json +++ b/ed/index.json @@ -1,7 +1,7 @@ { "type": "crawl", "title": "Reffy crawl", - "date": "2024-12-05T06:44:14.764Z", + "date": "2024-12-05T12:48:54.571Z", "options": { "fallback": "ed/index.json", "output": "report", @@ -1326,7 +1326,7 @@ ], "crawled": "https://httpwg.org/http-extensions/draft-ietf-httpbis-no-vary-search.html", "crawlCacheInfo": { - "lastModified": "Thu, 05 Dec 2024 01:00:55 GMT" + "lastModified": "Thu, 05 Dec 2024 01:00:56 GMT" }, "date": "5 December 2024", "algorithms": "algorithms/no-vary-search.json", @@ -2065,7 +2065,7 @@ ], "crawled": "https://drafts.csswg.org/css-forms-1/", "crawlCacheInfo": { - "lastModified": "Wed, 04 Dec 2024 20:06:03 GMT" + "lastModified": "Wed, 04 Dec 2024 20:06:04 GMT" }, "generator": "bikeshed", "date": "27 November 2024", @@ -3335,9 +3335,9 @@ ], "crawled": "https://html.spec.whatwg.org/multipage/", "crawlCacheInfo": { - "lastModified": "Wed, 04 Dec 2024 01:28:51 GMT" + "lastModified": "Thu, 05 Dec 2024 06:43:43 GMT" }, - "date": "4 December 2024", + "date": "5 December 2024", "algorithms": "algorithms/html.json", "links": "links/html.json", "refs": "refs/html.json", @@ -23369,7 +23369,7 @@ ], "crawled": "https://drafts.csswg.org/css-transforms-2/", "crawlCacheInfo": { - "lastModified": "Wed, 04 Dec 2024 20:06:03 GMT" + "lastModified": "Wed, 04 Dec 2024 20:06:04 GMT" }, "generator": "bikeshed", "date": "3 April 2024", @@ -23916,7 +23916,7 @@ ], "crawled": "https://drafts.csswg.org/css-values-5/", "crawlCacheInfo": { - "lastModified": "Wed, 04 Dec 2024 20:06:03 GMT" + "lastModified": "Wed, 04 Dec 2024 20:06:04 GMT" }, "generator": "bikeshed", "date": "21 November 2024", @@ -31959,7 +31959,7 @@ ], "crawled": "https://drafts.csswg.org/scroll-animations-1/", "crawlCacheInfo": { - "lastModified": "Wed, 04 Dec 2024 20:06:03 GMT" + "lastModified": "Wed, 04 Dec 2024 20:06:04 GMT" }, "generator": "bikeshed", "date": "31 January 2024", @@ -36000,11 +36000,11 @@ ], "crawled": "https://w3c.github.io/webcrypto/", "crawlCacheInfo": { - "lastModified": "Fri, 15 Nov 2024 12:53:09 GMT" + "lastModified": "Thu, 05 Dec 2024 10:39:10 GMT" }, "generator": "respec", - "date": "15 November 2024", - "revision": "b21575f5bdbbd4989d06bbbb34da9318c377fa5c", + "date": "05 December 2024", + "revision": "fe7d5871b297ccfb95e721c9721c8f0a2fcb20aa", "algorithms": "algorithms/WebCryptoAPI.json", "links": "links/WebCryptoAPI.json", "refs": "refs/WebCryptoAPI.json", @@ -36122,11 +36122,11 @@ ], "crawled": "https://w3c.github.io/webdriver/", "crawlCacheInfo": { - "lastModified": "Thu, 28 Nov 2024 12:53:23 GMT" + "lastModified": "Thu, 05 Dec 2024 12:24:30 GMT" }, "generator": "respec", - "date": "28 November 2024", - "revision": "0ac18fa957652f5efd2dc010d8a285cc08e89891", + "date": "05 December 2024", + "revision": "7d8beb949159e0f7d86a34410aedd3a1af3d4b0c", "algorithms": "algorithms/webdriver2.json", "links": "links/webdriver2.json", "refs": "refs/webdriver2.json", diff --git a/ed/links/WebCryptoAPI.json b/ed/links/WebCryptoAPI.json index c312b301daf6..829f27f10bb7 100644 --- a/ed/links/WebCryptoAPI.json +++ b/ed/links/WebCryptoAPI.json @@ -10,15 +10,13 @@ "http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf": {}, "http://www.northropgrumman.com/Capabilities/CybersecurityResearchConsortium/": {}, "http://www.secg.org/sec1-v2.pdf": {}, + "https://datatracker.ietf.org/doc/draft-irtf-cfrg-det-sigs-with-noise/": {}, "https://datatracker.ietf.org/doc/html/bcp14": {}, "https://dom.spec.whatwg.org/": {}, "https://encoding.spec.whatwg.org/": {}, + "https://github.com/WICG/webcrypto-secure-curves/issues/27": {}, + "https://github.com/WICG/webcrypto-secure-curves/issues/28": {}, "https://html.spec.whatwg.org/multipage/": {}, - "https://html.spec.whatwg.org/multipage/structured-data.html": { - "anchors": [ - "serializable" - ] - }, "https://infra.spec.whatwg.org/": {}, "https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf": {}, "https://tc39.es/ecma262/multipage/": {}, @@ -29,16 +27,7 @@ "global-identifier" ] }, - "https://webidl.spec.whatwg.org/": { - "anchors": [ - "SameObject", - "Exposed", - "SecureContext", - "idl-promise", - "idl-sequence", - "EnforceRange" - ] - }, + "https://webidl.spec.whatwg.org/": {}, "https://wiki.whatwg.org/wiki/Crypto": {}, "https://www.rfc-editor.org/rfc/rfc2119": {}, "https://www.rfc-editor.org/rfc/rfc2141": { @@ -65,8 +54,12 @@ "https://www.rfc-editor.org/rfc/rfc6090": {}, "https://www.rfc-editor.org/rfc/rfc7517": {}, "https://www.rfc-editor.org/rfc/rfc7518": {}, + "https://www.rfc-editor.org/rfc/rfc7748": {}, "https://www.rfc-editor.org/rfc/rfc8018": {}, + "https://www.rfc-editor.org/rfc/rfc8032": {}, + "https://www.rfc-editor.org/rfc/rfc8037": {}, "https://www.rfc-editor.org/rfc/rfc8174": {}, + "https://www.rfc-editor.org/rfc/rfc8410": {}, "https://www.w3.org/TR/": {}, "https://www.w3.org/TR/IndexedDB/": {}, "https://www.w3.org/groups/wg/webappsec": {}, @@ -92,6 +85,7 @@ }, "https://html.spec.whatwg.org/multipage/structured-data.html": { "anchors": [ + "serializable", "serialization-steps", "sub-serialization", "deserialization-steps", @@ -101,7 +95,8 @@ "https://html.spec.whatwg.org/multipage/webappapis.html": { "anchors": [ "windoworworkerglobalscope", - "concept-relevant-realm" + "concept-relevant-realm", + "concept-relevant-global" ] }, "https://infra.spec.whatwg.org/": { @@ -122,6 +117,9 @@ "dfn-throw", "dataerror", "dfn-get-buffer-source-copy", + "SameObject", + "Exposed", + "SecureContext", "idl-Int8Array", "idl-Uint8Array", "idl-Uint8ClampedArray", @@ -136,6 +134,7 @@ "idl-object", "idl-boolean", "idl-any", + "idl-sequence", "idl-unsigned-long", "this", "invalidaccesserror", @@ -144,6 +143,7 @@ "exceptiondef-typeerror", "notsupportederror", "operationerror", + "EnforceRange", "idl-octet", "idl-unsigned-short" ] diff --git a/ed/links/html.json b/ed/links/html.json index 87374ad697d9..40830bf6b465 100644 --- a/ed/links/html.json +++ b/ed/links/html.json @@ -1624,6 +1624,8 @@ "alphabetic-baseline", "ascent-metric", "descent-metric", + "em-over-baseline", + "em-under-baseline", "hanging-baseline", "ideographic-under-baseline" ] diff --git a/ed/refs/WebCryptoAPI.json b/ed/refs/WebCryptoAPI.json index cf44d206bce9..5c67c5c2e8e6 100644 --- a/ed/refs/WebCryptoAPI.json +++ b/ed/refs/WebCryptoAPI.json @@ -97,14 +97,30 @@ "name": "RFC6090", "url": "https://www.rfc-editor.org/rfc/rfc6090" }, + { + "name": "RFC7748", + "url": "https://www.rfc-editor.org/rfc/rfc7748" + }, { "name": "RFC8018", "url": "https://www.rfc-editor.org/rfc/rfc8018" }, + { + "name": "RFC8032", + "url": "https://www.rfc-editor.org/rfc/rfc8032" + }, + { + "name": "RFC8037", + "url": "https://www.rfc-editor.org/rfc/rfc8037" + }, { "name": "RFC8174", "url": "https://www.rfc-editor.org/rfc/rfc8174" }, + { + "name": "RFC8410", + "url": "https://www.rfc-editor.org/rfc/rfc8410" + }, { "name": "SEC1", "url": "http://www.secg.org/sec1-v2.pdf"