Bug 25618: Revised namedCurve extensibility for ECDSA
authorMark Watson <watsonm@netflix.com>
Wed, 15 Oct 2014 15:53:42 -0700
changeset 250 160514715d11
parent 249 d9b3d6f2d930
child 251 1499886c4da3
Bug 25618: Revised namedCurve extensibility for ECDSA
spec/Overview-WebCryptoAPI.xml
spec/Overview.html
--- a/spec/Overview-WebCryptoAPI.xml	Wed Oct 15 14:27:35 2014 -0700
+++ b/spec/Overview-WebCryptoAPI.xml	Wed Oct 15 15:53:42 2014 -0700
@@ -8857,34 +8857,6 @@
                   <p>Let <var>keyData</var> be the key data to be imported.</p>
                 </li>
                 <li>
-                  <p>
-                    Perform any <a href="#dfn-ecdsa-extended-import-steps">key import steps</a>
-                    defined by <a href="#dfn-applicable-specifications">other applicable
-                    specifications</a>, passing <var>keyData</var> and obtaining <var>result</var>.
-                    <dl class="switch">
-                      <dt>
-                        If <var>result</var> is a <a href="#dfn-CryptoKey">CryptoKey</a>
-                        object
-                      </dt>
-                      <dd>
-                        <p>
-                          Return <var>result</var>.
-                        </p>
-                      </dd>
-                      <dt>
-                        If <var>result</var> is an error with a name that is not
-                        <a href="#dfn-NotSupportedError"><code>NotSupportedError</code></a>
-                      </dt>
-                      <dd>
-                        <p>
-                          <a href="#concept-return-an-error">Return an error</a> with the same name
-                          as <var>result</var>.
-                        </p>
-                      </dd>
-                    </dl>
-                  </p>
-                </li>
-                <li>
                   <dl class="switch">
                     <dt>If <var>format</var> is <code>"spki"</code>:</dt>
                     <dd>
@@ -8982,10 +8954,26 @@
                             </dd>
                             <dt>Otherwise:</dt>
                             <dd>
-                              <p>
-                                <a href="#concept-return-an-error">Return an error</a> named
-                                <a href="#dfn-DataError"><code>DataError</code></a>.
-                              </p>
+                              <ol>
+                                <li>
+                                  <p>
+                                    Perform any <a href="#dfn-ecdsa-extended-import-steps">key
+                                    import steps</a> defined by
+                                    <a href="#dfn-applicable-specifications">other applicable
+                                    specifications</a>, passing <var>format</var>, <var>spki</var>
+                                    and obtaining <var>namedCurve</var>.
+                                  </p>
+                                </li>
+                                <li>
+                                  <p>
+                                    If an error occured or there are no
+                                    <a href="#dfn-applicable-specifications">applicable
+                                    specifications</a>,
+                                    <a href="#concept-return-an-error">return an error</a> named
+                                    <a href="#dfn-DataError"><code>DataError</code></a>.
+                                  </p>
+                                </li>
+                              </ol>
                             </dd>
                           </dl>
                         </li>
@@ -9166,10 +9154,26 @@
                             </dd>
                             <dt>Otherwise:</dt>
                             <dd>
-                              <p>
-                                <a href="#concept-return-an-error">Return an error</a> named
-                                <a href="#dfn-DataError"><code>DataError</code></a>.
-                              </p>
+                              <ol>
+                                <li>
+                                  <p>
+                                    Perform any <a href="#dfn-ecdsa-extended-import-steps">key
+                                    import steps</a> defined by
+                                    <a href="#dfn-applicable-specifications">other applicable
+                                    specifications</a>, passing <var>format</var>, <var>privateKeyInfo</var>
+                                    and obtaining <var>namedCurve</var>.
+                                  </p>
+                                </li>
+                                <li>
+                                  <p>
+                                    If an error occured or there are no
+                                    <a href="#dfn-applicable-specifications">applicable
+                                    specifications</a>,
+                                    <a href="#concept-return-an-error">return an error</a> named
+                                    <a href="#dfn-DataError"><code>DataError</code></a>.
+                                  </p>
+                                </li>
+                              </ol>
                             </dd>
                           </dl>
                         </li>
@@ -9307,7 +9311,7 @@
                         </li>
                         <li>
                           <dl class="switch">
