--- a/spec/Overview-WebCryptoAPI.xml Mon Jun 16 00:00:00 2014 -0700
+++ b/spec/Overview-WebCryptoAPI.xml Mon Jun 16 00:00:00 2014 -0700
@@ -2693,21 +2693,6 @@
</thead>
<tbody>
<tr>
- <td><a href="#rsaes-pkcs1">RSAES-PKCS1-v1_5</a></td>
- <td>✔</td>
- <td>✔</td>
- <td />
- <td />
- <td />
- <td>✔</td>
- <td />
- <td />
- <td>✔</td>
- <td>✔</td>
- <td>✔</td>
- <td>✔</td>
- </tr>
- <tr>
<td><a href="#rsassa-pkcs1">RSASSA-PKCS1-v1_5</a></td>
<td />
<td />
@@ -3109,828 +3094,6 @@
</div>
</div>
- <div id="rsaes-pkcs1" class="section">
- <h3>RSAES-PKCS1-v1_5</h3>
- <div id="rsaes-pkcs1-description" class="section">
- <h4>Description</h4>
- <p>
- The <code>"RSAES-PKCS1-v1_5"</code> algorithm identifier is used to perform encryption
- and decryption ordering to the RSAES-PKCS1-v1_5 algorithm specified in
- [<cite><a href="#RFC3447">RFC3447</a></cite>].
- </p>
- </div>
- <div id="rsaes-pkcs1-registration" class="section">
- <h4>Registration</h4>
- <p>
- The <a href="#recognized-algorithm-name">recognized algorithm name</a> for
- this algorithm is <code>"RSAES-PKCS1-v1_5"</code>.
- </p>
- <table>
- <thead>
- <tr>
- <th><a href="#supported-operations">Operation</a></th>
- <th><a href="#algorithm-specific-params">Parameters</a></th>
- <th><a href="#algorithm-result">Result</a></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>encrypt</td>
- <td>None</td>
- <td>ArrayBuffer</td>
- </tr>
- <tr>
- <td>decrypt</td>
- <td>None</td>
- <td>ArrayBuffer</td>
- </tr>
- <tr>
- <td>generateKey</td>
- <td><a href="#dfn-RsaKeyGenParams">RsaKeyGenParams</a></td>
- <td><a href="#dfn-CryptoKeyPair">CryptoKeyPair</a></td>
- </tr>
- <tr>
- <td>importKey</td>
- <td>None</td>
- <td><a href="#dfn-CryptoKey">CryptoKey</a></td>
- </tr>
- <tr>
- <td>exportKey</td>
- <td>None</td>
- <td>object</td>
- </tr>
- </tbody>
- </table>
- </div>
- <div id="RsaKeyGenParams-dictionary" class="section">
- <h4>RsaKeyGenParams dictionary</h4>
- <x:codeblock language="idl">
-dictionary <dfn id="dfn-RsaKeyGenParams">RsaKeyGenParams</dfn> : <a href="#dfn-Algorithm">Algorithm</a> {
- <span class="comment">// The length, in bits, of the RSA modulus</span>
- [EnforceRange] unsigned long <dfn id="dfn-RsaKeyGenParams-modulusLength">modulusLength</dfn>;
- <span class="comment">// The RSA public exponent</span>
- <a href="#dfn-BigInteger">BigInteger</a> <dfn id="dfn-RsaKeyGenParams-publicExponent">publicExponent</dfn>;
-};
- </x:codeblock>
- </div>
- <div id="RsaKeyAlgorithm-dictionary" class="section">
- <h4>RsaKeyAlgorithm dictionary</h4>
- <x:codeblock language="idl">
-dictionary <dfn id="dfn-RsaKeyAlgorithm">RsaKeyAlgorithm</dfn> : <a href="#dfn-KeyAlgorithm">KeyAlgorithm</a> {
- <span class="comment">// The length, in bits, of the RSA modulus</span>
- unsigned long <dfn id="dfn-RsaKeyAlgorithm-modulusLength">modulusLength</dfn>;
- <span class="comment">// The RSA public exponent</span>
- <a href="#dfn-BigInteger">BigInteger</a> <dfn id="dfn-RsaKeyAlgorithm-publicExponent">publicExponent</dfn>;
-};
- </x:codeblock>
- </div>
- <div id="rsaes-pkcs1-operations" class="section">
- <h4>Operations</h4>
- <dl>
- <dt>Encrypt</dt>
- <dd>
- <ol>
- <li>
- <p>
- If the <a href="#dfn-CryptoKey-type">type</a> attribute of <var>key</var> is
- not <code>"public"</code>, then <a href="#concept-return-an-error">return an
- error</a> named <a
- href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Perform the encryption operation defined in Section 7.2 of [<cite><a
- href="#RFC3447">RFC3447</a></cite>] with the key represented by <var>key</var>
- as the recipient's RSA public key and the
- <a href="#concept-contents-of-arraybuffer">contents of <var>plaintext</var></a>
- as <var>M</var>.
- </p>
- </li>
- <li>
- <p>
- If performing the operation results in an error,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-OperationError"><code>OperationError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Let <var>ciphertext</var> be a new ArrayBuffer
- containing the value <var>C</var> that results from performing the
- operation.
- </p>
- </li>
- </ol>
- </dd>
- <dt>Decrypt</dt>
- <dd>
- <ol>
- <li>
- <p>
- If the <a href="#dfn-CryptoKey-type">type</a> attribute of <var>key</var> is
- not <code>"private"</code>, then <a href="#concept-return-an-error">return an
- error</a> named <a
- href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>
- </p>
- </li>
- <li>
- <p>
- Perform the decryption operation defined in Section 7.2 of [<cite><a
- href="#RFC3447">RFC3447</a></cite>] with the key represented by <var>key</var>
- as the recipient's RSA private key and the <a
- href="#concept-contents-of-arraybuffer">contents of <var>ciphertext</var></a>
- as <var>C</var>.
- </p>
- </li>
- <li>
- <p>
- If performing the operation results in an error,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-OperationError"><code>OperationError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Let <var>plaintext</var> be a new ArrayBuffer
- containing the value <var>M</var> that results from performing the
- operation.
- </p>
- </li>
- </ol>
- </dd>
- <dt>Generate Key</dt>
- <dd>
- <ol>
- <li>
- <p>
- Let <var>normalizedAlgorithm</var> be the result of
- <a href="#dfn-normalize-to-type">normalizing</a> <var>algorithm</var>
- to <a href="#dfn-RsaKeyGenParams">RsaKeyGenParams</a>.
- </p>
- </li>
- <li>
- <p>
- If any of the members of <a href="#dfn-RsaKeyGenParams">RsaKeyGenParams</a> are
- not present in <var>normalizedAlgorithm</var>,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-SyntaxError"><code>SyntaxError</code></a>.
- </p>
- </li>
- <li>
- <p>
- If <var>usages</var> contains an entry which is not
- <code>"encrypt"</code>, <code>"decrypt"</code>,
- <code>"wrapKey"</code> or <code>"unwrapKey"</code>,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Generate an RSA key pair, as defined in [<cite><a
- href="#RFC3447">RFC3447</a></cite>], with RSA modulus length equal to the
- <a href="#dfn-RsaKeyGenParams-modulusLength">modulusLength</a> member of
- <var>normalizedAlgorithm</var> and RSA public exponent equal to the
- <a href="#dfn-RsaKeyGenParams-publicExponent">publicExponent</a> member of
- <var>normalizedAlgorithm</var>.
- </p>
- </li>
- <li>
- <p>
- If generation of the key pair fails,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-OperationError"><code>OperationError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Let <var>algorithm</var> be a new
- <a href="#dfn-RsaKeyAlgorithm">RsaKeyAlgorithm</a> dictionary.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-KeyAlgorithm-name">name</a> attribute of
- <var>algorithm</var> to <code>"RSAES-PKCS1-v1_5"</code>.
- </p>
- </li>
- <li>
- <p>
- Set the
- <a href="#dfn-RsaKeyAlgorithm-modulusLength">modulusLength</a>
- attribute of <var>algorithm</var> to equal the
- <a href="#dfn-RsaKeyGenParams-modulusLength">modulusLength</a>
- attribute of <var>normalizedAlgorithm</var>.
- </p>
- </li>
- <li>
- <p>
- Set the
- <a href="#dfn-RsaKeyAlgorithm-publicExponent">publicExponent</a>
- attribute of <var>algorithm</var> to equal the
- <a href="#dfn-RsaKeyGenParams-publicExponent">publicExponent</a>
- attribute of <var>normalizedAlgorithm</var>.
- </p>
- </li>
- <li>
- <p>
- Let <var>publicKey</var> be a new <a href="#dfn-CryptoKey">CryptoKey</a>
- object representing the public key of the generated key pair.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
- <var>publicKey</var> to <code>"public"</code>
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
- <var>publicKey</var> to <var>algorithm</var>.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
- <var>publicKey</var> to true.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
- <var>publicKey</var> to be the <a href="#concept-usage-intersection">usage
- intersection</a> of <var>usages</var> and <code>[ "encrypt", "wrapKey"
- ]</code>.
- </p>
- </li>
- <li>
- <p>
- Let <var>privateKey</var> be a new <a href="#dfn-CryptoKey">CryptoKey</a>
- object representing the private key of the generated key pair.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
- <var>privateKey</var> to <code>"private"</code>
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
- <var>privateKey</var> to <var>algorithm</var>.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
- <var>privateKey</var> to <var>extractable</var>.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
- <var>privateKey</var> to be the <a href="#concept-usage-intersection">usage
- intersection</a> of <var>usages</var> and <code>[ "decrypt", "unwrapKey"
- ]</code>.
- </p>
- </li>
- <li>
- <p>
- Let <var>result</var> be a new <a href="#dfn-CryptoKeyPair">CryptoKeyPair</a>
- dictionary.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKeyPair-publicKey">publicKey</a> attribute
- of <var>result</var> to be <var>publicKey</var>.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKeyPair-privateKey">privateKey</a> attribute
- of <var>result</var> to be <var>privateKey</var>.
- </p>
- </li>
- <li>
- <p>
- Return the result of converting <var>result</var> to an ECMAScript Object, as
- defined by [<a href="#WebIDL">WEBIDL</a>].
- </p>
- </li>
- </ol>
- </dd>
- <dt>Import Key</dt>
- <dd>
- <ol>
- <li>
- <p>Let <var>keyData</var> be the key data to be imported.</p>
- </li>
- <li>
- <dl class="switch">
- <dt>If <var>format</var> is <code>"spki"</code>:</dt>
- <dd>
- <ol>
- <li>
- <p>
- Let <var>spki</var> be the result of running the
- <a href="#concept-parse-a-spki">parse a subjectPublicKeyInfo</a>
- algorithm over <var>keyData</var>.
- </p>
- </li>
- <li>
- <p>
- If an error occurred while parsing,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- If the <code>algorithm</code> object identifier field of the
- <code>algorithm</code> AlgorithmIdentifier field of <var>spki</var>
- is not equivalent to the <code>rsaEncryption</code> OID defined in
- Section 2.3.1 of <a href="#RFC3279">RFC 3279</a>,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Let <var>publicKey</var> be the result of performing the <a
- href="#concept-parse-an-asn1-structure">parse an ASN.1 structure</a>
- algorithm, with <var>data</var> as the
- <code>subjectPublicKeyInfo</code> field of <var>spki</var>,
- <var>structure</var> as the <code>RSAPublicKey</code> structure
- specified in Section A.1.1 of <a href="#RFC3447">RFC 3447</a>, and
- <var>exactData</var> set to true.
- </p>
- </li>
- <li>
- <p>
- If an error occurred while parsing,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Let <var>key</var> be a new <a href="#dfn-CryptoKey">CryptoKey</a>
- object that represents the RSA public key identified by
- <var>publicKey</var>.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
- <var>key</var> to <code>"public"</code>
- </p>
- </li>
- </ol>
- </dd>
- <dt>If <var>format</var> is <code>"pkcs8"</code>:</dt>
- <dd>
- <ol>
- <li>
- <p>
- Let <var>privateKeyInfo</var> be the result of running the
- <a href="#concept-parse-a-privateKeyInfo">parse a privateKeyInfo</a>
- algorithm over <var>keyData</var>.
- </p>
- </li>
- <li>
- <p>
- If an error occurred while parsing,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- If the <code>algorithm</code> object identifier field of the
- <code>privateKeyAlgorithm</code> PrivateKeyAlgorithmIdentifier field
- of <var>privateKeyInfo</var> is not equivalent to the
- <code>rsaEncryption</code> OID defined in Section 2.3.1 of
- <a href="#RFC3279">RFC 3279</a>,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Let <var>rsaPrivateKey</var> be the result of performing the <a
- href="#concept-parse-an-asn1-structure">parse an ASN.1 structure</a>
- algorithm, with <var>data</var> as the
- <code>privateKey</code> field of <var>privateKeyInfo</var>,
- <var>structure</var> as the <code>RSAPrivateKey</code> structure
- specified in Section A.1.2 of <a href="#RFC3447">RFC 3447</a>, and
- <var>exactData</var> set to true.
- </p>
- </li>
- <li>
- <p>
- If an error occurred while parsing,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Let <var>key</var> be a new <a href="#dfn-CryptoKey">CryptoKey</a>
- object that represents the RSA private key identified by
- <var>rsaPrivateKey</var>.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
- <var>key</var> to <code>"private"</code>
- </p>
- </li>
- </ol>
- </dd>
- <dt>If <var>format</var> is <code>"jwk"</code>:</dt>
- <dd>
- <ol>
- <li>
- <p>
- Let <var>jwk</var> be the <a href="#dfn-JsonWebKey">JsonWebKey</a>
- dictionary represented by <var>keyData</var>.
- </p>
- </li>
- <li>
- <p>
- If the <code>"kty"</code> field of <var>jwk</var> is not
- <code>"RSA"</code>,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- If the <code>"use"</code> field of <var>jwk</var> is present, and is
- not <code>"enc"</code>,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- If the <code>"key_ops"</code> field of <var>jwk</var> is present, and
- is invalid according to the requirements of
- <a href="#jwk">JSON Web Key</a> or
- does not contain all of the specified <var>usages</var> values,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- If the <code>"alg"</code> field of <var>jwk</var> is present, and is
- not <code>"RSA1_5"</code>,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <dl class="switch">
- <dt>If the <code>"d"</code> field of <var>jwk</var> is present:</dt>
- <dd>
- <ol>
- <li>
- <p>
- If <var>jwk</var> does not meet the requirements of
- Section 6.3.2 of <a href="#jwa">JSON Web
- Algorithms</a>,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Let <var>key</var> be a new <a
- href="#dfn-CryptoKey">CryptoKey</a> object that represents the
- RSA private key identified by interpreting <var>jwk</var>
- according to Section 6.3.2 of <a href="#jwa"> JSON Web
- Algorithms</a>.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
- <var>key</var> to <code>"private"</code>
- </p>
- </li>
- </ol>
- </dd>
- <dt>Otherwise:</dt>
- <dd>
- <ol>
- <li>
- <p>
- If <var>jwk</var> does not meet the requirements of
- Section 6.3.1 of <a href="#jwa">JSON Web
- Algorithms</a>,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Let <var>key</var> be a new <a
- href="#dfn-CryptoKey">CryptoKey</a> object that represents the
- RSA public key identified by interpreting <var>jwk</var>
- according to Section 6.3.1 of <a href="#jwa"> JSON Web
- Algorithms</a>.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
- <var>key</var> to <code>"public"</code>
- </p>
- </li>
- </ol>
- </dd>
- </dl>
- </li>
- </ol>
- </dd>
- <dt>Otherwise:</dt>
- <dd>
- <a href="#concept-return-an-error">Return an error</a> named
- <a href="#dfn-NotSupportedError"><code>NotSupportedError</code></a>.
- </dd>
- </dl>
- </li>
- <li>
- <p>
- Let <var>algorithm</var> be a new
- <a href="#dfn-RsaKeyAlgorithm">RsaKeyAlgorithm</a> dictionary.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-KeyAlgorithm-name">name</a> attribute of
- <var>algorithm</var> to <code>"RSAES-PKCS1-v1_5"</code>
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-RsaKeyAlgorithm-modulusLength">modulusLength</a>
- attribute of <var>algorithm</var> to the length, in bits, of the RSA public
- modulus.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-RsaKeyAlgorithm-publicExponent">publicExponent</a>
- attribute of <var>algorithm</var> to the <a href="#dfn-BigInteger">BigInteger</a>
- representation of the RSA public exponent.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
- <var>key</var> to <var>algorithm</var>.
- </p>
- </li>
- <li>
- <p>Return <var>key</var>.</p>
- </li>
- </ol>
- </dd>
- <dt>Export Key</dt>
- <dd>
- <ol>
- <li>
- <p>
- Let <var>key</var> be the key to be exported.
- </p>
- </li>
- <li>
- <dl class="switch">
- <dt>If <var>format</var> is <code>"spki"</code></dt>
- <dd>
- <ol>
- <li>
- <p>
- If the <a href="#dfn-CryptoKey-type">type</a> attribute of
- <var>key</var> is not <code>"public"</code>, then <a
- href="#concept-return-an-error">return an error</a> named <a
- href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Let <var>data</var> be the result of <a
- href="#dfn-encode-a-subjectPublicKeyInfo">encoding a
- subjectPublicKeyInfo</a> with the following properties:
- </p>
- <ul>
- <li>
- <p>
- Set the <var>algorithm</var> field to an
- <code>AlgorithmIdentifier</code> ASN.1 type with the following
- properties:
- </p>
- <ul>
- <li>
- <p>
- Set the <var>algorithm</var> field to the OID
- <code>1.2.840.113549.1.1</code>
- </p>
- </li>
- <li>
- <p>
- Set the <var>params</var> field to the ASN.1 type NULL.
- </p>
- </li>
- </ul>
- </li>
- <li>
- <p>
- Set the <var>subjectPublicKey</var> field to the result of
- DER-encoding an <code>RSAPublicKey</code> ASN.1 type, as defined
- in <a href="#RFC3447">RFC 3447</a>, Appendix A.1.1, that
- represents the RSA public key identified by <var>key</var>
- </p>
- </li>
- </ul>
- </li>
- <li>
- <p>
- Let <var>result</var> be a new <code>ArrayBuffer</code> containing
- <var>array</var>.
- </p>
- </li>
- </ol>
- </dd>
- <dt>If <var>format</var> is <code>"pkcs8"</code>:</dt>
- <dd>
- <ol>
- <li>
- <p>
- If the <a href="#dfn-CryptoKey-type">type</a> attribute of
- <var>key</var> is not <code>"private"</code>, then <a
- href="#concept-return-an-error">return an error</a> named <a
- href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Let <var>data</var> be the result of <a
- href="#dfn-encode-a-privateKeyInfo"> encoding a privateKeyInfo</a>
- with the following properties:
- </p>
- <ul>
- <li>
- <p>
- Set the <var>version</var> field to 0.
- </p>
- </li>
- <li>
- <p>
- Set the <var>privateKeyAlgorithm</var> field to a
- <code>PrivateKeyAlgorithmIdentifier</code> ASN.1 type with the
- following properties:
- </p>
- <ul>
- <li>
- <p>
- Set the <var>algorithm</var> field to the OID
- <code>1.2.840.113549.1.1</code>
- </p>
- </li>
- <li>
- <p>
- Set the <var>params</var> field to the ASN.1 type NULL.
- </p>
- </li>
- </ul>
- </li>
- <li>
- <p>
- Set the <var>privateKey</var> field to the result of
- DER-encoding an <code>RSAPrivateKey</code> ASN.1 type, as defined
- in <a href="#RFC3447">RFC 3447</a>, Appendix A.1.2, that
- represents the RSA private key identified by <var>key</var>
- </p>
- <div class="ednote">
- <a href="#RFC5208">RFC 5208</a> specifies that the encoding of
- this field should be <em>BER</em> encoded in Section 5 (as a "for
- example"). However, to avoid requiring WebCrypto implementations
- support BER-encoding and BER-decoding, only <em>DER</em> encodings
- are produced or accepted.
- </div>
- </li>
- </ul>
- </li>
- <li>
- <p>
- Let <var>result</var> be a new <code>ArrayBuffer</code> containing
- <var>data</var>.
- </p>
- </li>
- </ol>
- </dd>
- <dt>If <var>format</var> is <code>"jwk"</code>:</dt>
- <dd>
- <ul>
- <li>
- <p>
- Let <var>jwk</var> be a new <a href="#dfn-JsonWebKey">JsonWebKey</a>
- dictionary.
- </p>
- </li>
- <li>
- <p>Set the <code>kty</code> attribute of <var>jwk</var> to the string
- <code>"RSA"</code>.</p>
- </li>
- <li>
- <p>Set the <code>alg</code> attribute of <var>jwk</var> to the string
- <code>"RSA1_5"</code>.</p>
- </li>
- <li>
- <p>
- Set the attributes <code>n</code> and <code>e</code> of <var>jwk</var>
- according to the corresponding definitions in <a href="#jwa">JSON Web
- Algorithms</a>, Section 6.3.1.
- </p>
- </li>
- <li>
- <dl class="switch">
- <dt>
- If the <a href="#dfn-CryptoKey-type">type</a> attribute of
- <var>key</var> is <code>"private"</code>:
- </dt>
- <dd>
- <ol>
- <li>
- <p>
- Set the attributes named <code>d</code>, <code>p</code>,
- <code>q</code>, <code>dp</code>, <code>dq</code>, and
- <code>qi</code> of <var>jwk</var> according to the
- corresponding definitions in <a href="#jwa">JSON Web
- Algorithms</a>, Section 6.3.2.
- </p>
- </li>
- <li>
- <p>
- If the underlying RSA private key represented by
- <var>key</var> is represented by more than two primes, set the
- attribute named <code>oth</code> of <var>jwk</var> according to
- the corresponding definition in <a href="#jwa">JSON Web
- Algorithms</a>, Section 6.3.2.7
- </p>
- </li>
- </ol>
- </dd>
- </dl>
- </li>
- <li>
- <p>
- Set the <code>key_ops</code> attribute of <var>jwk</var> to the <a
- href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var>.
- </p>
- </li>
- <li>
- <p>
- Set the <code>ext</code> attribute of <var>jwk</var> to the <a
- href="#dfn-CryptoKey-extractable">extractable</a> attribute of
- <var>key</var>.
- </p>
- </li>
- <li>
- <p>
- Let <var>result</var> be the result of converting <var>jwk</var>
- to an ECMAScript Object, as defined by [<a href="#WebIDL">WEBIDL</a>].
- </p>
- </li>
- </ul>
- </dd>
- <dt>Otherwise</dt>
- <dd>
- <p>
- <a href="#concept-return-an-error">Return an error</a> named
- <a href="#dfn-NotSupportedError"><code>NotSupportedError</code></a>.</p>
- </dd>
- </dl>
- </li>
- <li>
- <p>
- Return <var>result</var>.
- </p>
- </li>
- </ol>
- </dd>
- </dl>
- </div>
- </div>
-
<div id="rsassa-pkcs1" class="section">
<h3>RSASSA-PKCS1-v1_5</h3>
<div id="rsassa-pkcs1-description" class="section">
@@ -17325,19 +16488,6 @@
<td>
<x:codeblock language="es">
{ kty: "RSA",
- alg: "RSA1_5" }
-</x:codeblock>
- </td>
- <td>
-<x:codeblock language="es">
-{ name: "RSAES-PKCS1-V1_5" }
-</x:codeblock>
- </td>
- </tr>
- <tr>
- <td>
-<x:codeblock language="es">
-{ kty: "RSA",
alg: "RS1" }
</x:codeblock>
</td>
@@ -17962,7 +17112,6 @@
<td>rsaEncryption (1.2.840.113549.1.1.1)</td>
<td>RSAPublicKey</td>
<td>
- <code>"RSAES-PKCS1-v1_5"</code>,
<code>"RSASSA-PKCS1-v1_5"</code>,
<code>"RSA-PSS"</code>, or
<code>"RSA-OAEP"</code>
@@ -18052,7 +17201,6 @@
<td>rsaEncryption (1.2.840.113549.1.1.1)</td>
<td>RSAPrivateKey</td>
<td>
- <code>"RSAES-PKCS1-v1_5"</code>,
<code>"RSASSA-PKCS1-v1_5"</code>,
<code>"RSA-PSS"</code>, or
<code>"RSA-OAEP"</code>
--- a/spec/Overview.html Mon Jun 16 00:00:00 2014 -0700
+++ b/spec/Overview.html Mon Jun 16 00:00:00 2014 -0700
@@ -44,7 +44,7 @@
communications.
</p>
- <div class="ednote"><div class="ednoteHeader">Editorial note</div><p>There are 16 further editorial notes in the document.</p></div>
+ <div class="ednote"><div class="ednoteHeader">Editorial note</div><p>There are 15 further editorial notes in the document.</p></div>
</div>
<div class="section">
@@ -134,7 +134,7 @@
<div id="toc">
<h2>Table of Contents</h2>
- <div class="toc"><ul><li><a href="#introduction">1. Introduction</a></li><li><a href="#use-cases">2. Use Cases</a><ul><li><a href="#multifactor-authentication">2.1. Multi-factor Authentication</a></li><li><a href="#protected-document">2.2. Protected Document Exchange</a></li><li><a href="#cloud-storage">2.3. Cloud Storage</a></li><li><a href="#document-signing">2.4. Document Signing</a></li><li><a href="#data-integrity-protection">2.5. Data Integrity Protection</a></li><li><a href="#secure-messaging">2.6. Secure Messaging</a></li><li><a href="#jose">2.7. Javascript Object Signing and Encryption (JOSE)</a></li></ul></li><li><a href="#conformance">3. Conformance</a></li><li><a href="#scope">4. Scope</a><ul><li><a href="#scope-abstraction">4.1. Level of abstraction</a></li><li><a href="#scope-algorithms">4.2. Cryptographic algorithms</a></li><li><a href="#scope-operations">4.3. Operations</a></li><li><a href="#scope-out-of-scope">4.4. Out of scope</a></li></ul></li><li><a href="#security">5. Security considerations</a><ul><li><a href="#security-implementers">5.1. Security considerations for implementers</a></li><li><a href="#security-developers">5.2. Security considerations for authors</a></li></ul></li><li><a href="#privacy">6. Privacy considerations</a></li><li><a href="#dependencies">7. Dependencies</a></li><li><a href="#terminology">8. Terminology</a></li><li><a href="#RandomSource-interface">9. RandomSource interface</a><ul><li><a href="#RandomSource-description">9.1. Description</a></li><li><a href="#RandomSource-interface-methods">9.2. Methods and Parameters</a><ul><li><a href="#RandomSource-method-getRandomValues">9.2.1. The getRandomValues method</a></li></ul></li></ul></li><li><a href="#algorithm-dictionary">10. Algorithm dictionary</a><ul><li><a href="#algorithm-dictionary-members">10.1. Algorithm Dictionary Members</a></li></ul></li><li><a href="#key-algorithm-dictionary">11. KeyAlgorithm dictionary</a><ul><li><a href="#key-algorithm-dictionary-description">11.1. Description</a></li><li><a href="#key-algorithm-dictionary-members">11.2. KeyAlgorithm dictionary members</a></li></ul></li><li><a href="#cryptokey-interface">12. CryptoKey interface</a><ul><li><a href="#cryptokey-interface-description">12.1. Description</a></li><li><a href="#cryptokey-interface-types">12.2. Key interface data types</a></li><li><a href="#cryptokey-interface-members">12.3. CryptoKey interface members</a></li><li><a href="#cryptokey-interface-clone">12.4. Structured clone algorithm</a></li></ul></li><li><a href="#crypto-interface">13. Crypto interface</a></li><li><a href="#subtlecrypto-interface">14. SubtleCrypto interface</a><ul><li><a href="#subtlecrypto-interface-description">14.1. Description</a></li><li><a href="#subtlecrypto-interface-datatypes">14.2. Data Types</a></li><li><a href="#subtlecrypto-interface-methods">14.3. Methods and Parameters</a><ul><li><a href="#SubtleCrypto-method-encrypt">14.3.1. The encrypt method</a></li><li><a href="#SubtleCrypto-method-decrypt">14.3.2. The decrypt method</a></li><li><a href="#SubtleCrypto-method-sign">14.3.3. The sign method</a></li><li><a href="#SubtleCrypto-method-verify">14.3.4. The verify method</a></li><li><a href="#SubtleCrypto-method-digest">14.3.5. The digest method</a></li><li><a href="#SubtleCrypto-method-generateKey">14.3.6. The generateKey method</a></li><li><a href="#SubtleCrypto-method-deriveKey">14.3.7. The deriveKey method</a></li><li><a href="#SubtleCrypto-method-deriveBits">14.3.8. The deriveBits method</a></li><li><a href="#SubtleCrypto-method-importKey">14.3.9. The importKey method</a></li><li><a href="#SubtleCrypto-method-exportKey">14.3.10. The exportKey method</a></li><li><a href="#SubtleCrypto-method-wrapKey">14.3.11. The wrapKey method</a></li><li><a href="#SubtleCrypto-method-unwrapKey">14.3.12. The unwrapKey method</a></li></ul></li><li><a href="#SubtleCrypto-Exceptions">14.4. Exceptions</a></li></ul></li><li><a href="#JsonWebKey-dictionary">15. JsonWebKey dictionary</a></li><li><a href="#WorkerCrypto-interface">16. WorkerCrypto interface</a><ul><li><a href="#WorkerCrypto-description">16.1. Description</a></li></ul></li><li><a href="#big-integer">17. BigInteger</a></li><li><a href="#keypair">18. CryptoKeyPair dictionary</a></li><li><a href="#algorithms">19. Algorithms</a><ul><li><a href="#algorithms-index">19.1. Registered algorithms</a></li><li><a href="#recommended-algorithms">19.2. Recommended algorithms</a></li><li><a href="#defining-an-algorithm">19.3. Defining an algorithm</a><ul><li><a href="#recognized-algorithm-name">19.3.1. Recognized algorithm name</a></li><li><a href="#supported-operations">19.3.2. Supported operations</a></li><li><a href="#algorithm-specific-params">19.3.3. Algorithm-specific parameters</a></li><li><a href="#algorithm-result">19.3.4. Algorithm results</a></li><li><a href="#algorithm-alias">19.3.5. Algorithm aliases</a></li></ul></li><li><a href="#rsaes-pkcs1">19.4. RSAES-PKCS1-v1_5</a><ul><li><a href="#rsaes-pkcs1-description">19.4.1. Description</a></li><li><a href="#rsaes-pkcs1-registration">19.4.2. Registration</a></li><li><a href="#RsaKeyGenParams-dictionary">19.4.3. RsaKeyGenParams dictionary</a></li><li><a href="#RsaKeyAlgorithm-dictionary">19.4.4. RsaKeyAlgorithm dictionary</a></li><li><a href="#rsaes-pkcs1-operations">19.4.5. Operations</a></li></ul></li><li><a href="#rsassa-pkcs1">19.5. RSASSA-PKCS1-v1_5</a><ul><li><a href="#rsassa-pkcs1-description">19.5.1. Description</a></li><li><a href="#rsassa-pkcs1-registration">19.5.2. Registration</a></li><li><a href="#RsaHashedKeyGenParams-dictionary">19.5.3. RsaHashedKeyGenParams dictionary</a></li><li><a href="#RsaHashedKeyAlgorithm-dictionary">19.5.4. RsaHashedKeyAlgorithm dictionary</a></li><li><a href="#RsaHashedImportParams-dictionary">19.5.5. RsaHashedImportParams dictionary</a></li><li><a href="#rsassa-pkcs1-operations">19.5.6. Operations</a></li></ul></li><li><a href="#rsa-pss">19.6. RSA-PSS</a><ul><li><a href="#rsa-pss-description">19.6.1. Description</a></li><li><a href="#rsa-pss-registration">19.6.2. Registration</a></li><li><a href="#RsaPssParams-dictionary">19.6.3. RsaPssParams dictionary</a></li><li><a href="#rsa-pss-operations">19.6.4. Operations</a></li></ul></li><li><a href="#rsa-oaep">19.7. RSA-OAEP</a><ul><li><a href="#rsa-oaep-description">19.7.1. Description</a></li><li><a href="#rsa-oaep-registration">19.7.2. Registration</a></li><li><a href="#rsa-oaep-params">19.7.3. RsaOaepParams dictionary</a></li><li><a href="#rsa-oaep-operations">19.7.4. Operations</a></li></ul></li><li><a href="#ecdsa">19.8. ECDSA</a><ul><li><a href="#ecdsa-description">19.8.1. Description</a></li><li><a href="#ecdsa-registration">19.8.2. Registration</a></li><li><a href="#EcdsaParams-dictionary">19.8.3. EcdsaParams dictionary</a></li><li><a href="#EcKeyGenParams-dictionary">19.8.4. EcKeyGenParams dictionary</a></li><li><a href="#EcKeyAlgorithm-dictionary">19.8.5. EcKeyAlgorithm dictionary</a></li><li><a href="#EcKeyImportParams-dictionary">19.8.6. EcKeyImportParams dictionary</a></li><li><a href="#ecdsa-operations">19.8.7. Operations</a></li></ul></li><li><a href="#ecdh">19.9. ECDH</a><ul><li><a href="#ecdh-description">19.9.1. Description</a></li><li><a href="#ecdh-registration">19.9.2. Registration</a></li><li><a href="#dh-EcdhKeyDeriveParams">19.9.3. EcdhKeyDeriveParams dictionary</a></li><li><a href="#ecdh-operations">19.9.4. Operations</a></li></ul></li><li><a href="#aes-ctr">19.10. AES-CTR</a><ul><li><a href="#aes-ctr-description">19.10.1. Description</a></li><li><a href="#aes-ctr-registration">19.10.2. Registration</a></li><li><a href="#aes-ctr-params">19.10.3. AesCtrParams dictionary</a></li><li><a href="#AesKeyAlgorithm-dictionary">19.10.4. </a></li><li><a href="#aes-keygen-params">19.10.5. AesKeyGenParams dictionary</a></li><li><a href="#aes-derivedkey-params">19.10.6. AesDerivedKeyParams dictionary</a></li><li><a href="#aes-ctr-operations">19.10.7. Operations</a></li></ul></li><li><a href="#aes-cbc">19.11. AES-CBC</a><ul><li><a href="#aes-cbc-description">19.11.1. Description</a></li><li><a href="#aes-cbc-registration">19.11.2. Registration</a></li><li><a href="#aes-cbc-params">19.11.3. AesCbcParams dictionary</a></li><li><a href="#aes-cbc-operations">19.11.4. Operations</a></li></ul></li><li><a href="#aes-cmac">19.12. AES-CMAC</a><ul><li><a href="#aes-cmac-description">19.12.1. Description</a></li><li><a href="#aes-cmac-registration">19.12.2. Registration</a></li><li><a href="#aes-cmac-params">19.12.3. AesCmacParams dictionary</a></li><li><a href="#aes-cmac-operations">19.12.4. Operations</a></li></ul></li><li><a href="#aes-gcm">19.13. AES-GCM</a><ul><li><a href="#aes-gcm-description">19.13.1. Description</a></li><li><a href="#aes-gcm-registration">19.13.2. Registration</a></li><li><a href="#aes-gcm-params">19.13.3. AesGcmParams dictionary</a></li><li><a href="#aes-gcm-operations">19.13.4. Operations</a></li></ul></li><li><a href="#aes-cfb">19.14. AES-CFB</a><ul><li><a href="#aes-cfb-description">19.14.1. Description</a></li><li><a href="#aes-cfb-registration">19.14.2. Registration</a></li><li><a href="#aes-cfb-params">19.14.3. AesCfbParams dictionary</a></li><li><a href="#aes-cfb-operations">19.14.4. Operations</a></li></ul></li><li><a href="#aes-kw">19.15. AES-KW</a><ul><li><a href="#aes-kw-description">19.15.1. Description</a></li><li><a href="#aes-kw-registration">19.15.2. Registration</a></li><li><a href="#aes-kw-operations">19.15.3. Operations</a></li></ul></li><li><a href="#hmac">19.16. HMAC</a><ul><li><a href="#hmac-description">19.16.1. Description</a></li><li><a href="#hmac-registration">19.16.2. Registration</a></li><li><a href="#hmac-importparams">19.16.3. HmacImportParams dictionary</a></li><li><a href="#HmacKeyAlgorithm-dictionary">19.16.4. HmacKeyAlgorithm dictionary</a></li><li><a href="#hmac-keygen-params">19.16.5. HmacKeyGenParams dictionary</a></li><li><a href="#hmac-derivedkey-params">19.16.6. HmacDerivedKeyParams dictionary</a></li><li><a href="#hmac-operations">19.16.7. Operations</a></li></ul></li><li><a href="#dh">19.17. Diffie-Hellman</a><ul><li><a href="#dh-description">19.17.1. Description</a></li><li><a href="#dh-registration">19.17.2. Registration</a></li><li><a href="#dh-DhKeyGenParams">19.17.3. DhKeyGenParams dictionary</a></li><li><a href="#dh-DhKeyAlgorithm">19.17.4. DhKeyAlgorithm dictionary</a></li><li><a href="#dh-DhKeyDeriveParams">19.17.5. DhKeyDeriveParams dictionary</a></li><li><a href="#dh-DhImportKeyParams">19.17.6. DhImportKeyParams dictionary</a></li><li><a href="#dh-operations">19.17.7. Operations</a></li></ul></li><li><a href="#sha">19.18. SHA</a><ul><li><a href="#sha-description">19.18.1. Description</a></li><li><a href="#sha-registration">19.18.2. Registration</a></li><li><a href="#sha-operations">19.18.3. Operations</a></li></ul></li><li><a href="#concatkdf">19.19. Concat KDF</a><ul><li><a href="#concatkdf-description">19.19.1. Description</a></li><li><a href="#concatkdf-registration">19.19.2. Registration</a></li><li><a href="#concat-params">19.19.3. ConcatParams dictionary</a></li><li><a href="#concat-operations">19.19.4. Operations</a></li></ul></li><li><a href="#hkdf-ctr">19.20. HKDF-CTR</a><ul><li><a href="#hkdf-ctr-description">19.20.1. Description</a></li><li><a href="#hkdf-ctr-registration">19.20.2. Registration</a></li><li><a href="#hkdf-ctr-params">19.20.3. HkdfCtrParams dictionary</a></li><li><a href="#hkdf2-ctr-operations">19.20.4. Operations</a></li></ul></li><li><a href="#pbkdf2">19.21. PBKDF2</a><ul><li><a href="#pbkdf2-description">19.21.1. Description</a></li><li><a href="#pbkdf2-registration">19.21.2. Registration</a></li><li><a href="#pbkdf2-params">19.21.3. Pbkdf2Params dictionary</a></li><li><a href="#pbkdf2-operations">19.21.4. Operations</a></li></ul></li></ul></li><li><a href="#algorithm-normalizing-rules">20. Algorithm normalizing rules</a></li><li><a href="#examples-section">21. JavaScript Example Code</a><ul><li><a href="#examples-signing">21.1. Generate a signing key pair, sign some data</a></li><li><a href="#examples-symmetric-encryption">21.2. Symmetric Encryption</a></li></ul></li><li><a href="#iana-section">22. IANA Considerations</a><ul><li><a href="#iana-section-jws-jwa">22.1. JSON Web Signature and Encryption Algorithms Registration</a></li><li><a href="#iana-section-jwk">22.2. JSON Web Key Parameters Registration</a></li></ul></li><li><a href="#acknowledgements-section">23. Acknowledgements</a></li><li><a href="#references">24. References</a><ul><li><a href="#normative-references">24.1. Normative References</a></li><li><a href="#informative-references">24.2. Informative References</a></li></ul></li></ul><ul><li><a href="#jwk-mapping">A. Mapping between JSON Web Key / JSON Web Algorithm</a><ul><li><a href="#jwk-mapping-alg">A.1. Algorithm mappings</a></li><li><a href="#jwk-mapping-usage">A.2. Usage mapping</a></li></ul></li><li><a href="#spki-mapping">B. Mapping between Algorithm and SubjectPublicKeyInfo</a></li><li><a href="#pkcs8-mapping">C. Mapping between Algorithm and PKCS#8 PrivateKeyInfo</a></li></ul></div>
+ <div class="toc"><ul><li><a href="#introduction">1. Introduction</a></li><li><a href="#use-cases">2. Use Cases</a><ul><li><a href="#multifactor-authentication">2.1. Multi-factor Authentication</a></li><li><a href="#protected-document">2.2. Protected Document Exchange</a></li><li><a href="#cloud-storage">2.3. Cloud Storage</a></li><li><a href="#document-signing">2.4. Document Signing</a></li><li><a href="#data-integrity-protection">2.5. Data Integrity Protection</a></li><li><a href="#secure-messaging">2.6. Secure Messaging</a></li><li><a href="#jose">2.7. Javascript Object Signing and Encryption (JOSE)</a></li></ul></li><li><a href="#conformance">3. Conformance</a></li><li><a href="#scope">4. Scope</a><ul><li><a href="#scope-abstraction">4.1. Level of abstraction</a></li><li><a href="#scope-algorithms">4.2. Cryptographic algorithms</a></li><li><a href="#scope-operations">4.3. Operations</a></li><li><a href="#scope-out-of-scope">4.4. Out of scope</a></li></ul></li><li><a href="#security">5. Security considerations</a><ul><li><a href="#security-implementers">5.1. Security considerations for implementers</a></li><li><a href="#security-developers">5.2. Security considerations for authors</a></li></ul></li><li><a href="#privacy">6. Privacy considerations</a></li><li><a href="#dependencies">7. Dependencies</a></li><li><a href="#terminology">8. Terminology</a></li><li><a href="#RandomSource-interface">9. RandomSource interface</a><ul><li><a href="#RandomSource-description">9.1. Description</a></li><li><a href="#RandomSource-interface-methods">9.2. Methods and Parameters</a><ul><li><a href="#RandomSource-method-getRandomValues">9.2.1. The getRandomValues method</a></li></ul></li></ul></li><li><a href="#algorithm-dictionary">10. Algorithm dictionary</a><ul><li><a href="#algorithm-dictionary-members">10.1. Algorithm Dictionary Members</a></li></ul></li><li><a href="#key-algorithm-dictionary">11. KeyAlgorithm dictionary</a><ul><li><a href="#key-algorithm-dictionary-description">11.1. Description</a></li><li><a href="#key-algorithm-dictionary-members">11.2. KeyAlgorithm dictionary members</a></li></ul></li><li><a href="#cryptokey-interface">12. CryptoKey interface</a><ul><li><a href="#cryptokey-interface-description">12.1. Description</a></li><li><a href="#cryptokey-interface-types">12.2. Key interface data types</a></li><li><a href="#cryptokey-interface-members">12.3. CryptoKey interface members</a></li><li><a href="#cryptokey-interface-clone">12.4. Structured clone algorithm</a></li></ul></li><li><a href="#crypto-interface">13. Crypto interface</a></li><li><a href="#subtlecrypto-interface">14. SubtleCrypto interface</a><ul><li><a href="#subtlecrypto-interface-description">14.1. Description</a></li><li><a href="#subtlecrypto-interface-datatypes">14.2. Data Types</a></li><li><a href="#subtlecrypto-interface-methods">14.3. Methods and Parameters</a><ul><li><a href="#SubtleCrypto-method-encrypt">14.3.1. The encrypt method</a></li><li><a href="#SubtleCrypto-method-decrypt">14.3.2. The decrypt method</a></li><li><a href="#SubtleCrypto-method-sign">14.3.3. The sign method</a></li><li><a href="#SubtleCrypto-method-verify">14.3.4. The verify method</a></li><li><a href="#SubtleCrypto-method-digest">14.3.5. The digest method</a></li><li><a href="#SubtleCrypto-method-generateKey">14.3.6. The generateKey method</a></li><li><a href="#SubtleCrypto-method-deriveKey">14.3.7. The deriveKey method</a></li><li><a href="#SubtleCrypto-method-deriveBits">14.3.8. The deriveBits method</a></li><li><a href="#SubtleCrypto-method-importKey">14.3.9. The importKey method</a></li><li><a href="#SubtleCrypto-method-exportKey">14.3.10. The exportKey method</a></li><li><a href="#SubtleCrypto-method-wrapKey">14.3.11. The wrapKey method</a></li><li><a href="#SubtleCrypto-method-unwrapKey">14.3.12. The unwrapKey method</a></li></ul></li><li><a href="#SubtleCrypto-Exceptions">14.4. Exceptions</a></li></ul></li><li><a href="#JsonWebKey-dictionary">15. JsonWebKey dictionary</a></li><li><a href="#WorkerCrypto-interface">16. WorkerCrypto interface</a><ul><li><a href="#WorkerCrypto-description">16.1. Description</a></li></ul></li><li><a href="#big-integer">17. BigInteger</a></li><li><a href="#keypair">18. CryptoKeyPair dictionary</a></li><li><a href="#algorithms">19. Algorithms</a><ul><li><a href="#algorithms-index">19.1. Registered algorithms</a></li><li><a href="#recommended-algorithms">19.2. Recommended algorithms</a></li><li><a href="#defining-an-algorithm">19.3. Defining an algorithm</a><ul><li><a href="#recognized-algorithm-name">19.3.1. Recognized algorithm name</a></li><li><a href="#supported-operations">19.3.2. Supported operations</a></li><li><a href="#algorithm-specific-params">19.3.3. Algorithm-specific parameters</a></li><li><a href="#algorithm-result">19.3.4. Algorithm results</a></li><li><a href="#algorithm-alias">19.3.5. Algorithm aliases</a></li></ul></li><li><a href="#rsassa-pkcs1">19.4. RSASSA-PKCS1-v1_5</a><ul><li><a href="#rsassa-pkcs1-description">19.4.1. Description</a></li><li><a href="#rsassa-pkcs1-registration">19.4.2. Registration</a></li><li><a href="#RsaHashedKeyGenParams-dictionary">19.4.3. RsaHashedKeyGenParams dictionary</a></li><li><a href="#RsaHashedKeyAlgorithm-dictionary">19.4.4. RsaHashedKeyAlgorithm dictionary</a></li><li><a href="#RsaHashedImportParams-dictionary">19.4.5. RsaHashedImportParams dictionary</a></li><li><a href="#rsassa-pkcs1-operations">19.4.6. Operations</a></li></ul></li><li><a href="#rsa-pss">19.5. RSA-PSS</a><ul><li><a href="#rsa-pss-description">19.5.1. Description</a></li><li><a href="#rsa-pss-registration">19.5.2. Registration</a></li><li><a href="#RsaPssParams-dictionary">19.5.3. RsaPssParams dictionary</a></li><li><a href="#rsa-pss-operations">19.5.4. Operations</a></li></ul></li><li><a href="#rsa-oaep">19.6. RSA-OAEP</a><ul><li><a href="#rsa-oaep-description">19.6.1. Description</a></li><li><a href="#rsa-oaep-registration">19.6.2. Registration</a></li><li><a href="#rsa-oaep-params">19.6.3. RsaOaepParams dictionary</a></li><li><a href="#rsa-oaep-operations">19.6.4. Operations</a></li></ul></li><li><a href="#ecdsa">19.7. ECDSA</a><ul><li><a href="#ecdsa-description">19.7.1. Description</a></li><li><a href="#ecdsa-registration">19.7.2. Registration</a></li><li><a href="#EcdsaParams-dictionary">19.7.3. EcdsaParams dictionary</a></li><li><a href="#EcKeyGenParams-dictionary">19.7.4. EcKeyGenParams dictionary</a></li><li><a href="#EcKeyAlgorithm-dictionary">19.7.5. EcKeyAlgorithm dictionary</a></li><li><a href="#EcKeyImportParams-dictionary">19.7.6. EcKeyImportParams dictionary</a></li><li><a href="#ecdsa-operations">19.7.7. Operations</a></li></ul></li><li><a href="#ecdh">19.8. ECDH</a><ul><li><a href="#ecdh-description">19.8.1. Description</a></li><li><a href="#ecdh-registration">19.8.2. Registration</a></li><li><a href="#dh-EcdhKeyDeriveParams">19.8.3. EcdhKeyDeriveParams dictionary</a></li><li><a href="#ecdh-operations">19.8.4. Operations</a></li></ul></li><li><a href="#aes-ctr">19.9. AES-CTR</a><ul><li><a href="#aes-ctr-description">19.9.1. Description</a></li><li><a href="#aes-ctr-registration">19.9.2. Registration</a></li><li><a href="#aes-ctr-params">19.9.3. AesCtrParams dictionary</a></li><li><a href="#AesKeyAlgorithm-dictionary">19.9.4. </a></li><li><a href="#aes-keygen-params">19.9.5. AesKeyGenParams dictionary</a></li><li><a href="#aes-derivedkey-params">19.9.6. AesDerivedKeyParams dictionary</a></li><li><a href="#aes-ctr-operations">19.9.7. Operations</a></li></ul></li><li><a href="#aes-cbc">19.10. AES-CBC</a><ul><li><a href="#aes-cbc-description">19.10.1. Description</a></li><li><a href="#aes-cbc-registration">19.10.2. Registration</a></li><li><a href="#aes-cbc-params">19.10.3. AesCbcParams dictionary</a></li><li><a href="#aes-cbc-operations">19.10.4. Operations</a></li></ul></li><li><a href="#aes-cmac">19.11. AES-CMAC</a><ul><li><a href="#aes-cmac-description">19.11.1. Description</a></li><li><a href="#aes-cmac-registration">19.11.2. Registration</a></li><li><a href="#aes-cmac-params">19.11.3. AesCmacParams dictionary</a></li><li><a href="#aes-cmac-operations">19.11.4. Operations</a></li></ul></li><li><a href="#aes-gcm">19.12. AES-GCM</a><ul><li><a href="#aes-gcm-description">19.12.1. Description</a></li><li><a href="#aes-gcm-registration">19.12.2. Registration</a></li><li><a href="#aes-gcm-params">19.12.3. AesGcmParams dictionary</a></li><li><a href="#aes-gcm-operations">19.12.4. Operations</a></li></ul></li><li><a href="#aes-cfb">19.13. AES-CFB</a><ul><li><a href="#aes-cfb-description">19.13.1. Description</a></li><li><a href="#aes-cfb-registration">19.13.2. Registration</a></li><li><a href="#aes-cfb-params">19.13.3. AesCfbParams dictionary</a></li><li><a href="#aes-cfb-operations">19.13.4. Operations</a></li></ul></li><li><a href="#aes-kw">19.14. AES-KW</a><ul><li><a href="#aes-kw-description">19.14.1. Description</a></li><li><a href="#aes-kw-registration">19.14.2. Registration</a></li><li><a href="#aes-kw-operations">19.14.3. Operations</a></li></ul></li><li><a href="#hmac">19.15. HMAC</a><ul><li><a href="#hmac-description">19.15.1. Description</a></li><li><a href="#hmac-registration">19.15.2. Registration</a></li><li><a href="#hmac-importparams">19.15.3. HmacImportParams dictionary</a></li><li><a href="#HmacKeyAlgorithm-dictionary">19.15.4. HmacKeyAlgorithm dictionary</a></li><li><a href="#hmac-keygen-params">19.15.5. HmacKeyGenParams dictionary</a></li><li><a href="#hmac-derivedkey-params">19.15.6. HmacDerivedKeyParams dictionary</a></li><li><a href="#hmac-operations">19.15.7. Operations</a></li></ul></li><li><a href="#dh">19.16. Diffie-Hellman</a><ul><li><a href="#dh-description">19.16.1. Description</a></li><li><a href="#dh-registration">19.16.2. Registration</a></li><li><a href="#dh-DhKeyGenParams">19.16.3. DhKeyGenParams dictionary</a></li><li><a href="#dh-DhKeyAlgorithm">19.16.4. DhKeyAlgorithm dictionary</a></li><li><a href="#dh-DhKeyDeriveParams">19.16.5. DhKeyDeriveParams dictionary</a></li><li><a href="#dh-DhImportKeyParams">19.16.6. DhImportKeyParams dictionary</a></li><li><a href="#dh-operations">19.16.7. Operations</a></li></ul></li><li><a href="#sha">19.17. SHA</a><ul><li><a href="#sha-description">19.17.1. Description</a></li><li><a href="#sha-registration">19.17.2. Registration</a></li><li><a href="#sha-operations">19.17.3. Operations</a></li></ul></li><li><a href="#concatkdf">19.18. Concat KDF</a><ul><li><a href="#concatkdf-description">19.18.1. Description</a></li><li><a href="#concatkdf-registration">19.18.2. Registration</a></li><li><a href="#concat-params">19.18.3. ConcatParams dictionary</a></li><li><a href="#concat-operations">19.18.4. Operations</a></li></ul></li><li><a href="#hkdf-ctr">19.19. HKDF-CTR</a><ul><li><a href="#hkdf-ctr-description">19.19.1. Description</a></li><li><a href="#hkdf-ctr-registration">19.19.2. Registration</a></li><li><a href="#hkdf-ctr-params">19.19.3. HkdfCtrParams dictionary</a></li><li><a href="#hkdf2-ctr-operations">19.19.4. Operations</a></li></ul></li><li><a href="#pbkdf2">19.20. PBKDF2</a><ul><li><a href="#pbkdf2-description">19.20.1. Description</a></li><li><a href="#pbkdf2-registration">19.20.2. Registration</a></li><li><a href="#pbkdf2-params">19.20.3. Pbkdf2Params dictionary</a></li><li><a href="#pbkdf2-operations">19.20.4. Operations</a></li></ul></li></ul></li><li><a href="#algorithm-normalizing-rules">20. Algorithm normalizing rules</a></li><li><a href="#examples-section">21. JavaScript Example Code</a><ul><li><a href="#examples-signing">21.1. Generate a signing key pair, sign some data</a></li><li><a href="#examples-symmetric-encryption">21.2. Symmetric Encryption</a></li></ul></li><li><a href="#iana-section">22. IANA Considerations</a><ul><li><a href="#iana-section-jws-jwa">22.1. JSON Web Signature and Encryption Algorithms Registration</a></li><li><a href="#iana-section-jwk">22.2. JSON Web Key Parameters Registration</a></li></ul></li><li><a href="#acknowledgements-section">23. Acknowledgements</a></li><li><a href="#references">24. References</a><ul><li><a href="#normative-references">24.1. Normative References</a></li><li><a href="#informative-references">24.2. Informative References</a></li></ul></li></ul><ul><li><a href="#jwk-mapping">A. Mapping between JSON Web Key / JSON Web Algorithm</a><ul><li><a href="#jwk-mapping-alg">A.1. Algorithm mappings</a></li><li><a href="#jwk-mapping-usage">A.2. Usage mapping</a></li></ul></li><li><a href="#spki-mapping">B. Mapping between Algorithm and SubjectPublicKeyInfo</a></li><li><a href="#pkcs8-mapping">C. Mapping between Algorithm and PKCS#8 PrivateKeyInfo</a></li></ul></div>
</div>
<div id="sections">
@@ -2670,21 +2670,6 @@
</thead>
<tbody>
<tr>
- <td><a href="#rsaes-pkcs1">RSAES-PKCS1-v1_5</a></td>
- <td>✔</td>
- <td>✔</td>
- <td></td>
- <td></td>
- <td></td>
- <td>✔</td>
- <td></td>
- <td></td>
- <td>✔</td>
- <td>✔</td>
- <td>✔</td>
- <td>✔</td>
- </tr>
- <tr>
<td><a href="#rsassa-pkcs1">RSASSA-PKCS1-v1_5</a></td>
<td></td>
<td></td>
@@ -3086,822 +3071,18 @@
</div>
</div>
- <div id="rsaes-pkcs1" class="section">
- <h3>19.4. RSAES-PKCS1-v1_5</h3>
- <div id="rsaes-pkcs1-description" class="section">
+ <div id="rsassa-pkcs1" class="section">
+ <h3>19.4. RSASSA-PKCS1-v1_5</h3>
+ <div id="rsassa-pkcs1-description" class="section">
<h4>19.4.1. Description</h4>
<p>
- The <code>"RSAES-PKCS1-v1_5"</code> algorithm identifier is used to perform encryption
- and decryption ordering to the RSAES-PKCS1-v1_5 algorithm specified in
- [<cite><a href="#RFC3447">RFC3447</a></cite>].
- </p>
- </div>
- <div id="rsaes-pkcs1-registration" class="section">
- <h4>19.4.2. Registration</h4>
- <p>
- The <a href="#recognized-algorithm-name">recognized algorithm name</a> for
- this algorithm is <code>"RSAES-PKCS1-v1_5"</code>.
- </p>
- <table>
- <thead>
- <tr>
- <th><a href="#supported-operations">Operation</a></th>
- <th><a href="#algorithm-specific-params">Parameters</a></th>
- <th><a href="#algorithm-result">Result</a></th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>encrypt</td>
- <td>None</td>
- <td>ArrayBuffer</td>
- </tr>
- <tr>
- <td>decrypt</td>
- <td>None</td>
- <td>ArrayBuffer</td>
- </tr>
- <tr>
- <td>generateKey</td>
- <td><a href="#dfn-RsaKeyGenParams">RsaKeyGenParams</a></td>
- <td><a href="#dfn-CryptoKeyPair">CryptoKeyPair</a></td>
- </tr>
- <tr>
- <td>importKey</td>
- <td>None</td>
- <td><a href="#dfn-CryptoKey">CryptoKey</a></td>
- </tr>
- <tr>
- <td>exportKey</td>
- <td>None</td>
- <td>object</td>
- </tr>
- </tbody>
- </table>
- </div>
- <div id="RsaKeyGenParams-dictionary" class="section">
- <h4>19.4.3. RsaKeyGenParams dictionary</h4>
- <div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
-dictionary <dfn id="dfn-RsaKeyGenParams">RsaKeyGenParams</dfn> : <a href="#dfn-Algorithm">Algorithm</a> {
- <span class="comment">// The length, in bits, of the RSA modulus</span>
- [EnforceRange] unsigned long <dfn id="dfn-RsaKeyGenParams-modulusLength">modulusLength</dfn>;
- <span class="comment">// The RSA public exponent</span>
- <a href="#dfn-BigInteger">BigInteger</a> <dfn id="dfn-RsaKeyGenParams-publicExponent">publicExponent</dfn>;
-};
- </code></pre></div></div>
- </div>
- <div id="RsaKeyAlgorithm-dictionary" class="section">
- <h4>19.4.4. RsaKeyAlgorithm dictionary</h4>
- <div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
-dictionary <dfn id="dfn-RsaKeyAlgorithm">RsaKeyAlgorithm</dfn> : <a href="#dfn-KeyAlgorithm">KeyAlgorithm</a> {
- <span class="comment">// The length, in bits, of the RSA modulus</span>
- unsigned long <dfn id="dfn-RsaKeyAlgorithm-modulusLength">modulusLength</dfn>;
- <span class="comment">// The RSA public exponent</span>
- <a href="#dfn-BigInteger">BigInteger</a> <dfn id="dfn-RsaKeyAlgorithm-publicExponent">publicExponent</dfn>;
-};
- </code></pre></div></div>
- </div>
- <div id="rsaes-pkcs1-operations" class="section">
- <h4>19.4.5. Operations</h4>
- <dl>
- <dt>Encrypt</dt>
- <dd>
- <ol>
- <li>
- <p>
- If the <a href="#dfn-CryptoKey-type">type</a> attribute of <var>key</var> is
- not <code>"public"</code>, then <a href="#concept-return-an-error">return an
- error</a> named <a href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Perform the encryption operation defined in Section 7.2 of [<cite><a href="#RFC3447">RFC3447</a></cite>] with the key represented by <var>key</var>
- as the recipient's RSA public key and the
- <a href="#concept-contents-of-arraybuffer">contents of <var>plaintext</var></a>
- as <var>M</var>.
- </p>
- </li>
- <li>
- <p>
- If performing the operation results in an error,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-OperationError"><code>OperationError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Let <var>ciphertext</var> be a new ArrayBuffer
- containing the value <var>C</var> that results from performing the
- operation.
- </p>
- </li>
- </ol>
- </dd>
- <dt>Decrypt</dt>
- <dd>
- <ol>
- <li>
- <p>
- If the <a href="#dfn-CryptoKey-type">type</a> attribute of <var>key</var> is
- not <code>"private"</code>, then <a href="#concept-return-an-error">return an
- error</a> named <a href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>
- </p>
- </li>
- <li>
- <p>
- Perform the decryption operation defined in Section 7.2 of [<cite><a href="#RFC3447">RFC3447</a></cite>] with the key represented by <var>key</var>
- as the recipient's RSA private key and the <a href="#concept-contents-of-arraybuffer">contents of <var>ciphertext</var></a>
- as <var>C</var>.
- </p>
- </li>
- <li>
- <p>
- If performing the operation results in an error,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-OperationError"><code>OperationError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Let <var>plaintext</var> be a new ArrayBuffer
- containing the value <var>M</var> that results from performing the
- operation.
- </p>
- </li>
- </ol>
- </dd>
- <dt>Generate Key</dt>
- <dd>
- <ol>
- <li>
- <p>
- Let <var>normalizedAlgorithm</var> be the result of
- <a href="#dfn-normalize-to-type">normalizing</a> <var>algorithm</var>
- to <a href="#dfn-RsaKeyGenParams">RsaKeyGenParams</a>.
- </p>
- </li>
- <li>
- <p>
- If any of the members of <a href="#dfn-RsaKeyGenParams">RsaKeyGenParams</a> are
- not present in <var>normalizedAlgorithm</var>,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-SyntaxError"><code>SyntaxError</code></a>.
- </p>
- </li>
- <li>
- <p>
- If <var>usages</var> contains an entry which is not
- <code>"encrypt"</code>, <code>"decrypt"</code>,
- <code>"wrapKey"</code> or <code>"unwrapKey"</code>,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Generate an RSA key pair, as defined in [<cite><a href="#RFC3447">RFC3447</a></cite>], with RSA modulus length equal to the
- <a href="#dfn-RsaKeyGenParams-modulusLength">modulusLength</a> member of
- <var>normalizedAlgorithm</var> and RSA public exponent equal to the
- <a href="#dfn-RsaKeyGenParams-publicExponent">publicExponent</a> member of
- <var>normalizedAlgorithm</var>.
- </p>
- </li>
- <li>
- <p>
- If generation of the key pair fails,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-OperationError"><code>OperationError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Let <var>algorithm</var> be a new
- <a href="#dfn-RsaKeyAlgorithm">RsaKeyAlgorithm</a> dictionary.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-KeyAlgorithm-name">name</a> attribute of
- <var>algorithm</var> to <code>"RSAES-PKCS1-v1_5"</code>.
- </p>
- </li>
- <li>
- <p>
- Set the
- <a href="#dfn-RsaKeyAlgorithm-modulusLength">modulusLength</a>
- attribute of <var>algorithm</var> to equal the
- <a href="#dfn-RsaKeyGenParams-modulusLength">modulusLength</a>
- attribute of <var>normalizedAlgorithm</var>.
- </p>
- </li>
- <li>
- <p>
- Set the
- <a href="#dfn-RsaKeyAlgorithm-publicExponent">publicExponent</a>
- attribute of <var>algorithm</var> to equal the
- <a href="#dfn-RsaKeyGenParams-publicExponent">publicExponent</a>
- attribute of <var>normalizedAlgorithm</var>.
- </p>
- </li>
- <li>
- <p>
- Let <var>publicKey</var> be a new <a href="#dfn-CryptoKey">CryptoKey</a>
- object representing the public key of the generated key pair.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
- <var>publicKey</var> to <code>"public"</code>
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
- <var>publicKey</var> to <var>algorithm</var>.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
- <var>publicKey</var> to true.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
- <var>publicKey</var> to be the <a href="#concept-usage-intersection">usage
- intersection</a> of <var>usages</var> and <code>[ "encrypt", "wrapKey"
- ]</code>.
- </p>
- </li>
- <li>
- <p>
- Let <var>privateKey</var> be a new <a href="#dfn-CryptoKey">CryptoKey</a>
- object representing the private key of the generated key pair.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
- <var>privateKey</var> to <code>"private"</code>
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
- <var>privateKey</var> to <var>algorithm</var>.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
- <var>privateKey</var> to <var>extractable</var>.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
- <var>privateKey</var> to be the <a href="#concept-usage-intersection">usage
- intersection</a> of <var>usages</var> and <code>[ "decrypt", "unwrapKey"
- ]</code>.
- </p>
- </li>
- <li>
- <p>
- Let <var>result</var> be a new <a href="#dfn-CryptoKeyPair">CryptoKeyPair</a>
- dictionary.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKeyPair-publicKey">publicKey</a> attribute
- of <var>result</var> to be <var>publicKey</var>.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKeyPair-privateKey">privateKey</a> attribute
- of <var>result</var> to be <var>privateKey</var>.
- </p>
- </li>
- <li>
- <p>
- Return the result of converting <var>result</var> to an ECMAScript Object, as
- defined by [<a href="#WebIDL">WEBIDL</a>].
- </p>
- </li>
- </ol>
- </dd>
- <dt>Import Key</dt>
- <dd>
- <ol>
- <li>
- <p>Let <var>keyData</var> be the key data to be imported.</p>
- </li>
- <li>
- <dl class="switch">
- <dt>If <var>format</var> is <code>"spki"</code>:</dt>
- <dd>
- <ol>
- <li>
- <p>
- Let <var>spki</var> be the result of running the
- <a href="#concept-parse-a-spki">parse a subjectPublicKeyInfo</a>
- algorithm over <var>keyData</var>.
- </p>
- </li>
- <li>
- <p>
- If an error occurred while parsing,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- If the <code>algorithm</code> object identifier field of the
- <code>algorithm</code> AlgorithmIdentifier field of <var>spki</var>
- is not equivalent to the <code>rsaEncryption</code> OID defined in
- Section 2.3.1 of <a href="#RFC3279">RFC 3279</a>,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Let <var>publicKey</var> be the result of performing the <a href="#concept-parse-an-asn1-structure">parse an ASN.1 structure</a>
- algorithm, with <var>data</var> as the
- <code>subjectPublicKeyInfo</code> field of <var>spki</var>,
- <var>structure</var> as the <code>RSAPublicKey</code> structure
- specified in Section A.1.1 of <a href="#RFC3447">RFC 3447</a>, and
- <var>exactData</var> set to true.
- </p>
- </li>
- <li>
- <p>
- If an error occurred while parsing,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Let <var>key</var> be a new <a href="#dfn-CryptoKey">CryptoKey</a>
- object that represents the RSA public key identified by
- <var>publicKey</var>.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
- <var>key</var> to <code>"public"</code>
- </p>
- </li>
- </ol>
- </dd>
- <dt>If <var>format</var> is <code>"pkcs8"</code>:</dt>
- <dd>
- <ol>
- <li>
- <p>
- Let <var>privateKeyInfo</var> be the result of running the
- <a href="#concept-parse-a-privateKeyInfo">parse a privateKeyInfo</a>
- algorithm over <var>keyData</var>.
- </p>
- </li>
- <li>
- <p>
- If an error occurred while parsing,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- If the <code>algorithm</code> object identifier field of the
- <code>privateKeyAlgorithm</code> PrivateKeyAlgorithmIdentifier field
- of <var>privateKeyInfo</var> is not equivalent to the
- <code>rsaEncryption</code> OID defined in Section 2.3.1 of
- <a href="#RFC3279">RFC 3279</a>,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Let <var>rsaPrivateKey</var> be the result of performing the <a href="#concept-parse-an-asn1-structure">parse an ASN.1 structure</a>
- algorithm, with <var>data</var> as the
- <code>privateKey</code> field of <var>privateKeyInfo</var>,
- <var>structure</var> as the <code>RSAPrivateKey</code> structure
- specified in Section A.1.2 of <a href="#RFC3447">RFC 3447</a>, and
- <var>exactData</var> set to true.
- </p>
- </li>
- <li>
- <p>
- If an error occurred while parsing,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Let <var>key</var> be a new <a href="#dfn-CryptoKey">CryptoKey</a>
- object that represents the RSA private key identified by
- <var>rsaPrivateKey</var>.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
- <var>key</var> to <code>"private"</code>
- </p>
- </li>
- </ol>
- </dd>
- <dt>If <var>format</var> is <code>"jwk"</code>:</dt>
- <dd>
- <ol>
- <li>
- <p>
- Let <var>jwk</var> be the <a href="#dfn-JsonWebKey">JsonWebKey</a>
- dictionary represented by <var>keyData</var>.
- </p>
- </li>
- <li>
- <p>
- If the <code>"kty"</code> field of <var>jwk</var> is not
- <code>"RSA"</code>,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- If the <code>"use"</code> field of <var>jwk</var> is present, and is
- not <code>"enc"</code>,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- If the <code>"key_ops"</code> field of <var>jwk</var> is present, and
- is invalid according to the requirements of
- <a href="#jwk">JSON Web Key</a> or
- does not contain all of the specified <var>usages</var> values,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- If the <code>"alg"</code> field of <var>jwk</var> is present, and is
- not <code>"RSA1_5"</code>,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <dl class="switch">
- <dt>If the <code>"d"</code> field of <var>jwk</var> is present:</dt>
- <dd>
- <ol>
- <li>
- <p>
- If <var>jwk</var> does not meet the requirements of
- Section 6.3.2 of <a href="#jwa">JSON Web
- Algorithms</a>,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Let <var>key</var> be a new <a href="#dfn-CryptoKey">CryptoKey</a> object that represents the
- RSA private key identified by interpreting <var>jwk</var>
- according to Section 6.3.2 of <a href="#jwa"> JSON Web
- Algorithms</a>.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
- <var>key</var> to <code>"private"</code>
- </p>
- </li>
- </ol>
- </dd>
- <dt>Otherwise:</dt>
- <dd>
- <ol>
- <li>
- <p>
- If <var>jwk</var> does not meet the requirements of
- Section 6.3.1 of <a href="#jwa">JSON Web
- Algorithms</a>,
- then <a href="#concept-return-an-error">return an error</a> named
- <a href="#dfn-DataError"><code>DataError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Let <var>key</var> be a new <a href="#dfn-CryptoKey">CryptoKey</a> object that represents the
- RSA public key identified by interpreting <var>jwk</var>
- according to Section 6.3.1 of <a href="#jwa"> JSON Web
- Algorithms</a>.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
- <var>key</var> to <code>"public"</code>
- </p>
- </li>
- </ol>
- </dd>
- </dl>
- </li>
- </ol>
- </dd>
- <dt>Otherwise:</dt>
- <dd>
- <a href="#concept-return-an-error">Return an error</a> named
- <a href="#dfn-NotSupportedError"><code>NotSupportedError</code></a>.
- </dd>
- </dl>
- </li>
- <li>
- <p>
- Let <var>algorithm</var> be a new
- <a href="#dfn-RsaKeyAlgorithm">RsaKeyAlgorithm</a> dictionary.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-KeyAlgorithm-name">name</a> attribute of
- <var>algorithm</var> to <code>"RSAES-PKCS1-v1_5"</code>
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-RsaKeyAlgorithm-modulusLength">modulusLength</a>
- attribute of <var>algorithm</var> to the length, in bits, of the RSA public
- modulus.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-RsaKeyAlgorithm-publicExponent">publicExponent</a>
- attribute of <var>algorithm</var> to the <a href="#dfn-BigInteger">BigInteger</a>
- representation of the RSA public exponent.
- </p>
- </li>
- <li>
- <p>
- Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
- <var>key</var> to <var>algorithm</var>.
- </p>
- </li>
- <li>
- <p>Return <var>key</var>.</p>
- </li>
- </ol>
- </dd>
- <dt>Export Key</dt>
- <dd>
- <ol>
- <li>
- <p>
- Let <var>key</var> be the key to be exported.
- </p>
- </li>
- <li>
- <dl class="switch">
- <dt>If <var>format</var> is <code>"spki"</code></dt>
- <dd>
- <ol>
- <li>
- <p>
- If the <a href="#dfn-CryptoKey-type">type</a> attribute of
- <var>key</var> is not <code>"public"</code>, then <a href="#concept-return-an-error">return an error</a> named <a href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Let <var>data</var> be the result of <a href="#dfn-encode-a-subjectPublicKeyInfo">encoding a
- subjectPublicKeyInfo</a> with the following properties:
- </p>
- <ul>
- <li>
- <p>
- Set the <var>algorithm</var> field to an
- <code>AlgorithmIdentifier</code> ASN.1 type with the following
- properties:
- </p>
- <ul>
- <li>
- <p>
- Set the <var>algorithm</var> field to the OID
- <code>1.2.840.113549.1.1</code>
- </p>
- </li>
- <li>
- <p>
- Set the <var>params</var> field to the ASN.1 type NULL.
- </p>
- </li>
- </ul>
- </li>
- <li>
- <p>
- Set the <var>subjectPublicKey</var> field to the result of
- DER-encoding an <code>RSAPublicKey</code> ASN.1 type, as defined
- in <a href="#RFC3447">RFC 3447</a>, Appendix A.1.1, that
- represents the RSA public key identified by <var>key</var>
- </p>
- </li>
- </ul>
- </li>
- <li>
- <p>
- Let <var>result</var> be a new <code>ArrayBuffer</code> containing
- <var>array</var>.
- </p>
- </li>
- </ol>
- </dd>
- <dt>If <var>format</var> is <code>"pkcs8"</code>:</dt>
- <dd>
- <ol>
- <li>
- <p>
- If the <a href="#dfn-CryptoKey-type">type</a> attribute of
- <var>key</var> is not <code>"private"</code>, then <a href="#concept-return-an-error">return an error</a> named <a href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
- </p>
- </li>
- <li>
- <p>
- Let <var>data</var> be the result of <a href="#dfn-encode-a-privateKeyInfo"> encoding a privateKeyInfo</a>
- with the following properties:
- </p>
- <ul>
- <li>
- <p>
- Set the <var>version</var> field to 0.
- </p>
- </li>
- <li>
- <p>
- Set the <var>privateKeyAlgorithm</var> field to a
- <code>PrivateKeyAlgorithmIdentifier</code> ASN.1 type with the
- following properties:
- </p>
- <ul>
- <li>
- <p>
- Set the <var>algorithm</var> field to the OID
- <code>1.2.840.113549.1.1</code>
- </p>
- </li>
- <li>
- <p>
- Set the <var>params</var> field to the ASN.1 type NULL.
- </p>
- </li>
- </ul>
- </li>
- <li>
- <p>
- Set the <var>privateKey</var> field to the result of
- DER-encoding an <code>RSAPrivateKey</code> ASN.1 type, as defined
- in <a href="#RFC3447">RFC 3447</a>, Appendix A.1.2, that
- represents the RSA private key identified by <var>key</var>
- </p>
- <div class="ednote"><div class="ednoteHeader">Editorial note</div>
- <a href="#RFC5208">RFC 5208</a> specifies that the encoding of
- this field should be <em>BER</em> encoded in Section 5 (as a "for
- example"). However, to avoid requiring WebCrypto implementations
- support BER-encoding and BER-decoding, only <em>DER</em> encodings
- are produced or accepted.
- </div>
- </li>
- </ul>
- </li>
- <li>
- <p>
- Let <var>result</var> be a new <code>ArrayBuffer</code> containing
- <var>data</var>.
- </p>
- </li>
- </ol>
- </dd>
- <dt>If <var>format</var> is <code>"jwk"</code>:</dt>
- <dd>
- <ul>
- <li>
- <p>
- Let <var>jwk</var> be a new <a href="#dfn-JsonWebKey">JsonWebKey</a>
- dictionary.
- </p>
- </li>
- <li>
- <p>Set the <code>kty</code> attribute of <var>jwk</var> to the string
- <code>"RSA"</code>.</p>
- </li>
- <li>
- <p>Set the <code>alg</code> attribute of <var>jwk</var> to the string
- <code>"RSA1_5"</code>.</p>
- </li>
- <li>
- <p>
- Set the attributes <code>n</code> and <code>e</code> of <var>jwk</var>
- according to the corresponding definitions in <a href="#jwa">JSON Web
- Algorithms</a>, Section 6.3.1.
- </p>
- </li>
- <li>
- <dl class="switch">
- <dt>
- If the <a href="#dfn-CryptoKey-type">type</a> attribute of
- <var>key</var> is <code>"private"</code>:
- </dt>
- <dd>
- <ol>
- <li>
- <p>
- Set the attributes named <code>d</code>, <code>p</code>,
- <code>q</code>, <code>dp</code>, <code>dq</code>, and
- <code>qi</code> of <var>jwk</var> according to the
- corresponding definitions in <a href="#jwa">JSON Web
- Algorithms</a>, Section 6.3.2.
- </p>
- </li>
- <li>
- <p>
- If the underlying RSA private key represented by
- <var>key</var> is represented by more than two primes, set the
- attribute named <code>oth</code> of <var>jwk</var> according to
- the corresponding definition in <a href="#jwa">JSON Web
- Algorithms</a>, Section 6.3.2.7
- </p>
- </li>
- </ol>
- </dd>
- </dl>
- </li>
- <li>
- <p>
- Set the <code>key_ops</code> attribute of <var>jwk</var> to the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var>.
- </p>
- </li>
- <li>
- <p>
- Set the <code>ext</code> attribute of <var>jwk</var> to the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
- <var>key</var>.
- </p>
- </li>
- <li>
- <p>
- Let <var>result</var> be the result of converting <var>jwk</var>
- to an ECMAScript Object, as defined by [<a href="#WebIDL">WEBIDL</a>].
- </p>
- </li>
- </ul>
- </dd>
- <dt>Otherwise</dt>
- <dd>
- <p>
- <a href="#concept-return-an-error">Return an error</a> named
- <a href="#dfn-NotSupportedError"><code>NotSupportedError</code></a>.</p>
- </dd>
- </dl>
- </li>
- <li>
- <p>
- Return <var>result</var>.
- </p>
- </li>
- </ol>
- </dd>
- </dl>
- </div>
- </div>
-
- <div id="rsassa-pkcs1" class="section">
- <h3>19.5. RSASSA-PKCS1-v1_5</h3>
- <div id="rsassa-pkcs1-description" class="section">
- <h4>19.5.1. Description</h4>
- <p>
The <code>"RSASSA-PKCS1-v1_5"</code> algorithm identifier is used to perform
signing and verification using the RSASSA-PKCS1-v1_5 algorithm specified in
[<cite><a href="#RFC3447">RFC3447</a></cite>].
</p>
</div>
<div id="rsassa-pkcs1-registration" class="section">
- <h4>19.5.2. Registration</h4>
+ <h4>19.4.2. Registration</h4>
<p>
The <a href="#recognized-algorithm-name">recognized algorithm name</a> for
this algorithm is <code>"RSASSA-PKCS1-v1_5"</code>.
@@ -3944,7 +3125,7 @@
</table>
</div>
<div id="RsaHashedKeyGenParams-dictionary" class="section">
- <h4>19.5.3. RsaHashedKeyGenParams dictionary</h4>
+ <h4>19.4.3. RsaHashedKeyGenParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-RsaHashedKeyGenParams">RsaHashedKeyGenParams</dfn> : <a href="#dfn-RsaKeyGenParams">RsaKeyGenParams</a> {
<span class="comment">// The hash algorithm to use</span>
@@ -3953,7 +3134,7 @@
</code></pre></div></div>
</div>
<div id="RsaHashedKeyAlgorithm-dictionary" class="section">
- <h4>19.5.4. RsaHashedKeyAlgorithm dictionary</h4>
+ <h4>19.4.4. RsaHashedKeyAlgorithm dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-RsaHashedKeyAlgorithm">RsaHashedKeyAlgorithm</dfn> : <a href="#dfn-RsaKeyAlgorithm">RsaKeyAlgorithm</a> {
<span class="comment">// The hash algorithm that is used with this key</span>
@@ -3962,7 +3143,7 @@
</code></pre></div></div>
</div>
<div id="RsaHashedImportParams-dictionary" class="section">
- <h4>19.5.5. RsaHashedImportParams dictionary</h4>
+ <h4>19.4.5. RsaHashedImportParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-RsaHashedImportParams">RsaHashedImportParams</dfn> {
<span class="comment">// The hash algorithm to use</span>
@@ -3977,7 +3158,7 @@
</div>
</div>
<div id="rsassa-pkcs1-operations" class="section">
- <h4>19.5.6. Operations</h4>
+ <h4>19.4.6. Operations</h4>
<dl>
<dt>Sign</dt>
<dd>
@@ -4989,9 +4170,9 @@
</div>
<div id="rsa-pss" class="section">
- <h3>19.6. RSA-PSS</h3>
+ <h3>19.5. RSA-PSS</h3>
<div id="rsa-pss-description" class="section">
- <h4>19.6.1. Description</h4>
+ <h4>19.5.1. Description</h4>
<p>
The <code>"RSA-PSS"</code> algorithm identifier is used to perform signing
and verification using the RSASSA-PSS algorithm specified in
@@ -5000,7 +4181,7 @@
</p>
</div>
<div id="rsa-pss-registration" class="section">
- <h4>19.6.2. Registration</h4>
+ <h4>19.5.2. Registration</h4>
<p>
The <a href="#recognized-algorithm-name">recognized algorithm name</a> for
this algorithm is <code>"RSA-PSS"</code>.
@@ -5043,7 +4224,7 @@
</table>
</div>
<div id="RsaPssParams-dictionary" class="section">
- <h4>19.6.3. RsaPssParams dictionary</h4>
+ <h4>19.5.3. RsaPssParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-RsaPssParams">RsaPssParams</dfn> : <a href="#dfn-Algorithm">Algorithm</a> {
<span class="comment">// The desired length of the random salt</span>
@@ -5052,7 +4233,7 @@
</code></pre></div></div>
</div>
<div id="rsa-pss-operations" class="section">
- <h4>19.6.4. Operations</h4>
+ <h4>19.5.4. Operations</h4>
<dl>
<dt>Sign</dt>
<dd>
@@ -6394,9 +5575,9 @@
</div>
<div id="rsa-oaep" class="section">
- <h3>19.7. RSA-OAEP</h3>
+ <h3>19.6. RSA-OAEP</h3>
<div id="rsa-oaep-description" class="section">
- <h4>19.7.1. Description</h4>
+ <h4>19.6.1. Description</h4>
<p>
The <code>"RSA-OAEP"</code> algorithm identifier is used to perform encryption
and decryption ordering to the RSAES-OAEP algorithm specified in
@@ -6405,7 +5586,7 @@
</p>
</div>
<div id="rsa-oaep-registration" class="section">
- <h4>19.7.2. Registration</h4>
+ <h4>19.6.2. Registration</h4>
<p>
The <a href="#recognized-algorithm-name">recognized algorithm name</a> for
this algorithm is <code>"RSA-OAEP"</code>.
@@ -6449,7 +5630,7 @@
</div>
<div id="rsa-oaep-params" class="section">
- <h4>19.7.3. RsaOaepParams dictionary</h4>
+ <h4>19.6.3. RsaOaepParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-RsaOaepParams">RsaOaepParams</dfn> : <a href="#dfn-Algorithm">Algorithm</a> {
<span class="comment">// The optional label/application data to associate with the message</span>
@@ -6458,7 +5639,7 @@
</code></pre></div></div>
</div>
<div id="rsa-oaep-operations" class="section">
- <h4>19.7.4. Operations</h4>
+ <h4>19.6.4. Operations</h4>
<dl>
<dt>Encrypt</dt>
<dd>
@@ -7773,9 +6954,9 @@
</div>
<div id="ecdsa" class="section">
- <h3>19.8. ECDSA</h3>
+ <h3>19.7. ECDSA</h3>
<div id="ecdsa-description" class="section">
- <h4>19.8.1. Description</h4>
+ <h4>19.7.1. Description</h4>
<p>
The <code>"ECDSA"</code> algorithm identifier is used to perform signing
and verification using the ECDSA algorithm specified in
@@ -7783,7 +6964,7 @@
</p>
</div>
<div id="ecdsa-registration" class="section">
- <h4>19.8.2. Registration</h4>
+ <h4>19.7.2. Registration</h4>
<p>
The <a href="#recognized-algorithm-name">recognized algorithm name</a> for
this algorithm is <code>"ECDSA"</code>.
@@ -7827,7 +7008,7 @@
</table>
</div>
<div id="EcdsaParams-dictionary" class="section">
- <h4>19.8.3. EcdsaParams dictionary</h4>
+ <h4>19.7.3. EcdsaParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-EcdsaParams">EcdsaParams</dfn> : <a href="#dfn-Algorithm">Algorithm</a> {
<span class="comment">// The hash algorithm to use</span>
@@ -7836,7 +7017,7 @@
</code></pre></div></div>
</div>
<div id="EcKeyGenParams-dictionary" class="section">
- <h4>19.8.4. EcKeyGenParams dictionary</h4>
+ <h4>19.7.4. EcKeyGenParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
typedef DOMString <a href="#dfn-NamedCurve">NamedCurve</a>;
@@ -7860,7 +7041,7 @@
</dl>
</div>
<div id="EcKeyAlgorithm-dictionary" class="section">
- <h4>19.8.5. EcKeyAlgorithm dictionary</h4>
+ <h4>19.7.5. EcKeyAlgorithm dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-EcKeyAlgorithm">EcKeyAlgorithm</dfn> : <a href="#dfn-KeyAlgorithm">KeyAlgorithm</a> {
<span class="comment">// The named curve that the key uses</span>
@@ -7869,7 +7050,7 @@
</code></pre></div></div>
</div>
<div id="EcKeyImportParams-dictionary" class="section">
- <h4>19.8.6. EcKeyImportParams dictionary</h4>
+ <h4>19.7.6. EcKeyImportParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-EcKeyImportParams">EcKeyImportParams</dfn> : <a href="#dfn-Algorithm">Algorithm</a> {
<span class="comment">// A named curve</span>
@@ -7879,7 +7060,7 @@
</div>
<div id="ecdsa-operations" class="section">
- <h4>19.8.7. Operations</h4>
+ <h4>19.7.7. Operations</h4>
<dl>
<dt>Sign</dt>
<dd>
@@ -9055,16 +8236,16 @@
</div>
<div id="ecdh" class="section">
- <h3>19.9. ECDH</h3>
+ <h3>19.8. ECDH</h3>
<div id="ecdh-description" class="section">
- <h4>19.9.1. Description</h4>
+ <h4>19.8.1. Description</h4>
<p>
This describes using Elliptic Curve Diffie-Hellman (ECDH) for key generation and key
agreement, as specified by <a href="#X9.63">X9.63</a>.
</p>
</div>
<div id="ecdh-registration" class="section">
- <h4>19.9.2. Registration</h4>
+ <h4>19.8.2. Registration</h4>
<p>
The <a href="#recognized-algorithm-name">recognized algorithm name</a> for
this algorithm is <code>"ECDH"</code>.
@@ -9102,7 +8283,7 @@
</table>
</div>
<div id="dh-EcdhKeyDeriveParams" class="section">
- <h4>19.9.3. EcdhKeyDeriveParams dictionary</h4>
+ <h4>19.8.3. EcdhKeyDeriveParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
typedef Uint8Array <dfn id="dfn-ECPoint">ECPoint</dfn>;
@@ -9113,7 +8294,7 @@
</code></pre></div></div>
</div>
<div id="ecdh-operations" class="section">
- <h4>19.9.4. Operations</h4>
+ <h4>19.8.4. Operations</h4>
<dl>
<dt>Generate Key</dt>
<dd>
@@ -10280,9 +9461,9 @@
</div>
<div id="aes-ctr" class="section">
- <h3>19.10. AES-CTR</h3>
+ <h3>19.9. AES-CTR</h3>
<div id="aes-ctr-description" class="section">
- <h4>19.10.1. Description</h4>
+ <h4>19.9.1. Description</h4>
<p class="norm">This section is non-normative.</p>
<p>
The <code>"AES-CTR"</code> algorithm identifier is used to perform
@@ -10291,7 +9472,7 @@
</p>
</div>
<div id="aes-ctr-registration" class="section">
- <h4>19.10.2. Registration</h4>
+ <h4>19.9.2. Registration</h4>
<p>
The <a href="#recognized-algorithm-name">recognized algorithm name</a> for
this algorithm is <code>"AES-CTR"</code>.
@@ -10340,7 +9521,7 @@
</div>
<div id="aes-ctr-params" class="section">
- <h4>19.10.3. AesCtrParams dictionary</h4>
+ <h4>19.9.3. AesCtrParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-AesCtrParams">AesCtrParams</dfn> : <a href="#dfn-Algorithm">Algorithm</a> {
<span class="comment">// The initial value of the counter block. counter <span class="RFC2119">MUST</span> be 16 bytes
@@ -10366,7 +9547,7 @@
</code></pre></div></div>
</div>
<div id="aes-keygen-params" class="section">
- <h4>19.10.5. AesKeyGenParams dictionary</h4>
+ <h4>19.9.5. AesKeyGenParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-AesKeyGenParams">AesKeyGenParams</dfn> : <a href="#dfn-Algorithm">Algorithm</a> {
<span class="comment">// The length, in bits, of the key.</span>
@@ -10375,7 +9556,7 @@
</code></pre></div></div>
</div>
<div id="aes-derivedkey-params" class="section">
- <h4>19.10.6. AesDerivedKeyParams dictionary</h4>
+ <h4>19.9.6. AesDerivedKeyParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-AesDerivedKeyParams">AesDerivedKeyParams</dfn> : <a href="#dfn-Algorithm">Algorithm</a> {
<span class="comment">// The length, in bits, of the key.</span>
@@ -10385,7 +9566,7 @@
</div>
<div id="aes-ctr-operations" class="section">
- <h4>19.10.7. Operations</h4>
+ <h4>19.9.7. Operations</h4>
<dl>
<dt>Encrypt</dt>
<dd>
@@ -10900,9 +10081,9 @@
</div>
<div id="aes-cbc" class="section">
- <h3>19.11. AES-CBC</h3>
+ <h3>19.10. AES-CBC</h3>
<div id="aes-cbc-description" class="section">
- <h4>19.11.1. Description</h4>
+ <h4>19.10.1. Description</h4>
<p class="norm">This section is non-normative.</p>
<p>
The <code>"AES-CBC"</code> algorithm identifier is used to perform
@@ -10918,7 +10099,7 @@
</p>
</div>
<div id="aes-cbc-registration" class="section">
- <h4>19.11.2. Registration</h4>
+ <h4>19.10.2. Registration</h4>
<p>
The <a href="#recognized-algorithm-name">recognized algorithm name</a> for
this algorithm is <code>"AES-CBC"</code>.
@@ -10966,7 +10147,7 @@
</table>
</div>
<div id="aes-cbc-params" class="section">
- <h4>19.11.3. AesCbcParams dictionary</h4>
+ <h4>19.10.3. AesCbcParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-AesCbcParams">AesCbcParams</dfn> : <a href="#dfn-Algorithm">Algorithm</a> {
<span class="comment">// The initialization vector. <span class="RFC2119">MUST</span> be 16 bytes.</span>
@@ -10975,7 +10156,7 @@
</code></pre></div></div>
</div>
<div id="aes-cbc-operations" class="section">
- <h4>19.11.4. Operations</h4>
+ <h4>19.10.4. Operations</h4>
<dl>
<dt>Encrypt</dt>
<dd>
@@ -11492,9 +10673,9 @@
</div>
<div id="aes-cmac" class="section">
- <h3>19.12. AES-CMAC</h3>
+ <h3>19.11. AES-CMAC</h3>
<div id="aes-cmac-description" class="section">
- <h4>19.12.1. Description</h4>
+ <h4>19.11.1. Description</h4>
<p class="norm">This section is non-normative.</p>
<p>
The <code>"AES-CMAC"</code> algorithm identifier is used to perform
@@ -11503,7 +10684,7 @@
</p>
</div>
<div id="aes-cmac-registration" class="section">
- <h4>19.12.2. Registration</h4>
+ <h4>19.11.2. Registration</h4>
<p>
The <a href="#recognized-algorithm-name">recognized algorithm name</a> for
this algorithm is <code>"AES-CMAC"</code>.
@@ -11551,7 +10732,7 @@
</table>
</div>
<div id="aes-cmac-params" class="section">
- <h4>19.12.3. AesCmacParams dictionary</h4>
+ <h4>19.11.3. AesCmacParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-AesCmacParams">AesCmacParams</dfn> : <a href="#dfn-Algorithm">Algorithm</a> {
<span class="comment">// The length, in bits, of the MAC.</span>
@@ -11560,7 +10741,7 @@
</code></pre></div></div>
</div>
<div id="aes-cmac-operations" class="section">
- <h4>19.12.4. Operations</h4>
+ <h4>19.11.4. Operations</h4>
<dl>
<dt>Sign</dt>
<dd>
@@ -12035,9 +11216,9 @@
</div>
</div>
<div id="aes-gcm" class="section">
- <h3>19.13. AES-GCM</h3>
+ <h3>19.12. AES-GCM</h3>
<div id="aes-gcm-description" class="section">
- <h4>19.13.1. Description</h4>
+ <h4>19.12.1. Description</h4>
<p class="norm">This section is non-normative.</p>
<p>
The <code>"AES-GCM"</code> algorithm identifier is used to perform
@@ -12046,7 +11227,7 @@
</p>
</div>
<div id="aes-gcm-registration" class="section">
- <h4>19.13.2. Registration</h4>
+ <h4>19.12.2. Registration</h4>
<p>
The <a href="#recognized-algorithm-name">recognized algorithm name</a> for
this algorithm is <code>"AES-GCM"</code>.
@@ -12094,7 +11275,7 @@
</table>
</div>
<div id="aes-gcm-params" class="section">
- <h4>19.13.3. AesGcmParams dictionary</h4>
+ <h4>19.12.3. AesGcmParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-AesGcmParams">AesGcmParams</dfn> : <a href="#dfn-Algorithm">Algorithm</a> {
<span class="comment">// The initialization vector to use. May be up to 2^64-1 bytes long.</span>
@@ -12107,7 +11288,7 @@
</code></pre></div></div>
</div>
<div id="aes-gcm-operations" class="section">
- <h4>19.13.4. Operations</h4>
+ <h4>19.12.4. Operations</h4>
<dl>
<dt>Encrypt</dt>
<dd>
@@ -12717,9 +11898,9 @@
</div>
<div id="aes-cfb" class="section">
- <h3>19.14. AES-CFB</h3>
+ <h3>19.13. AES-CFB</h3>
<div id="aes-cfb-description" class="section">
- <h4>19.14.1. Description</h4>
+ <h4>19.13.1. Description</h4>
<p class="norm">This section is non-normative.</p>
<p>
The <code>"AES-CFB-8"</code> algorithm identifier is used to perform
@@ -12729,7 +11910,7 @@
</p>
</div>
<div id="aes-cfb-registration" class="section">
- <h4>19.14.2. Registration</h4>
+ <h4>19.13.2. Registration</h4>
<p>
The <a href="#recognized-algorithm-name">recognized algorithm name</a> for
this algorithm is <code>"AES-CFB-8"</code>.
@@ -12777,7 +11958,7 @@
</table>
</div>
<div id="aes-cfb-params" class="section">
- <h4>19.14.3. AesCfbParams dictionary</h4>
+ <h4>19.13.3. AesCfbParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-AesCfbParams">AesCfbParams</dfn> : <a href="#dfn-Algorithm">Algorithm</a> {
<span class="comment">// The initialization vector. <span class="RFC2119">MUST</span> be 16 bytes.</span>
@@ -12786,7 +11967,7 @@
</code></pre></div></div>
</div>
<div id="aes-cfb-operations" class="section">
- <h4>19.14.4. Operations</h4>
+ <h4>19.13.4. Operations</h4>
<dl>
<dt>Encrypt</dt>
<dd>
@@ -13278,9 +12459,9 @@
</div>
<div id="aes-kw" class="section">
- <h3>19.15. AES-KW</h3>
+ <h3>19.14. AES-KW</h3>
<div id="aes-kw-description" class="section">
- <h4>19.15.1. Description</h4>
+ <h4>19.14.1. Description</h4>
<p class="norm">This section is non-normative.</p>
<p>
The <code>"AES-KW"</code> algorithm identifier is used to perform
@@ -13289,7 +12470,7 @@
</p>
</div>
<div id="aes-kw-registration" class="section">
- <h4>19.15.2. Registration</h4>
+ <h4>19.14.2. Registration</h4>
<p>
The <a href="#recognized-algorithm-name">recognized algorithm name</a> for
this algorithm is <code>"AES-KW"</code>.
@@ -13337,7 +12518,7 @@
</table>
</div>
<div id="aes-kw-operations" class="section">
- <h4>19.15.3. Operations</h4>
+ <h4>19.14.3. Operations</h4>
<dl>
<dt>Wrap Key</dt>
<dd>
@@ -13785,9 +12966,9 @@
</div>
<div id="hmac" class="section">
- <h3>19.16. HMAC</h3>
+ <h3>19.15. HMAC</h3>
<div id="hmac-description" class="section">
- <h4>19.16.1. Description</h4>
+ <h4>19.15.1. Description</h4>
<p class="norm">This section is non-normative.</p>
<p>
The <code>HMAC</code> algorithm calculates and verifies hash-based message
@@ -13795,7 +12976,7 @@
</p>
</div>
<div id="hmac-registration" class="section">
- <h4>19.16.2. Registration</h4>
+ <h4>19.15.2. Registration</h4>
<p>
The <a href="#recognized-algorithm-name">recognized algorithm name</a> for
this algorithm is <code>"HMAC"</code>.
@@ -13843,7 +13024,7 @@
</table>
</div>
<div id="hmac-importparams" class="section">
- <h4>19.16.3. HmacImportParams dictionary</h4>
+ <h4>19.15.3. HmacImportParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-HmacImportParams">HmacImportParams</dfn> : <a href="#dfn-Algorithm">Algorithm</a> {
<span class="comment">// The inner hash function to use.</span>
@@ -13854,7 +13035,7 @@
</code></pre></div></div>
</div>
<div id="HmacKeyAlgorithm-dictionary" class="section">
- <h4>19.16.4. HmacKeyAlgorithm dictionary</h4>
+ <h4>19.15.4. HmacKeyAlgorithm dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-HmacKeyAlgorithm">HmacKeyAlgorithm</dfn> : <a href="#dfn-KeyAlgorithm">KeyAlgorithm</a> {
<span class="comment">// The inner hash function to use.</span>
@@ -13865,7 +13046,7 @@
</code></pre></div></div>
</div>
<div id="hmac-keygen-params" class="section">
- <h4>19.16.5. HmacKeyGenParams dictionary</h4>
+ <h4>19.15.5. HmacKeyGenParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-HmacKeyGenParams">HmacKeyGenParams</dfn> : <a href="#dfn-Algorithm">Algorithm</a> {
<span class="comment">// The inner hash function to use.</span>
@@ -13878,7 +13059,7 @@
</code></pre></div></div>
</div>
<div id="hmac-derivedkey-params" class="section">
- <h4>19.16.6. HmacDerivedKeyParams dictionary</h4>
+ <h4>19.15.6. HmacDerivedKeyParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-HmacDerivedKeyParams">HmacDerivedKeyParams</dfn> : <a href="#dfn-HmacImportParams">HmacImportParams</a> {
<span class="comment">// The length (in bits) of the key to generate. If unspecified, the
@@ -13889,7 +13070,7 @@
</code></pre></div></div>
</div>
<div id="hmac-operations" class="section">
- <h4>19.16.7. Operations</h4>
+ <h4>19.15.7. Operations</h4>
<dl>
<dt>Sign</dt>
<dd>
@@ -14567,9 +13748,9 @@
</div>
</div>
<div id="dh" class="section">
- <h3>19.17. Diffie-Hellman</h3>
+ <h3>19.16. Diffie-Hellman</h3>
<div id="dh-description" class="section">
- <h4>19.17.1. Description</h4>
+ <h4>19.16.1. Description</h4>
<p class="norm">This section is non-normative.</p>
<p>
This describes using Diffie-Hellman for key generation and key agreement, as specified
@@ -14577,7 +13758,7 @@
</p>
</div>
<div id="dh-registration" class="section">
- <h4>19.17.2. Registration</h4>
+ <h4>19.16.2. Registration</h4>
<p>
The <a href="#recognized-algorithm-name">recognized algorithm name</a> for
this algorithm is <code>"DH"</code>.
@@ -14615,7 +13796,7 @@
</table>
</div>
<div id="dh-DhKeyGenParams" class="section">
- <h4>19.17.3. DhKeyGenParams dictionary</h4>
+ <h4>19.16.3. DhKeyGenParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-DhKeyGenParams">DhKeyGenParams</dfn> : <a href="#dfn-Algorithm">Algorithm</a> {
<span class="comment">// The prime p.</span>
@@ -14626,7 +13807,7 @@
</code></pre></div></div>
</div>
<div id="dh-DhKeyAlgorithm" class="section">
- <h4>19.17.4. DhKeyAlgorithm dictionary</h4>
+ <h4>19.16.4. DhKeyAlgorithm dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-DhKeyAlgorithm">DhKeyAlgorithm</dfn> : <a href="#dfn-KeyAlgorithm">KeyAlgorithm</a> {
<span class="comment">// The prime p.</span>
@@ -14637,7 +13818,7 @@
</code></pre></div></div>
</div>
<div id="dh-DhKeyDeriveParams" class="section">
- <h4>19.17.5. DhKeyDeriveParams dictionary</h4>
+ <h4>19.16.5. DhKeyDeriveParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-DhKeyDeriveParams">DhKeyDeriveParams</dfn> : <a href="#dfn-Algorithm">Algorithm</a> {
<span class="comment">// The peer's public value.</span>
@@ -14646,7 +13827,7 @@
</code></pre></div></div>
</div>
<div id="dh-DhImportKeyParams" class="section">
- <h4>19.17.6. DhImportKeyParams dictionary</h4>
+ <h4>19.16.6. DhImportKeyParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-DhImportKeyParams">DhImportKeyParams</dfn> : <a href="#dfn-Algorithm">Algorithm</a> {
<span class="comment">// The prime p.</span>
@@ -14657,7 +13838,7 @@
</code></pre></div></div>
</div>
<div id="dh-operations" class="section">
- <h4>19.17.7. Operations</h4>
+ <h4>19.16.7. Operations</h4>
<dl>
<dt>Generate Key</dt>
<dd>
@@ -15463,16 +14644,16 @@
</div>
</div>
<div id="sha" class="section">
- <h3>19.18. SHA</h3>
+ <h3>19.17. SHA</h3>
<div id="sha-description" class="section">
- <h4>19.18.1. Description</h4>
+ <h4>19.17.1. Description</h4>
<p>
This describes the SHA-1 and SHA-2 families, as specified by
[<a href="#FIPS180-4">FIPS PUB 180-4</a>].
</p>
</div>
<div id="sha-registration" class="section">
- <h4>19.18.2. Registration</h4>
+ <h4>19.17.2. Registration</h4>
<p>
The following algorithms are added as <a href="#recognized-algorithm-name">
recognized algorithm names</a>:
@@ -15505,7 +14686,7 @@
</table>
</div>
<div id="sha-operations" class="section">
- <h4>19.18.3. Operations</h4>
+ <h4>19.17.3. Operations</h4>
<dl>
<dt>Digest</dt>
<dd>
@@ -15572,9 +14753,9 @@
</div>
</div>
<div id="concatkdf" class="section">
- <h3>19.19. Concat KDF</h3>
+ <h3>19.18. Concat KDF</h3>
<div id="concatkdf-description" class="section">
- <h4>19.19.1. Description</h4>
+ <h4>19.18.1. Description</h4>
<p>
The <code>"CONCAT"</code> algorithm identifier is used to perform key derivation
using the key derivation algorithm defined in Section 5.8.1 of NIST SP 800-56A
@@ -15582,7 +14763,7 @@
</p>
</div>
<div id="concatkdf-registration" class="section">
- <h4>19.19.2. Registration</h4>
+ <h4>19.18.2. Registration</h4>
<p>
The <a href="#recognized-algorithm-name">recognized algorithm name</a> for
this algorithm is <code>"CONCAT"</code>.
@@ -15615,7 +14796,7 @@
</table>
</div>
<div id="concat-params" class="section">
- <h4>19.19.3. ConcatParams dictionary</h4>
+ <h4>19.18.3. ConcatParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-ConcatParams">ConcatParams</dfn> : <a href="#dfn-Algorithm">Algorithm</a> {
<span class="comment">// The digest method to use to derive the keying material.</span>
@@ -15637,7 +14818,7 @@
</code></pre></div></div>
</div>
<div id="concat-operations" class="section">
- <h4>19.19.4. Operations</h4>
+ <h4>19.18.4. Operations</h4>
<dl>
<dt>Derive Bits</dt>
<dd>
@@ -15786,9 +14967,9 @@
</div>
</div>
<div id="hkdf-ctr" class="section">
- <h3>19.20. HKDF-CTR</h3>
+ <h3>19.19. HKDF-CTR</h3>
<div id="hkdf-ctr-description" class="section">
- <h4>19.20.1. Description</h4>
+ <h4>19.19.1. Description</h4>
<p class="norm">This section is non-normative.</p>
<p>
The <code>"HKDF-CTR"</code> algorithm identifier is used to
@@ -15799,7 +14980,7 @@
</p>
</div>
<div id="hkdf-ctr-registration" class="section">
- <h4>19.20.2. Registration</h4>
+ <h4>19.19.2. Registration</h4>
<p>
The <a href="#recognized-algorithm-name">recognized algorithm name</a>
for this algorithm is <code>"HKDF-CTR"</code>.
@@ -15832,7 +15013,7 @@
</table>
</div>
<div id="hkdf-ctr-params" class="section">
- <h4>19.20.3. HkdfCtrParams dictionary</h4>
+ <h4>19.19.3. HkdfCtrParams dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-HkdfCtrParams">HkdfCtrParams</dfn> : <a href="#dfn-Algorithm">Algorithm</a> {
<span class="comment">// The algorithm to use with HMAC (e.g.: <a href="#sha-256">SHA-256</a>)</span>
@@ -15856,7 +15037,7 @@
</div>
</div>
<div id="hkdf2-ctr-operations" class="section">
- <h4>19.20.4. Operations</h4>
+ <h4>19.19.4. Operations</h4>
<dl>
<dt>Derive Bits</dt>
<dd>
@@ -16067,9 +15248,9 @@
</div>
<div id="pbkdf2" class="section">
- <h3>19.21. PBKDF2</h3>
+ <h3>19.20. PBKDF2</h3>
<div id="pbkdf2-description" class="section">
- <h4>19.21.1. Description</h4>
+ <h4>19.20.1. Description</h4>
<p class="norm">This section is non-normative.</p>
<p>
The <code>"PBKDF2"</code> algorithm identifier is used to
@@ -16079,7 +15260,7 @@
</p>
</div>
<div id="pbkdf2-registration" class="section">
- <h4>19.21.2. Registration</h4>
+ <h4>19.20.2. Registration</h4>
<p>
The <a href="#recognized-algorithm-name">recognized algorithm name</a> for
this algorithm is <code>"PBKDF2"</code>.
@@ -16117,7 +15298,7 @@
</table>
</div>
<div id="pbkdf2-params" class="section">
- <h4>19.21.3. Pbkdf2Params dictionary</h4>
+ <h4>19.20.3. Pbkdf2Params dictionary</h4>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">IDL</span></div><div class="blockContent"><pre class="code"><code class="idl-code">
dictionary <dfn id="dfn-Pbkdf2Params">Pbkdf2Params</dfn> : <a href="#dfn-Algorithm">Algorithm</a> {
CryptoOperationData <dfn id="dfn-Pbkdf2Params-salt">salt</dfn>;
@@ -16127,7 +15308,7 @@
</code></pre></div></div>
</div>
<div id="pbkdf2-operations" class="section">
- <h4>19.21.4. Operations</h4>
+ <h4>19.20.4. Operations</h4>
<dl>
<dt>Derive bits</dt>
<dd>
@@ -16891,19 +16072,6 @@
<td>
<div class="block"><div class="blockTitleDiv"><span class="blockTitle">ECMAScript</span></div><div class="blockContent"><pre class="code"><code class="es-code">
{ kty: "RSA",
- alg: "RSA1_5" }
-</code></pre></div></div>
- </td>
- <td>
-<div class="block"><div class="blockTitleDiv"><span class="blockTitle">ECMAScript</span></div><div class="blockContent"><pre class="code"><code class="es-code">
-{ name: "RSAES-PKCS1-V1_5" }
-</code></pre></div></div>
- </td>
- </tr>
- <tr>
- <td>
-<div class="block"><div class="blockTitleDiv"><span class="blockTitle">ECMAScript</span></div><div class="blockContent"><pre class="code"><code class="es-code">
-{ kty: "RSA",
alg: "RS1" }
</code></pre></div></div>
</td>
@@ -17528,7 +16696,6 @@
<td>rsaEncryption (1.2.840.113549.1.1.1)</td>
<td>RSAPublicKey</td>
<td>
- <code>"RSAES-PKCS1-v1_5"</code>,
<code>"RSASSA-PKCS1-v1_5"</code>,
<code>"RSA-PSS"</code>, or
<code>"RSA-OAEP"</code>
@@ -17618,7 +16785,6 @@
<td>rsaEncryption (1.2.840.113549.1.1.1)</td>
<td>RSAPrivateKey</td>
<td>
- <code>"RSAES-PKCS1-v1_5"</code>,
<code>"RSASSA-PKCS1-v1_5"</code>,
<code>"RSA-PSS"</code>, or
<code>"RSA-OAEP"</code>