-                            <dt>If the <code>"alg"</code> field is present:</dt>
+                            <dt>If the <code>"alg"</code> field is not present:</dt>
                             <dd>
                               Let <var>algNamedCurve</var> be undefined.
                             </dd>
@@ -9329,6 +9333,31 @@
                             <dd>
                               Let <var>algNamedCurve</var> be the string <code>"P-521"</code>.
                             </dd>
+                            <dt>
+                              Otherwise:
+                            </dt>
+                            <dd>
+                              <ol>
+                                <li>
+                                  <p>
+                                    Perform any <a href="#dfn-ecdsa-extended-import-steps">key
+                                    import steps</a> defined by
+                                    <a href="#dfn-applicable-specifications">other applicable
+                                    specifications</a>, passing <var>format</var>, <var>jwk</var>
+                                    and obtaining <var>algNamedCurve</var>.
+                                  </p>
+                                </li>
+                                <li>
+                                  <p>
+                                    If an error occured or there are no
+                                    <a href="#dfn-applicable-specifications">applicable
+                                    specifications</a>,
+                                    <a href="#concept-return-an-error">return an error</a> named
+                                    <a href="#dfn-DataError"><code>DataError</code></a>.
+                                  </p>
+                                </li>
+                              </ol>
+                            </dd>
                           </dl>
                         </li>
                         <li>
@@ -9459,44 +9488,6 @@
                   </p>
                 </li>
                 <li>
-                  <p>
-                    Perform any <a href="#dfn-ecdsa-extended-export-steps">key export steps</a>
-                    defined by <a href="#dfn-applicable-specifications">other applicable
-                    specifications</a>, passing <var>key</var> and obtaining <var>result</var>.
-                    <dl class="switch">
-                      <dt>
-                        If <var>format</var> is <code>"spki"</code> or <code>"pkcs8"</code> and
-                        <var>result</var> is an <a href="#dfn-ArrayBuffer">ArrayBuffer</a>
-                        object
-                      </dt>
-                      <dd>
-                        <p>
-                          Return <var>result</var>.
-                        </p>
-                      </dd>
-                      <dt>
-                        If <var>format</var> is <code>"jwk"</code> and
-                        <var>result</var> is not an error
-                      </dt>
-                      <dd>
-                        <p>
-                          Return <var>result</var>.
-                        </p>
-                      </dd>
-                      <dt>
-                        If <var>result</var> is an error with a name that is not
-                        <a href="#dfn-NotSupportedError"><code>NotSupportedError</code></a>
-                      </dt>
-                      <dd>
-                        <p>
-                          <a href="#concept-return-an-error">Return an error</a> with the same name
-                          as <var>result</var>.
-                        </p>
-                      </dd>
-                    </dl>
-                  </p>
-                </li>
-                <li>
                   <dl class="switch">
                     <dt>If <var>format</var> is <code>"spki"</code>:</dt>
                     <dd>
@@ -9532,7 +9523,8 @@
                                 <li>
                                   <p>
                                     Set the <var>parameters</var> field to an instance of the
-                                    <code>namedCurve</code> ASN.1 type as follows:
+                                    <code>ECParameters</code> ASN.1 type defined in
+                                    <a href="#RFC5480">RFC 5480</a> as follows:
                                   </p>
                                   <dl class="switch">
                                     <dt>
@@ -9544,7 +9536,8 @@
                                     </dt>
                                     <dd>
                                       <p>
-                                        Let the <var>namedCurve</var> be the object identifier
+                                        Set <var>parameters</var> to the <code>namedCurve</code> choice
+                                        with value equal to the object identifier
                                         <code>secp256r1</code> defined in <a href="#RFC5480">RFC
                                         5480</a>
                                       </p>
@@ -9558,7 +9551,8 @@
                                     </dt>
                                     <dd>
                                       <p>
-                                        Let the <var>namedCurve</var> be the object identifier
+                                        Set <var>parameters</var> to the <code>namedCurve</code> choice
+                                        with value equal to the object identifier
                                         <code>secp384r1</code> defined in <a href="#RFC5480">RFC
                                         5480</a>
                                       </p>
@@ -9572,11 +9566,36 @@
                                     </dt>
                                     <dd>
                                       <p>
-                                        Let the <var>namedCurve</var> be the object identifier
+                                        Set <var>parameters</var> to the <code>namedCurve</code> choice
+                                        with value equal to the object identifier
                                         <code>secp521r1</code> defined in <a href="#RFC5480">RFC
                                         5480</a>
                                       </p>
                                     </dd>
+                                    <dt>
+                                      Otherwise:
+                                    </dt>
+                                    <dd>
+                                      <ol>
+                                        <li>
+                                          <p>
+                                            Perform any <a href="#dfn-ecdsa-extended-export-steps">key export steps</a>
+                                            defined by <a href="#dfn-applicable-specifications">other applicable
+                                            specifications</a>, passing <var>format</var> and the
+                                            <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a> attribute of
+                                            the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var>
+                                            and obtaining <var>namedCurveOid</var>.
+                                          </p>
+                                        </li>
+                                        <li>
+                                          <p>
+                                            Set <var>parameters</var> to the <code>namedCurve</code> choice
+                                            with value equal to the object identifier <var>namedCurveOid</var>.
+                                          </p>
+                                        </li>
+                                      </ol>
+                                    </dd>
                                   </dl>
                                 </li>
                               </ul>
@@ -9641,7 +9660,8 @@
                                 <li>
                                   <p>
                                     Set the <var>parameters</var> field to an instance of the
-                                    <code>namedCurve</code> ASN.1 type as follows:
+                                    <code>ECParameters</code> ASN.1 type defined in
+                                    <a href="#RFC5480">RFC 5480</a> as follows:
                                   </p>
                                   <dl class="switch">
                                     <dt>
@@ -9653,7 +9673,8 @@
                                     </dt>
                                     <dd>
                                       <p>
-                                        Let the <var>namedCurve</var> be the object identifier
+                                        Set <var>parameters</var> to the <code>namedCurve</code> choice
+                                        with value equal to the object identifier 
                                         <code>secp256r1</code> defined in <a href="#RFC5480">RFC
                                         5480</a>
                                       </p>
@@ -9667,7 +9688,8 @@
                                     </dt>
                                     <dd>
                                       <p>
-                                        Let the <var>namedCurve</var> be the object identifier
+                                        Set <var>parameters</var> to the <code>namedCurve</code> choice
+                                        with value equal to the object identifier
                                         <code>secp384r1</code> defined in <a href="#RFC5480">RFC
                                         5480</a>
                                       </p>
@@ -9681,11 +9703,36 @@
                                     </dt>
                                     <dd>
                                       <p>
-                                        Let the <var>namedCurve</var> be the object identifier
+                                        Set <var>parameters</var> to the <code>namedCurve</code> choice
+                                        with value equal to the object identifier
                                         <code>secp521r1</code> defined in <a href="#RFC5480">RFC
                                         5480</a>
                                       </p>
                                     </dd>
+                                    <dt>
+                                      Otherwise:
+                                    </dt>
+                                    <dd>
+                                      <ol>
+                                        <li>
+                                          <p>
+                                            Perform any <a href="#dfn-ecdsa-extended-export-steps">key export steps</a>
+                                            defined by <a href="#dfn-applicable-specifications">other applicable
+                                            specifications</a>, passing <var>format</var> and the
+                                            <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a> attribute of
+                                            the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var>
+                                            and obtaining <var>namedCurveOid</var>.
+                                          </p>
+                                        </li>
+                                        <li>
+                                          <p>
+                                            Set <var>parameters</var> to the <code>namedCurve</code> choice
+                                            with value equal to the object identifier <var>namedCurveOid</var>.
+                                          </p>
+                                        </li>
+                                      </ol>
+                                    </dd>
                                   </dl>
                                 </li>
                               </ul>
@@ -9776,6 +9823,30 @@
                               Set the <code>crv</code> attribute of <var>jwk</var> to
                               <code>"P-521"</code>
                             </dd>
+                            <dt>
+                              Otherwise:
+                            </dt>
+                            <dd>
+                              <ol>
+                                <li>
+                                  <p>
+                                    Perform any <a href="#dfn-ecdsa-extended-export-steps">key export steps</a>
+                                    defined by <a href="#dfn-applicable-specifications">other applicable
+                                    specifications</a>, passing <var>format</var> and the
+                                    <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a> attribute of
+                                    the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                    internal slot of <var>key</var>
+                                    and obtaining <var>namedCurve</var>.
+                                  </p>
+                                </li>
+                                <li>
+                                  <p>
+                                    Set the <code>crv</code> attribute of <var>jwk</var> to
+                                    <var>namedCurve</var>.
+                                  </p>
+                                </li>
+                              </ol>
+                            </dd>
                           </dl>
                         </li>
                         <li>
--- a/spec/Overview.html	Wed Oct 15 14:27:35 2014 -0700
+++ b/spec/Overview.html	Wed Oct 15 15:53:42 2014 -0700
@@ -8025,7 +8025,6 @@
                                 </li>
                               </ol>
                             </dd>
-
                           </dl>
                         </li>
                         <li>
@@ -8593,34 +8592,6 @@
                   <p>Let <var>keyData</var> be the key data to be imported.</p>
                 </li>
                 <li>
-                  <p>
-                    Perform any <a href="#dfn-ecdsa-extended-import-steps">key import steps</a>
-                    defined by <a href="#dfn-applicable-specifications">other applicable
-                    specifications</a>, passing <var>keyData</var> and obtaining <var>result</var>.
-                    <dl class="switch">
-                      <dt>
-                        If <var>result</var> is a <a href="#dfn-CryptoKey">CryptoKey</a>
-                        object
-                      </dt>
-                      <dd>
-                        <p>
-                          Return <var>result</var>.
-                        </p>
-                      </dd>
-                      <dt>
-                        If <var>result</var> is an error with a name that is not
-                        <a href="#dfn-NotSupportedError"><code>NotSupportedError</code></a>
-                      </dt>
-                      <dd>
-                        <p>
-                          <a href="#concept-return-an-error">Return an error</a> with the same name
-                          as <var>result</var>.
-                        </p>
-                      </dd>
-                    </dl>
-                  </p>
-                </li>
-                <li>
                   <dl class="switch">
                     <dt>If <var>format</var> is <code>"spki"</code>:</dt>
                     <dd>
@@ -8716,10 +8687,26 @@
                             </dd>
                             <dt>Otherwise:</dt>
                             <dd>
-                              <p>
-                                <a href="#concept-return-an-error">Return an error</a> named
-                                <a href="#dfn-DataError"><code>DataError</code></a>.
-                              </p>
+                              <ol>
+                                <li>
+                                  <p>
+                                    Perform any <a href="#dfn-ecdsa-extended-import-steps">key
+                                    import steps</a> defined by
+                                    <a href="#dfn-applicable-specifications">other applicable
+                                    specifications</a>, passing <var>format</var>, <var>spki</var>
+                                    and obtaining <var>namedCurve</var>.
+                                  </p>
+                                </li>
+                                <li>
+                                  <p>
+                                    If an error occured or there are no
+                                    <a href="#dfn-applicable-specifications">applicable
+                                    specifications</a>,
+                                    <a href="#concept-return-an-error">return an error</a> named
+                                    <a href="#dfn-DataError"><code>DataError</code></a>.
+                                  </p>
+                                </li>
+                              </ol>
                             </dd>
                           </dl>
                         </li>
@@ -8890,10 +8877,26 @@
                             </dd>
                             <dt>Otherwise:</dt>
                             <dd>
-                              <p>
-                                <a href="#concept-return-an-error">Return an error</a> named
-                                <a href="#dfn-DataError"><code>DataError</code></a>.
-                              </p>
+                              <ol>
+                                <li>
+                                  <p>
+                                    Perform any <a href="#dfn-ecdsa-extended-import-steps">key
+                                    import steps</a> defined by
+                                    <a href="#dfn-applicable-specifications">other applicable
+                                    specifications</a>, passing <var>format</var>, <var>privateKeyInfo</var>
+                                    and obtaining <var>namedCurve</var>.
+                                  </p>
+                                </li>
+                                <li>
+                                  <p>
+                                    If an error occured or there are no
+                                    <a href="#dfn-applicable-specifications">applicable
+                                    specifications</a>,
+                                    <a href="#concept-return-an-error">return an error</a> named
+                                    <a href="#dfn-DataError"><code>DataError</code></a>.
+                                  </p>
+                                </li>
+                              </ol>
                             </dd>
                           </dl>
                         </li>
@@ -9023,7 +9026,7 @@
                         </li>
                         <li>
                           <dl class="switch">
-                            <dt>If the <code>"alg"</code> field is present:</dt>
+                            <dt>If the <code>"alg"</code> field is not present:</dt>
                             <dd>
                               Let <var>algNamedCurve</var> be undefined.
                             </dd>
@@ -9045,6 +9048,31 @@
                             <dd>
                               Let <var>algNamedCurve</var> be the string <code>"P-521"</code>.
                             </dd>
+                            <dt>
+                              Otherwise:
+                            </dt>
+                            <dd>
+                              <ol>
+                                <li>
+                                  <p>
+                                    Perform any <a href="#dfn-ecdsa-extended-import-steps">key
+                                    import steps</a> defined by
+                                    <a href="#dfn-applicable-specifications">other applicable
+                                    specifications</a>, passing <var>format</var>, <var>jwk</var>
+                                    and obtaining <var>algNamedCurve</var>.
+                                  </p>
+                                </li>
+                                <li>
+                                  <p>
+                                    If an error occured or there are no
+                                    <a href="#dfn-applicable-specifications">applicable
+                                    specifications</a>,
+                                    <a href="#concept-return-an-error">return an error</a> named
+                                    <a href="#dfn-DataError"><code>DataError</code></a>.
+                                  </p>
+                                </li>
+                              </ol>
+                            </dd>
                           </dl>
                         </li>
                         <li>
@@ -9165,44 +9193,6 @@
                   </p>
                 </li>
                 <li>
-                  <p>
-                    Perform any <a href="#dfn-ecdsa-extended-export-steps">key export steps</a>
-                    defined by <a href="#dfn-applicable-specifications">other applicable
-                    specifications</a>, passing <var>key</var> and obtaining <var>result</var>.
-                    <dl class="switch">
-                      <dt>
-                        If <var>format</var> is <code>"spki"</code> or <code>"pkcs8"</code> and
-                        <var>result</var> is an <a href="#dfn-ArrayBuffer">ArrayBuffer</a>
-                        object
-                      </dt>
-                      <dd>
-                        <p>
-                          Return <var>result</var>.
-                        </p>
-                      </dd>
-                      <dt>
-                        If <var>format</var> is <code>"jwk"</code> and
-                        <var>result</var> is not an error
-                      </dt>
-                      <dd>
-                        <p>
-                          Return <var>result</var>.
-                        </p>
-                      </dd>
-                      <dt>
-                        If <var>result</var> is an error with a name that is not
-                        <a href="#dfn-NotSupportedError"><code>NotSupportedError</code></a>
-                      </dt>
-                      <dd>
-                        <p>
-                          <a href="#concept-return-an-error">Return an error</a> with the same name
-                          as <var>result</var>.
-                        </p>
-                      </dd>
-                    </dl>
-                  </p>
-                </li>
-                <li>
                   <dl class="switch">
                     <dt>If <var>format</var> is <code>"spki"</code>:</dt>
                     <dd>
@@ -9236,7 +9226,8 @@
                                 <li>
                                   <p>
                                     Set the <var>parameters</var> field to an instance of the
-                                    <code>namedCurve</code> ASN.1 type as follows:
+                                    <code>ECParameters</code> ASN.1 type defined in
+                                    <a href="#RFC5480">RFC 5480</a> as follows:
                                   </p>
                                   <dl class="switch">
                                     <dt>
@@ -9246,7 +9237,8 @@
                                     </dt>
                                     <dd>
                                       <p>
-                                        Let the <var>namedCurve</var> be the object identifier
+                                        Set <var>parameters</var> to the <code>namedCurve</code> choice
+                                        with value equal to the object identifier
                                         <code>secp256r1</code> defined in <a href="#RFC5480">RFC
                                         5480</a>
                                       </p>
@@ -9258,7 +9250,8 @@
                                     </dt>
                                     <dd>
                                       <p>
-                                        Let the <var>namedCurve</var> be the object identifier
+                                        Set <var>parameters</var> to the <code>namedCurve</code> choice
+                                        with value equal to the object identifier
                                         <code>secp384r1</code> defined in <a href="#RFC5480">RFC
                                         5480</a>
                                       </p>
@@ -9270,11 +9263,36 @@
                                     </dt>
                                     <dd>
                                       <p>
-                                        Let the <var>namedCurve</var> be the object identifier
+                                        Set <var>parameters</var> to the <code>namedCurve</code> choice
+                                        with value equal to the object identifier
                                         <code>secp521r1</code> defined in <a href="#RFC5480">RFC
                                         5480</a>
                                       </p>
                                     </dd>
+                                    <dt>
+                                      Otherwise:
+                                    </dt>
+                                    <dd>
+                                      <ol>
+                                        <li>
+                                          <p>
+                                            Perform any <a href="#dfn-ecdsa-extended-export-steps">key export steps</a>
+                                            defined by <a href="#dfn-applicable-specifications">other applicable
+                                            specifications</a>, passing <var>format</var> and the
+                                            <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a> attribute of
+                                            the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var>
+                                            and obtaining <var>namedCurveOid</var>.
+                                          </p>
+                                        </li>
+                                        <li>
+                                          <p>
+                                            Set <var>parameters</var> to the <code>namedCurve</code> choice
+                                            with value equal to the object identifier <var>namedCurveOid</var>.
+                                          </p>
+                                        </li>
+                                      </ol>
+                                    </dd>
                                   </dl>
                                 </li>
                               </ul>
@@ -9336,7 +9354,8 @@
                                 <li>
                                   <p>
                                     Set the <var>parameters</var> field to an instance of the
-                                    <code>namedCurve</code> ASN.1 type as follows:
+                                    <code>ECParameters</code> ASN.1 type defined in
+                                    <a href="#RFC5480">RFC 5480</a> as follows:
                                   </p>
                                   <dl class="switch">
                                     <dt>
@@ -9346,7 +9365,8 @@
                                     </dt>
                                     <dd>
                                       <p>
-                                        Let the <var>namedCurve</var> be the object identifier
+                                        Set <var>parameters</var> to the <code>namedCurve</code> choice
+                                        with value equal to the object identifier 
                                         <code>secp256r1</code> defined in <a href="#RFC5480">RFC
                                         5480</a>
                                       </p>
@@ -9358,7 +9378,8 @@
                                     </dt>
                                     <dd>
                                       <p>
-                                        Let the <var>namedCurve</var> be the object identifier
+                                        Set <var>parameters</var> to the <code>namedCurve</code> choice
+                                        with value equal to the object identifier
                                         <code>secp384r1</code> defined in <a href="#RFC5480">RFC
                                         5480</a>
                                       </p>
@@ -9370,11 +9391,36 @@
                                     </dt>
                                     <dd>
                                       <p>
-                                        Let the <var>namedCurve</var> be the object identifier
+                                        Set <var>parameters</var> to the <code>namedCurve</code> choice
+                                        with value equal to the object identifier
                                         <code>secp521r1</code> defined in <a href="#RFC5480">RFC
                                         5480</a>
                                       </p>
                                     </dd>
+                                    <dt>
+                                      Otherwise:
+                                    </dt>
+                                    <dd>
+                                      <ol>
+                                        <li>
+                                          <p>
+                                            Perform any <a href="#dfn-ecdsa-extended-export-steps">key export steps</a>
+                                            defined by <a href="#dfn-applicable-specifications">other applicable
+                                            specifications</a>, passing <var>format</var> and the
+                                            <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a> attribute of
+                                            the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var>
+                                            and obtaining <var>namedCurveOid</var>.
+                                          </p>
+                                        </li>
+                                        <li>
+                                          <p>
+                                            Set <var>parameters</var> to the <code>namedCurve</code> choice
+                                            with value equal to the object identifier <var>namedCurveOid</var>.
+                                          </p>
+                                        </li>
+                                      </ol>
+                                    </dd>
                                   </dl>
                                 </li>
                               </ul>
@@ -9460,6 +9506,30 @@
                               Set the <code>crv</code> attribute of <var>jwk</var> to
                               <code>"P-521"</code>
                             </dd>
+                            <dt>
+                              Otherwise:
+                            </dt>
+                            <dd>
+                              <ol>
+                                <li>
+                                  <p>
+                                    Perform any <a href="#dfn-ecdsa-extended-export-steps">key export steps</a>
+                                    defined by <a href="#dfn-applicable-specifications">other applicable
+                                    specifications</a>, passing <var>format</var> and the
+                                    <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a> attribute of
+                                    the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                    internal slot of <var>key</var>
+                                    and obtaining <var>namedCurve</var>.
+                                  </p>
+                                </li>
+                                <li>
+                                  <p>
+                                    Set the <code>crv</code> attribute of <var>jwk</var> to
+                                    <var>namedCurve</var>.
+                                  </p>
+                                </li>
+                              </ol>
+                            </dd>
                           </dl>
                         </li>
                         <li>