Bug 25627 - Indicate that CryptoKeys are read-only and have internal data slots that contain the underlying values.
authorRyan Sleevi <sleevi@google.com>
Mon, 16 Jun 2014 00:00:00 -0700
changeset 199 2010be10bb87
parent 198 e78209123956
child 200 419a907e9199
Bug 25627 - Indicate that CryptoKeys are read-only and have internal data slots that contain the underlying values.

In addition to the four slots that are exposed as read-only attributes, a fifth slot,
[[handle]], is used to hold an opaque handle to the underlying crypto system. This
is an attempt to make it clear to readers why an object like CryptoKey is not
something that can simply be constructed using a constructor.
spec/Overview-WebCryptoAPI.xml
spec/Overview.html
--- 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
@@ -955,29 +955,60 @@
             </dd>
           </dl>
         </div>
+        
+        <div id="cryptokey-interface-internal-slots" class="section">
+          <h3>CryptoKey internal slots</h3>
+          <p>
+            Every <code>CryptoKey</code> object has a set of internal slots that store information
+            about the key. These slots are not exposed as part of this specification; they
+            represent internal state that an implementation uses to implement this specification.
+            The notational convention used in [<a href="#ES262">ES262</a>] is re-used here; internal
+            slots are identified by names enclosed in double square brackets [[ ]].
+          </p>
+          <p>
+            All <code>CryptoKey</code> objects have internal slots named [[<dfn
+            id="dfn-CryptoKey-slot-type">type</dfn>]], [[<dfn
+            id="dfn-CryptoKey-slot-extractable">extractable</dfn>]], [[<dfn
+            id="dfn-CryptoKey-slot-algorithm">algorithm</dfn>]], [[<dfn
+            id="dfn-CryptoKey-slot-usages">usages</dfn>]], and [[<dfn
+            id="dfn-CryptoKey-slot-handle">handle</dfn>]].
+          </p>
+          <p class="note">
+            The [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] slot is an opaque type that
+            contains whatever data the underlying cryptographic implementation uses to represent a
+            logical key. Different cryptographic implementations may use different types, ranging
+            from opaque identifiers represented as integers, pointer types, or structures that
+            provide identifying information. These handles are never exposed to applications.
+          </p>
+        </div>
 
         <div id="cryptokey-interface-members" class="section">
           <h3>CryptoKey interface members</h3>
           <dl>
             <dt id="dfn-CryptoKey-type"><code>type</code></dt>
             <dd>
-              The type of the underlying key.
+              Reflects the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot, which
+              contains the type of the underlying key.
             </dd>
             <dt id="dfn-CryptoKey-extractable"><code>extractable</code></dt>
             <dd>
-              Whether or not the raw keying material may be exported by the application.
+              Reflects the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+              slot, which indicates whether or not the raw keying material may be exported by the
+              application.
             </dd>
             <dt id="dfn-CryptoKey-algorithm"><code>algorithm</code></dt>
             <dd>
-              A JavaScript Object that contains information about the algorithm used to generate
-              the key. The Object will contain properties defined within the various
-              <a href="#dfn-KeyAlgorithm"><code>KeyAlgorithm</code></a> dictionary and derived
-              dictionaries.
+              Reflects the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot,
+              converting the interface contained within [[<a
+              href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] to an ECMAScript object, as
+              defined by [<a href="#WebIDL">WEBIDL</a>].
             </dd>
             <dt id="dfn-CryptoKey-usages"><code>usages</code></dt>
             <dd>
-              An <code>Array</code> of <a href="#dfn-KeyUsage"><code>KeyUsages</code></a> that
-              indicate what cryptographic operations may be used with this key.
+              Reflects the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot,
+              converting the list of <a href="#dfn-KeyUsages"><code>KeyUsages</code></a> to an
+              ECMAScript <code>Array</code> object, which indicates which cryptographic operations
+              are permissible to be used with this key.
             </dd>
           </dl>
         </div>
@@ -997,32 +1028,33 @@
             </li>
             <li>
               Let <var>output</var> be a newly constructed <a href="#dfn-CryptoKey">CryptoKey</a>
-              object.</li>
-            <li>
-              Let the following attributes of <var>output</var> be equal to the value obtained by
-              invoking the internal structured clone algorithm recursively, using the corresponding
-              attribute on <var>input</var> as the new "<var>input</var>" argument and
-              <var>memory</var> as the new "<var>memory</var>" argument:
-              <ul>
-                <li><a href="#dfn-CryptoKey-type">type</a></li>
-                <li><a href="#dfn-CryptoKey-extractable">extractable</a></li>
-                <li><a href="#dfn-CryptoKey-algorithm">KeyAlgorithm</a></li>
-                <li><a href="#dfn-CryptoKey-usages">KeyUsage</a></li>
-              </ul>
+              object.
             </li>
             <li>
-              Let <var>output</var> refer to the same underlying cryptographic material and
-              cryptographic material key storage of <var>input</var>.
+              Let the [[<a href="#dfn-CryptoKey-slot-type">type</a>]], <a
+              href="#dfn-CryptoKey-slot-extractable">[[extractable]]</a>, <a
+              href="#dfn-CryptoKey-slot-algorithm">[[algorithm]]</a>, and <a
+              href="#dfn-CryptoKey-slot-usages">[[usages]]</a> internal slots of <var>output</var>
+              be set to the result of invoking the internal structured clone algorithm recursively
+              on the corresponding internal slots of <var>input</var>, with the slot contents as the
+              new "<var>input</var>" argument and <var>memory</var> as the new "<var>memory</var>"
+              argument.
+            </li>
+            <li>
+              Let the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+              <var>output</var> refer to the same cryptographic key data represented by the
+              [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of <var>input</var>.
             </li>
           </ol>
           <div class="note">
-            <strong>Implementation Note:</strong> When performing the structured clone algorithm for
-            a <code>CryptoKey</code> object, it is important that the underlying cryptographic key
-            material not be exposed to a JavaScript implementation. Such a situation may arise if an
-            implementation fails to implement the structured clone algorithm correctly, such as by
-            allowing a <code>CryptoKey</code> object to be serialized as part of a structured clone
-            implementation, but then deserializing it as a <code>DOMString</code>, rather than as a
-            <code>CryptoKey</code> object.
+            <strong>Implementation Note:</strong> When performing the structured clone algorithm in
+            order to serialize a <code>CryptoKey</code> object, implementations must not allow the
+            object to be deserialized as a different type. This is normatively required by the
+            definition of structured clone, but it merits specific attention, as such
+            deserialization may expose the contents of the [[<a
+            href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot, which in some
+            implementations may contain cryptographic key data that should not be exposed to
+            applications.
           </div>
         </div>
       </div>
@@ -1240,8 +1272,8 @@
               </li>
               <li>
                 <p>
-                  If the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var> does
-                  not contain an entry that is <code>"encrypt"</code>, then <a
+                  If the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                  <var>key</var> does not contain an entry that is <code>"encrypt"</code>, then <a
                   href="#concept-return-an-error">return an error</a> named <a
                   href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
                 </p>
@@ -1331,8 +1363,8 @@
               </li>
               <li>
                 <p>
-                  If the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var> does
-                  not contain an entry that is <code>"decrypt"</code>, then <a
+                  If the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                  <var>key</var> does not contain an entry that is <code>"decrypt"</code>, then <a
                   href="#concept-return-an-error">return an error</a> named <a
                   href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
                 </p>
@@ -1422,8 +1454,8 @@
               </li>
               <li>
                 <p>
-                  If the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var> does
-                  not contain an entry that is <code>"sign"</code>, then <a
+                  If the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                  <var>key</var> does not contain an entry that is <code>"sign"</code>, then <a
                   href="#concept-return-an-error">return an error</a> named <a
                   href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
                 </p>
@@ -1518,8 +1550,8 @@
               </li>
               <li>
                 <p>
-                  If the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var> does
-                  not contain an entry that is <code>"verify"</code>, then <a
+                  If the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                  <var>key</var> does not contain an entry that is <code>"verify"</code>, then <a
                   href="#concept-return-an-error">return an error</a> named <a
                   href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
                 </p>
@@ -1783,9 +1815,9 @@
               </li>
               <li>
                 <p>
-                  If the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>baseKey</var>
-                  does not contain an entry that is <code>"deriveKey"</code>, then <a
-                  href="#concept-return-an-error">return an error</a> named <a
+                  If the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                  <var>baseKey</var> does not contain an entry that is <code>"deriveKey"</code>,
+                  then <a href="#concept-return-an-error">return an error</a> named <a
                   href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
                 </p>
               </li>
@@ -1890,9 +1922,9 @@
               </li>
               <li>
                 <p>
-                  If the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>baseKey</var>
-                  does not contain an entry that is <code>"deriveBits"</code>, then <a
-                  href="#concept-return-an-error">return an error</a> named <a
+                  If the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                  <var>baseKey</var> does not contain an entry that is <code>"deriveBits"</code>,
+                  then <a href="#concept-return-an-error">return an error</a> named <a
                   href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
                 </p>
               </li>
@@ -2099,8 +2131,8 @@
               </li>
               <li>
                 <p>
-                  If the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                  <var>key</var> is false, then <a href="#concept-return-an-error">return an
+                  If the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                  of <var>key</var> is false, then <a href="#concept-return-an-error">return an
                   error</a> named <a
                   href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
                 </p>         
@@ -2108,8 +2140,8 @@
               <li>
                 <p>
                   Let <var>result</var> be the result of performing the export key operation
-                  specified by the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                  attribute of <var>key</var> using <var>key</var> and <var>format</var>.
+                  specified by the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                  internal slot of <var>key</var> using <var>key</var> and <var>format</var>.
                 </p>
               </li>
               <li>
@@ -2188,7 +2220,7 @@
               </li>
               <li>
                 <p>
-                  If the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
+                  If the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                   <var>wrappingKey</var> does not contain an entry that is <code>"wrapKey"</code>,
                   then <a href="#concept-return-an-error">return an error</a> named <a
                   href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
@@ -2196,33 +2228,33 @@
               </li>
               <li>
                 <p>
-                  If the algorithm identified by the <a
-                  href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>key</var> does not
-                  support the export key operation, then <a href="#concept-return-an-error">return
-                  an error</a> named <a
+                  If the algorithm identified by the [[<a
+                  href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                  <var>key</var> does not support the export key operation, then <a
+                  href="#concept-return-an-error">return an error</a> named <a
                   href="#dfn-NotSupportedError"><code>NotSupportedError</code></a>.
                 </p>
               </li>
               <li>
                 <p>
-                  If the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                  <var>key</var> is false, then <a href="#concept-return-an-error">return an
+                  If the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                  of <var>key</var> is false, 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>key</var> be the result of performing the export key operation
-                  specified the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
+                  Let <var>key</var> be the result of performing the export key operation specified
+                  the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
                   <var>key</var> using <var>key</var> and <var>format</var>.
                 </p>
               </li>
               <li>
                 <dl class="switch">
                   <dt>
-                    If <var>format</var> is equal to the strings <code>raw</code>, <code>pkcs8</code>,
-                    or <code>spki</code>:
+                    If <var>format</var> is equal to the strings <code>raw</code>,
+                    <code>pkcs8</code>, or <code>spki</code>:
                   </dt>
                   <dd>
                     Set <var>bytes</var> be set to <var>key</var>.
@@ -2398,7 +2430,7 @@
               </li>
               <li>
                 <p>
-                  If the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
+                  If the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                   <var>unwrappingKey</var> does not contain an entry that is
                   <code>"unwrapKey"</code>, then <a href="#concept-return-an-error">return an
                   error</a> named <a
@@ -2407,10 +2439,9 @@
               </li>
               <li>
                 <p>
-                  If <var>format</var> is not a
-                  <a href="#dfn-RecognizedKeyFormats">recognized key
-                  format value</a>, then <a href="#concept-return-an-error">return an error</a> named
-                  <a href="#dfn-SyntaxError"><code>SyntaxError</code></a>.
+                  If <var>format</var> is not a <a href="#dfn-RecognizedKeyFormats">recognized key
+                  format value</a>, then <a href="#concept-return-an-error">return an error</a>
+                  named <a href="#dfn-SyntaxError"><code>SyntaxError</code></a>.
                 </p>
               </li>
               <li>
@@ -3188,22 +3219,23 @@
                 <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
+                      If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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 signature generation operation defined in Section 8.2 of [<cite><a
-                      href="#RFC3447">RFC3447</a></cite>] with the key represented by <var>key</var>
+                      href="#RFC3447">RFC3447</a></cite>] with the key represented by the [[<a
+                      href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of <var>key</var>
                       as the signer's private key and the <a
                       href="#concept-contents-of-arraybuffer">contents of <var>message</var></a> as
                       <var>M</var> and using the hash function specified in the <a
-                      href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a> attribute of the <a
-                      href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>key</var> as
-                      the Hash option for the EMSA-PKCS1-v1_5 encoding method.
+                      href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a> attribute of the [[<a
+                      href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>key</var> as the Hash option for the EMSA-PKCS1-v1_5 encoding method.
                     </p>
                   </li>
                   <li>
@@ -3227,23 +3259,24 @@
                 <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
+                      If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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 signature verification operation defined in Section 8.2 of
-                      [<cite><a href="#RFC3447">RFC3447</a></cite>] with the key represented by
+                      [<cite><a href="#RFC3447">RFC3447</a></cite>] with the key represented by the
+                      [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                       <var>key</var> as the signer's RSA public key and the <a
                       href="#concept-contents-of-arraybuffer">contents of <var>message</var></a> as
                       <var>M</var> and the <a href="#concept-contents-of-arraybuffer">contents of
                       <var>signature</var></a> as <var>S</var> and using the hash function specified
-                      in the <a href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a> attribute of the <a
-                      href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>key</var> as
-                      the Hash option for the EMSA-PKCS1-v1_5 encoding method.
+                      in the <a href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a> attribute of the
+                      [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>key</var> as the Hash option for the EMSA-PKCS1-v1_5 encoding method.
                     </p>
                   </li>
                   <li>
@@ -3353,28 +3386,27 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>[ "verify" ]</code>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>publicKey</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>publicKey</var> to true.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>publicKey</var> to be the <a href="#concept-usage-intersection">usage
+                      intersection</a> of <var>usages</var> and <code>[ "verify" ]</code>.
                     </p>
                   </li>
                   <li>
@@ -3385,25 +3417,25 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>privateKey</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>privateKey</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>privateKey</var> to be the <a href="#concept-usage-intersection">usage
                       intersection</a> of <var>usages</var> and <code>[ "sign" ]</code>.
                     </p>
@@ -3598,8 +3630,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> to <code>"public"</code>
+                              Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              of <var>key</var> to <code>"public"</code>
                             </p>
                           </li>
                         </ol>
@@ -3738,8 +3770,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> to <code>"private"</code>
+                              Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              of <var>key</var> to <code>"private"</code>
                             </p>
                           </li>
                         </ol>
@@ -3866,8 +3898,8 @@
                                   </li>
                                   <li>
                                     <p>
-                                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                      <var>key</var> to <code>"private"</code>
+                                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]]
+                                      internal slot of <var>key</var> to <code>"private"</code>
                                     </p>
                                   </li>
                                 </ol>
@@ -3894,8 +3926,8 @@
                                   </li>
                                   <li>
                                     <p>
-                                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                      <var>key</var> to <code>"public"</code>
+                                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]]
+                                      internal slot of <var>key</var> to <code>"public"</code>
                                     </p>
                                   </li>
                                 </ol>
@@ -3946,8 +3978,8 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                      <var>key</var> to <var>algorithm</var>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
                     </p>
                   </li>
                   <li>
@@ -3971,8 +4003,8 @@
                         <ol>
                           <li>
                             <p>
-                              If the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> is not <code>"public"</code>, then <a
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              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>
@@ -4009,7 +4041,9 @@
                                   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>
+                                  represents the RSA public key represented by the [[<a
+                                  href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                                  <var>key</var>
                                 </p>
                               </li>
                             </ul>
@@ -4027,8 +4061,8 @@
                         <ol>
                           <li>
                             <p>
-                              If the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> is not <code>"private"</code>, then <a
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              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>
@@ -4067,10 +4101,12 @@
                               </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>
+                                  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 represented by the [[<a
+                                  href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                                  <var>key</var>
                                 </p>
                                 <div class="ednote">
                                   <a href="#RFC5208">RFC 5208</a> specifies that the encoding of
@@ -4160,8 +4196,8 @@
                           <li>
                             <dl class="switch">
                               <dt>
-                                If the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                <var>key</var> is <code>"private"</code>:
+                                If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                                of <var>key</var> is <code>"private"</code>:
                               </dt>
                               <dd>
                                 <ol>
@@ -4176,11 +4212,12 @@
                                   </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
+                                      If the underlying RSA private key represented by the [[<a
+                                      href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot
+                                      of <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>
@@ -4195,9 +4232,9 @@
                           </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>.
+                              Set the <code>ext</code> attribute of <var>jwk</var> to the [[<a
+                              href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                              of <var>key</var>.
                             </p>
                           </li>
                           <li>
@@ -4299,10 +4336,10 @@
                 <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>.
+                      If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>
@@ -4323,13 +4360,14 @@
                   <li>
                     <p>
                       Perform the signature generation operation defined in Section 8.1 of [<cite><a
-                      href="#RFC3447">RFC3447</a></cite>] with the key represented by <var>key</var>
+                      href="#RFC3447">RFC3447</a></cite>] with the key represented by the [[<a
+                      href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of <var>key</var>
                       as the signer's private key, <var>K</var>, and the <a
                       href="#concept-contents-of-arraybuffer">contents of <var>message</var></a> as
                       the message to be signed, <var>M</var>, and using the hash function specified
-                      by the <a href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a> attribute of the <a
-                      href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>key</var> as
-                      the Hash option, MGF1 (defined in Section B.2.1 of [<cite><a
+                      by the <a href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a> attribute of the
+                      [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>key</var> as the Hash option, MGF1 (defined in Section B.2.1 of [<cite><a
                       href="#RFC3447">RFC3447</a></cite>]) as the MGF option and the <a
                       href="#dfn-RsaPssParams-saltLength">saltLength</a> member of
                       <var>normalizedAlgorithm</var> as the salt length option for the
@@ -4357,9 +4395,9 @@
                 <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
+                      If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>
@@ -4381,14 +4419,15 @@
                   <li>
                     <p>
                       Perform the signature verification operation defined in Section 8.1 of
-                      [<cite><a href="#RFC3447">RFC3447</a></cite>] with the key represented by
+                      [<cite><a href="#RFC3447">RFC3447</a></cite>] with the key represented by the
+                      [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                       <var>key</var> as the signer's RSA public key and the <a
                       href="#concept-contents-of-arraybuffer">contents of <var>message</var></a> as
                       <var>M</var> and <a href="#concept-contents-of-arraybuffer">the contents of
                       <var>signature</var></a> as <var>S</var> and using the hash function specified
-                      by the <a href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a> attribute of the <a
-                      href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>key</var> as
-                      the Hash option, MGF1 (defined in Section B.2.1 of [<cite><a
+                      by the <a href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a> attribute of the
+                      [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>key</var> as the Hash option, MGF1 (defined in Section B.2.1 of [<cite><a
                       href="#RFC3447">RFC3447</a></cite>]) as the MGF option and the <a
                       href="#dfn-RsaPssParams-saltLength">saltLength</a> member of
                       <var>normalizedAlgorithm</var> as the salt length option for the
@@ -4503,25 +4542,25 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>publicKey</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>publicKey</var> to true.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>publicKey</var> to be the <a href="#concept-usage-intersection">usage
                       intersection</a> of <var>usages</var> and <code>[ "verify" ]</code>.
                     </p>
@@ -4534,28 +4573,27 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>[ "sign" ]</code>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>privateKey</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>privateKey</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>privateKey</var> to be the <a href="#concept-usage-intersection">usage
+                      intersection</a> of <var>usages</var> and <code>[ "sign" ]</code>.
                     </p>
                   </li>
                   <li>
@@ -4805,8 +4843,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> to <code>"public"</code>
+                              Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              of <var>key</var> to <code>"public"</code>
                             </p>
                           </li>
                         </ol>
@@ -5008,8 +5046,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> to <code>"private"</code>
+                              Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              of <var>key</var> to <code>"private"</code>
                             </p>
                           </li>
                         </ol>
@@ -5136,8 +5174,8 @@
                                   </li>
                                   <li>
                                     <p>
-                                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                      <var>key</var> to <code>"private"</code>
+                                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]]
+                                      internal slot of <var>key</var> to <code>"private"</code>
                                     </p>
                                   </li>
                                 </ol>
@@ -5164,8 +5202,8 @@
                                   </li>
                                   <li>
                                     <p>
-                                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                      <var>key</var> to <code>"public"</code>
+                                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]]
+                                      internal slot of <var>key</var> to <code>"public"</code>
                                     </p>
                                   </li>
                                 </ol>
@@ -5216,8 +5254,8 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                      <var>key</var> to <var>algorithm</var>
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>
                     </p>
                   </li>
                   <li>
@@ -5241,8 +5279,8 @@
                         <ol>
                           <li>
                             <p>
-                              If the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> is not <code>"public"</code>, then <a
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              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>
@@ -5286,8 +5324,9 @@
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a
                                             href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-1</code>:
+                                            the [[<a
+                                            href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-1</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -5300,8 +5339,9 @@
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a
                                             href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-256</code>:
+                                            the [[<a
+                                            href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-256</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -5314,8 +5354,9 @@
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a
                                             href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-384</code>:
+                                            the [[<a
+                                            href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-384</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -5328,8 +5369,9 @@
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a
                                             href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-512</code>:
+                                            the [[<a
+                                            href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-512</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -5369,8 +5411,9 @@
                                           octets of the digest algorithm identified by the <a
                                           href="#dfn-KeyAlgorithm-name">name</a> attribute of the <a
                                           href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a> attribute
-                                          of the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                          attribute of <var>key</var>.
+                                          of the [[<a
+                                          href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                          internal slot of <var>key</var>.
                                         </p>
                                       </li>
                                     </ul>
@@ -5382,7 +5425,9 @@
                                   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>
+                                  represents the RSA public key represented by the [[<a
+                                  href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                                  <var>key</var>
                                 </p>
                               </li>
                             </ul>
@@ -5400,8 +5445,8 @@
                         <ol>
                           <li>
                             <p>
-                              If the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> is not <code>"private"</code>, then <a
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              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>
@@ -5450,8 +5495,9 @@
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a
                                             href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-1</code>:
+                                            the [[<a
+                                            href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-1</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -5464,8 +5510,9 @@
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a
                                             href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-256</code>:
+                                            the [[<a
+                                            href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-256</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -5478,8 +5525,9 @@
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a
                                             href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-384</code>:
+                                            the [[<a
+                                            href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-384</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -5492,8 +5540,9 @@
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a
                                             href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-512</code>:
+                                            the [[<a
+                                            href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-512</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -5533,8 +5582,9 @@
                                           octets of the digest algorithm identified by the <a
                                           href="#dfn-KeyAlgorithm-name">name</a> attribute of the <a
                                           href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a> attribute
-                                          of the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                          attribute of <var>key</var>.
+                                          of the [[<a
+                                          href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                          internal slot of <var>key</var>.
                                         </p>
                                       </li>
                                     </ul>
@@ -5543,10 +5593,12 @@
                               </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>
+                                  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 represented by the [[<a
+                                  href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                                  <var>key</var>
                                 </p>
                                 <div class="ednote">
                                   <a href="#RFC5208">RFC 5208</a> specifies that the encoding of
@@ -5580,8 +5632,9 @@
                             <p>
                               Let <var>hash</var> be the <a href="#dfn-KeyAlgorithm-name">name</a>
                               attribute of the <a href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a>
-                              attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                              attribute of <var>key</var>.
+                              attribute of the [[<a
+                              href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                              <var>key</var>.
                             </p>
                           </li>
                           <li>
@@ -5633,7 +5686,7 @@
                           <li>
                             <dl class="switch">
                               <dt>
-                                If the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                                If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
                                 <var>key</var> is <code>"private"</code>:
                               </dt>
                               <dd>
@@ -5649,11 +5702,12 @@
                                   </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
+                                      If the underlying RSA private key represented by the [[<a
+                                      href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot
+                                      of <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>
@@ -5668,9 +5722,9 @@
                           </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>.
+                              Set the <code>ext</code> attribute of <var>jwk</var> to the [[<a
+                              href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                              of <var>key</var>.
                             </p>
                           </li>
                           <li>
@@ -5773,7 +5827,7 @@
                 <ol>
                   <li>
                     <p>
-                      If the <a href="#dfn-CryptoKey-type">type</a> attribute of <var>key</var>
+                      If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>.
@@ -5805,7 +5859,7 @@
                       href="#dfn-RsaOaepParams-label">label</a> member of
                       <var>normalizedAlgorithm</var> as the label, <var>L</var>, and with the hash
                       function specified by the <a href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a>
-                      attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
+                      attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
                       <var>key</var> as the Hash option and MGF1 (defined in Section B.2.1 of
                       [<cite><a href="#RFC3447">RFC3447</a></cite>]) as the MGF option.
                     </p>
@@ -5831,7 +5885,7 @@
                 <ol>
                   <li>
                     <p>
-                      If the <a href="#dfn-CryptoKey-type">type</a> attribute of <var>key</var>
+                      If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>.
@@ -5863,7 +5917,7 @@
                       href="#dfn-RsaOaepParams-label">label</a> member of
                       <var>normalizedAlgorithm</var> as the label, <var>L</var>, and with the hash
                       function specified by the <a href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a>
-                      attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
+                      attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
                       <var>key</var> as the Hash option and MGF1 (defined in Section B.2.1 of
                       [<cite><a href="#RFC3447">RFC3447</a></cite>]) as the MGF option.
                     </p>
@@ -5976,25 +6030,25 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
                       <var>publicKey</var> to <code>"public"</code>
                     </p>
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
                       <var>publicKey</var> to <var>algorithm</var>.
                     </p>
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot of
                       <var>publicKey</var> to true.
                     </p>
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>publicKey</var> to be the
                       <a href="#concept-usage-intersection">usage intersection</a> of
                       <var>usages</var> and <code>[ "encrypt", "wrapKey" ]</code>.
@@ -6008,25 +6062,25 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
                       <var>privateKey</var> to <code>"private"</code>
                     </p>
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
                       <var>privateKey</var> to <var>algorithm</var>.
                     </p>
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot of
                       <var>privateKey</var> to <var>extractable</var>.
                     </p>
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>privateKey</var> to be the
                       <a href="#concept-usage-intersection">usage intersection</a> of
                       <var>usages</var> and <code>[ "decrypt", "unwrapKey" ]</code>.
@@ -6278,7 +6332,7 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                              Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
                               <var>key</var> to <code>"public"</code>
                             </p>
                           </li>
@@ -6485,7 +6539,7 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                              Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
                               <var>key</var> to <code>"private"</code>
                             </p>
                           </li>
@@ -6596,7 +6650,7 @@
                                   </li>
                                   <li>
                                     <p>
-                                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
                                       <var>key</var> to <code>"private"</code>
                                     </p>
                                   </li>
@@ -6624,7 +6678,7 @@
                                   </li>
                                   <li>
                                     <p>
-                                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
                                       <var>key</var> to <code>"public"</code>
                                     </p>
                                   </li>
@@ -6676,7 +6730,7 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
                       <var>key</var> to <var>algorithm</var>
                     </p>
                   </li>
@@ -6701,7 +6755,7 @@
                         <ol>
                           <li>
                             <p>
-                              If the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>.
@@ -6746,8 +6800,9 @@
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a
                                             href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-1</code>:
+                                            the [[<a
+                                            href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-1</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -6760,8 +6815,9 @@
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a
                                             href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-256</code>:
+                                            the [[<a
+                                            href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-256</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -6774,8 +6830,9 @@
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a
                                             href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-384</code>:
+                                            the [[<a
+                                            href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-384</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -6788,8 +6845,9 @@
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a
                                             href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-512</code>:
+                                            the [[<a
+                                            href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-512</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -6832,7 +6890,9 @@
                                   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>
+                                  represents the RSA public key represented by the [[<a
+                                  href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                                  <var>key</var>
                                 </p>
                               </li>
                             </ul>
@@ -6850,7 +6910,7 @@
                         <ol>
                           <li>
                             <p>
-                              If the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>.
@@ -6900,8 +6960,9 @@
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a
                                             href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-1</code>:
+                                            the [[<a
+                                            href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-1</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -6914,8 +6975,9 @@
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a
                                             href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-256</code>:
+                                            the [[<a
+                                            href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-256</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -6928,8 +6990,9 @@
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a
                                             href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-384</code>:
+                                            the [[<a
+                                            href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-384</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -6942,8 +7005,9 @@
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a
                                             href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-512</code>:
+                                            the [[<a
+                                            href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-512</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -6983,10 +7047,12 @@
                               </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>
+                                  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 represented by the [[<a
+                                  href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                                  <var>key</var>
                                 </p>
                                 <div class="ednote">
                                   <a href="#RFC5208">RFC 5208</a> specifies that the encoding of
@@ -7024,10 +7090,9 @@
                           <li>
                             <dl class="switch">
                               <dt>
-                                If the <a href="#dfn-KeyAlgorithm-name">name</a>
-                                attribute of the <a
-                                href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute
+                                If the <a href="#dfn-KeyAlgorithm-name">name</a> attribute of the <a
+                                href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of the [[<a
+                                href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot
                                 of <var>key</var> is <code>SHA-1</code>:
                               </dt>
                               <dd>
@@ -7037,10 +7102,9 @@
                                 </p>
                               </dd>
                               <dt>
-                                If the <a href="#dfn-KeyAlgorithm-name">name</a>
-                                attribute of the <a
-                                href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute
+                                If the <a href="#dfn-KeyAlgorithm-name">name</a> attribute of the <a
+                                href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of the [[<a
+                                href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot
                                 of <var>key</var> is <code>SHA-256</code>:
                               </dt>
                               <dd>
@@ -7050,10 +7114,9 @@
                                 </p>
                               </dd>
                               <dt>
-                                If the <a href="#dfn-KeyAlgorithm-name">name</a>
-                                attribute of the <a
-                                href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute
+                                If the <a href="#dfn-KeyAlgorithm-name">name</a> attribute of the <a
+                                href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of the [[<a
+                                href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot
                                 of <var>key</var> is <code>SHA-384</code>:
                               </dt>
                               <dd>
@@ -7063,10 +7126,9 @@
                                 </p>
                               </dd>
                               <dt>
-                                If the <a href="#dfn-KeyAlgorithm-name">name</a>
-                                attribute of the <a
-                                href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute
+                                If the <a href="#dfn-KeyAlgorithm-name">name</a> attribute of the <a
+                                href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of the [[<a
+                                href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot
                                 of <var>key</var> is <code>SHA-512</code>:
                               </dt>
                               <dd>
@@ -7087,8 +7149,8 @@
                           <li>
                             <dl class="switch">
                               <dt>
-                                If the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                <var>key</var> is <code>"private"</code>:
+                                If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                                of <var>key</var> is <code>"private"</code>:
                               </dt>
                               <dd>
                                 <ol>
@@ -7103,11 +7165,12 @@
                                   </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
+                                      If the underlying RSA private key represented by the [[<a
+                                      href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot
+                                      of <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>
@@ -7122,9 +7185,9 @@
                           </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>.
+                              Set the <code>ext</code> attribute of <var>jwk</var> to the [[<a
+                              href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                              of <var>key</var>.
                             </p>
                           </li>
                           <li>
@@ -7270,9 +7333,9 @@
                 <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
+                      If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>
@@ -7366,10 +7429,10 @@
                 <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>.
+                      If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>
@@ -7513,25 +7576,25 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>publicKey</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>publicKey</var> to true.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>publicKey</var> to be the empty list.
                     </p>
                   </li>
@@ -7543,28 +7606,27 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>[ "sign", "verify" ]</code>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>privateKey</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>privateKey</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>privateKey</var> to be the <a href="#concept-usage-intersection">usage
+                      intersection</a> of <var>usages</var> and <code>[ "sign", "verify" ]</code>.
                     </p>
                   </li>
                   <li>
@@ -7721,8 +7783,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> to <code>"public"</code>
+                              Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              of <var>key</var> to <code>"public"</code>
                             </p>
                           </li>
                           <li>
@@ -7745,8 +7807,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                              <var>key</var> to <var>algorithm</var>.
+                              Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                              internal slot of <var>key</var> to <var>algorithm</var>.
                             </p>
                           </li>
                         </ol>
@@ -7896,8 +7958,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> to <code>"private"</code>
+                              Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              of <var>key</var> to <code>"private"</code>
                             </p>
                           </li>
                           <li>
@@ -7920,8 +7982,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                              <var>key</var> to <var>algorithm</var>.
+                              Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                              internal slot of <var>key</var> to <var>algorithm</var>.
                             </p>
                           </li>
                         </ol>
@@ -8054,8 +8116,8 @@
                                   </li>
                                   <li>
                                     <p>
-                                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                      <var>Key</var> to <code>"private"</code>.
+                                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]]
+                                      internal slot of <var>Key</var> to <code>"private"</code>.
                                     </p>
                                   </li>
                                 </ol>
@@ -8082,8 +8144,8 @@
                                   </li>
                                   <li>
                                     <p>
-                                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                      <var>Key</var> to <code>"public"</code>.
+                                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]]
+                                      internal slot of <var>Key</var> to <code>"public"</code>.
                                     </p>
                                   </li>
                                 </ol>
@@ -8110,8 +8172,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                              <var>key</var> to <var>algorithm</var>.
+                              Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                              internal slot of <var>key</var> to <var>algorithm</var>.
                             </p>
                           </li>
                         </ol>
@@ -8138,7 +8200,8 @@
                 <ol>
                   <li>
                     <p>
-                      Let <var>key</var> be the <a href="#dfn-CryptoKey">CryptoKey</a> to be exported.
+                      Let <var>key</var> be the <a href="#dfn-CryptoKey">CryptoKey</a> to be
+                      exported.
                     </p>
                   </li>
                   <li>
@@ -8148,8 +8211,8 @@
                         <ol>
                           <li>
                             <p>
-                              If the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> is not <code>"public"</code>, then <a
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              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>
@@ -8183,9 +8246,9 @@
                                       <dt>
                                         If the <a
                                         href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a
-                                        href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-256"</code>:
+                                        attribute of the [[<a
+                                        href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-256"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -8197,9 +8260,9 @@
                                       <dt>
                                         If the <a
                                         href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a
-                                        href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-384"</code>:
+                                        attribute of the [[<a
+                                        href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-384"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -8211,9 +8274,9 @@
                                       <dt>
                                         If the <a
                                         href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a
-                                        href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-521"</code>:
+                                        attribute of the [[<a
+                                        href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-521"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -8229,7 +8292,8 @@
                               <li>
                                 <p>
                                   Set the <var>subjectPublicKey</var> field to the octet string that
-                                  represents the Elliptic Curve public key identified by
+                                  represents the Elliptic Curve public key represented by the [[<a
+                                  href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                                   <var>key</var> according to the encoding rules specified in
                                   Section 2.2 of <a href="#RFC5480">RFC 5480</a> and using the
                                   uncompressed form.
@@ -8250,8 +8314,8 @@
                         <ol>
                           <li>
                             <p>
-                              If the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> is not <code>"private"</code>, then <a
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              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>
@@ -8290,9 +8354,9 @@
                                       <dt>
                                         If the <a
                                         href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a
-                                        href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-256"</code>:
+                                        attribute of the [[<a
+                                        href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-256"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -8304,9 +8368,9 @@
                                       <dt>
                                         If the <a
                                         href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a
-                                        href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-384"</code>:
+                                        attribute of the [[<a
+                                        href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-384"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -8318,9 +8382,9 @@
                                       <dt>
                                         If the <a
                                         href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a
-                                        href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-521"</code>:
+                                        attribute of the [[<a
+                                        href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-521"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -8338,8 +8402,9 @@
                                   Set the <var>privateKey</var> field to the result of DER-encoding
                                   an instance of the <code>ECPrivateKey</code> structure defined in
                                   Section 3 of <a href="#RFC5915">RFC 5915</a> for the Elliptic
-                                  Curve private key represented by <var>key</var> and that conforms
-                                  to the following:
+                                  Curve private key represented by the [[<a
+                                  href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                                  <var>key</var> and that conforms to the following:
                                 </p>
                                 <ul>
                                   <li>
@@ -8354,7 +8419,9 @@
                                     <p>
                                       The <var>publicKey</var> field is present and represents the
                                       Elliptic Curve public key associated with the Elliptic Curve
-                                      private key represented by <var>key</var>.
+                                      private key represented by the [[<a
+                                      href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot
+                                      of <var>key</var>.
                                     </p>
                                   </li>
                                 </ul>
@@ -8388,8 +8455,9 @@
                             <dl class="switch">
                               <dt>
                                 If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                attribute of <var>key</var> is <code>P-256</code>:
+                                attribute of the [[<a
+                                href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot
+                                of <var>key</var> is <code>P-256</code>:
                               </dt>
                               <dd>
                                 Set the <code>crv</code> attribute of <var>jwk</var> to
@@ -8397,8 +8465,9 @@
                               </dd>
                               <dt>
                                 If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                attribute of <var>key</var> is <code>P-384</code>:
+                                attribute of the [[<a
+                                href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot
+                                of <var>key</var> is <code>P-384</code>:
                               </dt>
                               <dd>
                                 Set the <code>crv</code> attribute of <var>jwk</var> to
@@ -8406,8 +8475,9 @@
                               </dd>
                               <dt>
                                 If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                attribute of <var>key</var> is <code>P-521</code>:
+                                attribute of the [[<a
+                                href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot
+                                of <var>key</var> is <code>P-521</code>:
                               </dt>
                               <dd>
                                 Set the <code>crv</code> attribute of <var>jwk</var> to
@@ -8432,13 +8502,13 @@
                           <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>
-                                <p>
-                                  Set the <code>d</code> attribute of <var>jwk</var> according to the
-                                  definition in Section 6.2.2.1 of <a href="#jwa">JSON Web
+                                If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                                of <var>key</var> is <code>private</code>
+                              </dt>
+                              <dd>
+                                <p>
+                                  Set the <code>d</code> attribute of <var>jwk</var> according to
+                                  the definition in Section 6.2.2.1 of <a href="#jwa">JSON Web
                                   Algorithms</a>.
                                 </p>
                               </dd>
@@ -8446,15 +8516,15 @@
                           </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>.
+                              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-slot-extractable">extractable</a>]] internal slot
+                              of <var>key</var>.
                             </p>
                           </li>
                           <li>
@@ -8574,8 +8644,8 @@
                   </li>
                   <li>
                     <p>
-                      Generate an Elliptic Curve key pair, as defined in [<a href="#X9.63">X9.63</a>]
-                      with domain parameters for the curve identified by
+                      Generate an Elliptic Curve key pair, as defined in [<a
+                      href="#X9.63">X9.63</a>] with domain parameters for the curve identified by
                       the <a href="#dfn-EcKeyGenParams-namedCurve">namedCurve</a> member of
                       <var>normalizedAlgorithm</var>.
                     </p>
@@ -8610,31 +8680,31 @@
                   </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
+                      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-slot-type">type</a>]] internal slot of
+                      <var>publicKey</var> to <code>"public"</code>
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>publicKey</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>publicKey</var> to true.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>publicKey</var> to be the empty list.
                     </p>
                   </li>
@@ -8646,25 +8716,25 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>privateKey</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>privateKey</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>privateKey</var> to be the
                       <a href="#concept-usage-intersection">usage intersection</a> of
                       <var>usages</var> and <code>[ "deriveKey", "deriveBits" ]</code>.
@@ -8701,10 +8771,10 @@
                 <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>.
+                      If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>
@@ -8732,8 +8802,8 @@
                   </li>
                   <li>
                     <p>
-                      If the <a href="#dfn-KeyAlgorithm-name">name</a> attribute of the <a
-                      href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
+                      If the <a href="#dfn-KeyAlgorithm-name">name</a> attribute of the [[<a
+                      href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
                       <var>publicKey</var> is not <code>"ECDH"</code>, then <a
                       href="#concept-return-an-error">return an error</a> named <a
                       href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
@@ -8741,7 +8811,7 @@
                   </li>
                   <li>
                     <p>
-                      If the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                      If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
                       <var>publicKey</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>.
@@ -8750,19 +8820,20 @@
                   <li>
                     <p>
                       If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a> attribute of
-                      the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
+                      the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
                       <var>publicKey</var> is not equal to the <a
-                      href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a> property of the <a
-                      href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>key</var>,
-                      then <a href="#concept-return-an-error">return an error</a> named <a
-                      href="#dfn-DataError"><code>DataError</code></a>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Perform the ECDH primitive specified in <a href="#X9.63">X9.63</a> Section 5.4.1
-                      with <var>key</var> as the EC private key <var>d</var> and the EC public key
-                      represented by <var>publicKey</var> as the EC public key <var>Q</var>.
+                      href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a> property of the [[<a
+                      href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>key</var>, then <a href="#concept-return-an-error">return an error</a>
+                      named <a href="#dfn-DataError"><code>DataError</code></a>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Perform the ECDH primitive specified in <a href="#X9.63">X9.63</a> Section
+                      5.4.1 with <var>key</var> as the EC private key <var>d</var> and the EC public
+                      key represented by the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]]
+                      internal slot of <var>publicKey</var> as the EC public key <var>Q</var>.
                     </p>
                   </li>
                   <li>
@@ -8931,8 +9002,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> to <code>"public"</code>
+                              Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              of <var>key</var> to <code>"public"</code>
                             </p>
                           </li>
                           <li>
@@ -8955,8 +9026,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                              <var>key</var> to <var>algorithm</var>.
+                              Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                              internal slot of <var>key</var> to <var>algorithm</var>.
                             </p>
                           </li>
                         </ol>
@@ -9106,8 +9177,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> to <code>"private"</code>.
+                              Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              of <var>key</var> to <code>"private"</code>.
                             </p>
                           </li>
                           <li>
@@ -9130,8 +9201,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                              <var>key</var> to <var>algorithm</var>.
+                              Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                              internal slot of <var>key</var> to <var>algorithm</var>.
                             </p>
                           </li>
                         </ol>
@@ -9223,8 +9294,8 @@
                                   </li>
                                   <li>
                                     <p>
-                                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                      <var>Key</var> to <code>"private"</code>.
+                                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]]
+                                      internal slot of <var>Key</var> to <code>"private"</code>.
                                     </p>
                                   </li>
                                 </ol>
@@ -9251,8 +9322,8 @@
                                   </li>
                                   <li>
                                     <p>
-                                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                      <var>Key</var> to <code>"public"</code>.
+                                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]]
+                                      internal slot of <var>Key</var> to <code>"public"</code>.
                                     </p>
                                   </li>
                                 </ol>
@@ -9279,8 +9350,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                              <var>key</var> to <var>algorithm</var>.
+                              Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                              internal slot of <var>key</var> to <var>algorithm</var>.
                             </p>
                           </li>
                         </ol>
@@ -9356,26 +9427,26 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> to <code>"public"</code>
-                            </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>
-                              Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
-                              <var>key</var> to <var>usages</var>.
-                            </p>
-                          </li>
-                          <li>
-                            <p>
-                              Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute
-                              of <var>key</var> to <var>extractable</var>.
+                              Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              of <var>key</var> to <code>"public"</code>
+                            </p>
+                          </li>
+                          <li>
+                            <p>
+                              Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                              internal slot of <var>key</var> to <var>algorithm</var>.
+                            </p>
+                          </li>
+                          <li>
+                            <p>
+                              Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal
+                              slot of <var>key</var> to <var>usages</var>.
+                            </p>
+                          </li>
+                          <li>
+                            <p>
+                              Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]]
+                              internal slot of <var>key</var> to <var>extractable</var>.
                             </p>
                           </li>
                         </ol>
@@ -9413,8 +9484,8 @@
                         <ol>
                           <li>
                             <p>
-                              If the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> is not <code>"public"</code>, then <a
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              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>
@@ -9448,9 +9519,9 @@
                                       <dt>
                                         If the <a
                                         href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a
-                                        href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-256"</code>:
+                                        attribute of the [[<a
+                                        href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-256"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -9462,9 +9533,9 @@
                                       <dt>
                                         If the <a
                                         href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a
-                                        href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-384"</code>:
+                                        attribute of the [[<a
+                                        href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-384"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -9476,9 +9547,9 @@
                                       <dt>
                                         If the <a
                                         href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a
-                                        href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-521"</code>:
+                                        attribute of the [[<a
+                                        href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-521"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -9494,7 +9565,8 @@
                               <li>
                                 <p>
                                   Set the <var>subjectPublicKey</var> field to the octet string that
-                                  represents the Elliptic Curve public key identified by
+                                  represents the Elliptic Curve public key represented by the [[<a
+                                  href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                                   <var>key</var> according to the encoding rules specified in
                                   Section 2.2 of <a href="#RFC5480">RFC 5480</a> and using the
                                   uncompressed form.
@@ -9509,8 +9581,8 @@
                         <ol>
                           <li>
                             <p>
-                              If the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> is not <code>"private"</code>, then <a
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              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>
@@ -9549,9 +9621,9 @@
                                       <dt>
                                         If the <a
                                         href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a
-                                        href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-256"</code>:
+                                        attribute of the [[<a
+                                        href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-256"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -9563,9 +9635,9 @@
                                       <dt>
                                         If the <a
                                         href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a
-                                        href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-384"</code>:
+                                        attribute of the [[<a
+                                        href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-384"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -9577,9 +9649,9 @@
                                       <dt>
                                         If the <a
                                         href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a
-                                        href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-521"</code>:
+                                        attribute of the [[<a
+                                        href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-521"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -9597,8 +9669,9 @@
                                   Set the <var>privateKey</var> field to the result of DER-encoding
                                   an instance of the <code>ECPrivateKey</code> structure defined in
                                   Section 3 of <a href="#RFC5915">RFC 5915</a> for the Elliptic
-                                  Curve private key represented by <var>key</var> and that conforms
-                                  to the following:
+                                  Curve private key represented by the [[<a
+                                  href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                                  <var>key</var> and that conforms to the following:
                                 </p>
                                 <ul>
                                   <li>
@@ -9613,7 +9686,9 @@
                                     <p>
                                       The <var>publicKey</var> field is present and represents the
                                       Elliptic Curve public key associated with the Elliptic Curve
-                                      private key represented by <var>key</var>.
+                                      private key represented by the [[<a
+                                      href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot
+                                      of <var>key</var>.
                                     </p>
                                   </li>
                                 </ul>
@@ -9641,8 +9716,9 @@
                             <dl class="switch">
                               <dt>
                                 If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                attribute of <var>key</var> is <code>P-256</code>:
+                                attribute of the [[<a
+                                href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot
+                                of <var>key</var> is <code>P-256</code>:
                               </dt>
                               <dd>
                                 Set the <code>crv</code> attribute of <var>jwk</var> to
@@ -9650,8 +9726,9 @@
                               </dd>
                               <dt>
                                 If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                attribute of <var>key</var> is <code>P-384</code>:
+                                attribute of the [[<a
+                                href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot
+                                of <var>key</var> is <code>P-384</code>:
                               </dt>
                               <dd>
                                 Set the <code>crv</code> attribute of <var>jwk</var> to
@@ -9659,8 +9736,9 @@
                               </dd>
                               <dt>
                                 If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                attribute of <var>key</var> is <code>P-521</code>:
+                                attribute of the [[<a
+                                href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot
+                                of <var>key</var> is <code>P-521</code>:
                               </dt>
                               <dd>
                                 Set the <code>crv</code> attribute of <var>jwk</var> to
@@ -9685,8 +9763,8 @@
                           <li>
                             <dl class="switch">
                               <dt>
-                                If the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                <var>key</var> is <code>private</code>
+                                If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                                of <var>key</var> is <code>private</code>
                               </dt>
                               <dd>
                                 <p>
@@ -9705,9 +9783,9 @@
                           </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>.
+                              Set the <code>ext</code> attribute of <var>jwk</var> to the [[<a
+                              href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                              of <var>key</var>.
                             </p>
                           </li>
                           <li>
@@ -9725,8 +9803,8 @@
                         <ol>
                           <li>
                             <p>
-                              If the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> is not <code>"public"</code>, then <a
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              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>
@@ -9734,8 +9812,9 @@
                           <li>
                             <p>
                               Let <var>data</var> be an octet string representing the Elliptic Curve
-                              point <var>Q</var> represented by <var>key</var> according to <a
-                              href="#X9.62">X9.62</a> Annex A.
+                              point <var>Q</var> represented by [[<a
+                              href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                              <var>key</var> according to <a href="#X9.62">X9.62</a> Annex A.
                             </p>
                           </li>
                           <li>
@@ -10071,19 +10150,19 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute
-                      of <var>key</var> to be <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to be <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>key</var> to be <var>usages</var>.
                     </p>
                   </li>
@@ -10247,21 +10326,21 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                      <var>key</var> to <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var>
-                      to the <a href="#concept-normalized-usages">normalized value</a> of
-                      <var>usages</var>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                      value</a> of <var>usages</var>.
                     </p>
                   </li>
                   <li>
@@ -10281,7 +10360,8 @@
                         <ol>
                           <li>
                             <p>
-                              Let <var>data</var> be the raw octets of the key represented by
+                              Let <var>data</var> be the raw octets of the key represented by [[<a
+                              href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                               <var>key</var>.
                             </p>
                           </li>
@@ -10311,9 +10391,10 @@
                           <li>
                             <p>
                               Set the <code>k</code> attribute of <var>jwk</var> to be a string
-                              containing the raw octets
-                              of the key represented by <var>key</var>, encoded according to
-                              Section 6.4 of <a href="#jwa">JSON Web Algorithms</a>.
+                              containing the raw octets of the key represented by [[<a
+                              href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                              <var>key</var>, encoded according to Section 6.4 of <a
+                              href="#jwa">JSON Web Algorithms</a>.
                             </p>
                           </li>
                           <li>
@@ -10335,18 +10416,19 @@
                           <li>
                             <p>
                               Set the <code>key_ops</code> attribute of <var>jwk</var> to equal 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 equal the 
-                              <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
+                              [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                               <var>key</var>.
                             </p>
                           </li>
                           <li>
                             <p>
+                              Set the <code>ext</code> attribute of <var>jwk</var> to equal the [[<a
+                              href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                              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>
@@ -10677,19 +10759,19 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute
-                      of <var>key</var> to be <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to be <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>key</var> to be <var>usages</var>.
                     </p>
                   </li>
@@ -10847,21 +10929,21 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                      <var>key</var> to <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var>
-                      to the <a href="#concept-normalized-usages">normalized value</a> of
-                      <var>usages</var>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                      value</a> of <var>usages</var>.
                     </p>
                   </li>
                   <li>
@@ -10881,7 +10963,8 @@
                         <ol>
                           <li>
                             <p>
-                              Let <var>data</var> be the raw octets of the key represented by
+                              Let <var>data</var> be the raw octets of the key represented by [[<a
+                              href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                               <var>key</var>.
                             </p>
                           </li>
@@ -10911,9 +10994,10 @@
                           <li>
                             <p>
                               Set the <code>k</code> attribute of <var>jwk</var> to be a string
-                              containing the raw octets
-                              of the key represented by <var>key</var>, encoded according to
-                              Section 6.4 of <a href="#jwa">JSON Web Algorithms</a>.
+                              containing the raw octets of the key represented by [[<a
+                              href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                              <var>key</var>, encoded according to Section 6.4 of <a
+                              href="#jwa">JSON Web Algorithms</a>.
                             </p>
                           </li>
                           <li>
@@ -10940,9 +11024,9 @@
                           </li>
                           <li>
                             <p>
-                              Set the <code>ext</code> attribute of <var>jwk</var> to equal the 
-                              <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                              <var>key</var>.
+                              Set the <code>ext</code> attribute of <var>jwk</var> to equal the [[<a
+                              href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                              of <var>key</var>.
                             </p>
                           </li>
                           <li>
@@ -11222,19 +11306,19 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute
-                      of <var>key</var> to be <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to be <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>key</var> to be <var>usages</var>.
                     </p>
                   </li>
@@ -11391,21 +11475,21 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                      <var>key</var> to <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var>
-                      to the <a href="#concept-normalized-usages">normalized value</a> of
-                      <var>usages</var>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                      value</a> of <var>usages</var>.
                     </p>
                   </li>
                   <li>
@@ -11425,7 +11509,8 @@
                         <ol>
                           <li>
                             <p>
-                              Let <var>data</var> be the raw octets of the key represented by
+                              Let <var>data</var> be the raw octets of the key represented by [[<a
+                              href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                               <var>key</var>.
                             </p>
                           </li>
@@ -11455,9 +11540,10 @@
                           <li>
                             <p>
                               Set the <code>k</code> attribute of <var>jwk</var> to be a string
-                              containing the raw octets
-                              of the key represented by <var>key</var>, encoded according to
-                              Section 6.4 of <a href="#jwa">JSON Web Algorithms</a>.
+                              containing the raw octets of the key represented by [[<a
+                              href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                              <var>key</var>, encoded according to Section 6.4 of <a
+                              href="#jwa">JSON Web Algorithms</a>.
                             </p>
                           </li>
                           <li>
@@ -11479,18 +11565,19 @@
                           <li>
                             <p>
                               Set the <code>key_ops</code> attribute of <var>jwk</var> to equal 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 equal the 
-                              <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
+                              <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 equal the [[<a
+                              href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                              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>
@@ -11909,19 +11996,19 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute
-                      of <var>key</var> to be <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to be <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>key</var> to be <var>usages</var>.
                     </p>
                   </li>
@@ -12079,21 +12166,21 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                      <var>key</var> to <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var>
-                      to the <a href="#concept-normalized-usages">normalized value</a> of
-                      <var>usages</var>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                      value</a> of <var>usages</var>.
                     </p>
                   </li>
                   <li>
@@ -12113,7 +12200,8 @@
                         <ol>
                           <li>
                             <p>
-                              Let <var>data</var> be the raw octets of the key represented by
+                              Let <var>data</var> be the raw octets of the key represented by [[<a
+                              href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                               <var>key</var>.
                             </p>
                           </li>
@@ -12143,9 +12231,10 @@
                           <li>
                             <p>
                               Set the <code>k</code> attribute of <var>jwk</var> to be a string
-                              containing the raw octets
-                              of the key represented by <var>key</var>, encoded according to
-                              Section 6.4 of <a href="#jwa">JSON Web Algorithms</a>.
+                              containing the raw octets of the key represented by [[<a
+                              href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                              <var>key</var>, encoded according to Section 6.4 of <a
+                              href="#jwa">JSON Web Algorithms</a>.
                             </p>
                           </li>
                           <li>
@@ -12167,18 +12256,19 @@
                           <li>
                             <p>
                               Set the <code>key_ops</code> attribute of <var>jwk</var> to equal 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 equal the 
-                              <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
+                              <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 equal the [[<a
+                              href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                              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>
@@ -12481,19 +12571,19 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute
-                      of <var>key</var> to be <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to be <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>key</var> to be <var>usages</var>.
                     </p>
                   </li>
@@ -12651,21 +12741,21 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                      <var>key</var> to <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var>
-                      to the <a href="#concept-normalized-usages">normalized value</a> of
-                      <var>usages</var>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                      value</a> of <var>usages</var>.
                     </p>
                   </li>
                   <li>
@@ -12685,7 +12775,8 @@
                         <ol>
                           <li>
                             <p>
-                              Let <var>data</var> be the raw octets of the key represented by
+                              Let <var>data</var> be the raw octets of the key represented by [[<a
+                              href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                               <var>key</var>.
                             </p>
                           </li>
@@ -12715,9 +12806,10 @@
                           <li>
                             <p>
                               Set the <code>k</code> attribute of <var>jwk</var> to be a string
-                              containing the raw octets
-                              of the key represented by <var>key</var>, encoded according to
-                              Section 6.4 of <a href="#jwa">JSON Web Algorithms</a>.
+                              containing the raw octets of the key represented by [[<a
+                              href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                              <var>key</var>, encoded according to Section 6.4 of <a
+                              href="#jwa">JSON Web Algorithms</a>.
                             </p>
                           </li>
                           <li>
@@ -12739,18 +12831,19 @@
                           <li>
                             <p>
                               Set the <code>key_ops</code> attribute of <var>jwk</var> to equal 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 equal the 
-                              <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
+                              <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 equal the [[<a
+                              href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                              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>
@@ -12988,19 +13081,19 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute
-                      of <var>key</var> to be <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to be <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>key</var> to be <var>usages</var>.
                     </p>
                   </li>
@@ -13158,21 +13251,21 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                      <var>key</var> to <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var>
-                      to the <a href="#concept-normalized-usages">normalized value</a> of
-                      <var>usages</var>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                      value</a> of <var>usages</var>.
                     </p>
                   </li>
                   <li>
@@ -13192,7 +13285,8 @@
                         <ol>
                           <li>
                             <p>
-                              Let <var>data</var> be the raw octets of the key represented by
+                              Let <var>data</var> be the raw octets of the key represented by [[<a
+                              href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                               <var>key</var>.
                             </p>
                           </li>
@@ -13222,9 +13316,10 @@
                           <li>
                             <p>
                               Set the <code>k</code> attribute of <var>jwk</var> to be a string
-                              containing the raw octets
-                              of the key represented by <var>key</var>, encoded according to
-                              Section 6.4 of <a href="#jwa">JSON Web Algorithms</a>.
+                              containing the raw octets of the key represented by [[<a
+                              href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                              <var>key</var>, encoded according to Section 6.4 of <a
+                              href="#jwa">JSON Web Algorithms</a>.
                             </p>
                           </li>
                           <li>
@@ -13251,9 +13346,9 @@
                           </li>
                           <li>
                             <p>
-                              Set the <code>ext</code> attribute of <var>jwk</var> to equal the 
-                              <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                              <var>key</var>.
+                              Set the <code>ext</code> attribute of <var>jwk</var> to equal the [[<a
+                              href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                              of <var>key</var>.
                             </p>
                           </li>
                           <li>
@@ -13426,10 +13521,11 @@
                     <p>
                       Let <var>mac</var> be the result of performing the MAC Generation operation
                       described in Section 4 of [<a href="#fips-pub-198-1">FIPS PUB 198-1</a>] using
-                      the key represented by <var>key</var>, the hash function identified by the <a
-                      href="#dfn-HmacKeyAlgorithm-hash">hash</a> attribute of the <a
-                      href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>key</var> and
-                      <var>message</var> as the input data <var>text</var>.
+                      the key represented by [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]]
+                      internal slot of <var>key</var>, the hash function identified by the <a
+                      href="#dfn-HmacKeyAlgorithm-hash">hash</a> attribute of the [[<a
+                      href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>key</var> and <var>message</var> as the input data <var>text</var>.
                     </p>
                   </li>
                   <li>
@@ -13446,10 +13542,11 @@
                     <p>
                       Let <var>mac</var> be the result of performing the MAC Generation operation
                       described in Section 4 of [<a href="#fips-pub-198-1">FIPS PUB 198-1</a>] using
-                      the key represented by <var>key</var>, the hash function identified by the <a
-                      href="#dfn-HmacKeyAlgorithm-hash">hash</a> attribute of the <a
-                      href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>key</var> and
-                      <var>message</var> as the input data <var>text</var>.
+                      the key represented by [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]]
+                      internal slot of <var>key</var>, the hash function identified by the <a
+                      href="#dfn-HmacKeyAlgorithm-hash">hash</a> attribute of the [[<a
+                      href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>key</var> and <var>message</var> as the input data <var>text</var>.
                     </p>
                   </li>
                   <li>
@@ -13565,19 +13662,19 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute
-                      of <var>key</var> to be <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to be <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>key</var> to be <var>usages</var>.
                     </p>
                   </li>
@@ -13912,21 +14009,21 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                      <var>key</var> to <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var>
-                      to the <a href="#concept-normalized-usages">normalized value</a> of
-                      <var>usages</var>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                      value</a> of <var>usages</var>.
                     </p>
                   </li>
                   <li>
@@ -13946,7 +14043,8 @@
                         <ol>
                           <li>
                             <p>
-                              Let <var>data</var> be the raw octets of the key represented by
+                              Let <var>data</var> be the raw octets of the key represented by [[<a
+                              href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                               <var>key</var>.
                             </p>
                           </li>
@@ -13976,15 +14074,16 @@
                           <li>
                             <p>
                               Set the <code>k</code> attribute of <var>jwk</var> to be a string
-                              containing the raw octets
-                              of the key represented by <var>key</var>, encoded according to
-                              Section 6.4 of <a href="#jwa">JSON Web Algorithms</a>.
-                            </p>
-                          </li>
-                          <li>
-                            <p>
-                              Let <var>algorithm</var> be the <a
-                              href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
+                              containing the raw octets of the key represented by [[<a
+                              href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                              <var>key</var>, encoded according to Section 6.4 of <a
+                              href="#jwa">JSON Web Algorithms</a>.
+                            </p>
+                          </li>
+                          <li>
+                            <p>
+                              Let <var>algorithm</var> be the [[<a
+                              href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
                               <var>key</var>.
                             </p>
                           </li>
@@ -14024,9 +14123,9 @@
                           </li>
                           <li>
                             <p>
-                              Set the <code>ext</code> attribute of <var>jwk</var> to equal the 
-                              <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                              <var>key</var>.
+                              Set the <code>ext</code> attribute of <var>jwk</var> to equal the [[<a
+                              href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                              of <var>key</var>.
                             </p>
                           </li>
                           <li>
@@ -14274,25 +14373,25 @@
                   </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
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
+                      <var>publicKey</var> to <code>"public"</code>
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>publicKey</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>publicKey</var> to true.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>publicKey</var> to be the empty list.
                     </p>
                   </li>
@@ -14304,25 +14403,25 @@
                   </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
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
+                      <var>privateKey</var> to <code>"private"</code>
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>privateKey</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>privateKey</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>privateKey</var> to be <var>usages</var>.
                     </p>
                   </li>
@@ -14357,10 +14456,10 @@
                 <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>.
+                      If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>
@@ -14388,35 +14487,39 @@
                   </li>
                   <li>
                     <p>
-                      If the <a href="#dfn-KeyAlgorithm-name">name</a> attribute of the <a
-                      href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>publicKey</var> is
-                      not <code>"DH"</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 <a href="#dfn-CryptoKey-type">type</a> attribute of <var>publicKey</var> is
-                      not <code>"public"</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 <a href="#dfn-DhKeyAlgorithm-prime">prime</a> attribute of the <a
-                      href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>publicKey</var> is
-                      not equal to the <a href="#dfn-DhKeyAlgorithm-prime">prime</a> attribute of
-                      the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>key</var>,
-                      then <a href="#concept-return-an-error">return an error</a> named <a
+                      If the <a href="#dfn-KeyAlgorithm-name">name</a> attribute of the [[<a
+                      href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>publicKey</var> is not <code>"DH"</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 [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
+                      <var>publicKey</var> is not <code>"public"</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 <a href="#dfn-DhKeyAlgorithm-prime">prime</a> attribute of the [[<a
+                      href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>publicKey</var> is not equal to the <a
+                      href="#dfn-DhKeyAlgorithm-prime">prime</a> attribute of the [[<a
+                      href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>key</var>, 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 <a href="#dfn-DhKeyAlgorithm-generator">generator</a> attribute of the
-                      <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>publicKey</var>
-                      is not equal to the <a href="#dfn-DhKeyAlgorithm-generator">generator</a>
-                      attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
+                      [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>publicKey</var> is not equal to the <a
+                      href="#dfn-DhKeyAlgorithm-generator">generator</a> attribute of the [[<a
+                      href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
                       <var>key</var>, then <a href="#concept-return-an-error">return an error</a>
                       named <a href="#dfn-DataError"><code>DataError</code></a>.
                     </p>
@@ -14425,7 +14528,8 @@
                     <p>
                       Perform the Diffie-Hellman Phase II algorithm as specified in Section 8 of [<a
                       href="#PKCS3">PKCS #3</a>] with <var>key</var> as the DH private value
-                      <var>x</var> and the Diffie-Hellman public value represented by the <a
+                      <var>x</var> and the Diffie-Hellman public value represented by the [[<a
+                      href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of the <a
                       href="#dfn-DhKeyDeriveParams-public">public</a> member of
                       <var>normalizedAlgorithm</var> as the other's public value <var>PV'</var>.
                     </p>
@@ -14512,8 +14616,8 @@
                       </li>
                       <li>
                         <p>
-                          Set the <a href="#dfn-CryptoKey-type">type</a> attribute of <var>key</var>
-                          to <code>"public"</code>.
+                          Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
+                          <var>key</var> to <code>"public"</code>.
                         </p>
                       </li>
                       <li>
@@ -14546,20 +14650,20 @@
                       </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>
-                          Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                          <var>key</var> to <var>extractable</var>.
-                        </p>
-                      </li>
-                      <li>
-                        <p>
-                          Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
-                          <var>key</var> to <var>usages</var>.
+                          Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                          slot of <var>key</var> to <var>algorithm</var>.
+                        </p>
+                      </li>
+                      <li>
+                        <p>
+                          Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]]
+                          internal slot of <var>key</var> to <var>extractable</var>.
+                        </p>
+                      </li>
+                      <li>
+                        <p>
+                          Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot
+                          of <var>key</var> to <var>usages</var>.
                         </p>
                       </li>
                       <li>
@@ -14630,8 +14734,8 @@
                       </li>
                       <li>
                         <p>
-                          Set the <a href="#dfn-CryptoKey-type">type</a> property of <var>key</var>
-                          to <code>"public"</code>.
+                          Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
+                          <var>key</var> to <code>"public"</code>.
                         </p>
                       </li>
                       <li>
@@ -14664,22 +14768,21 @@
                       </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>
-                          Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                          <var>key</var> to <var>extractable</var>.
-                        </p>
-                      </li>
-                      <li>
-                        <p>
-                          Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
-                          <var>key</var> to the
-                          <a href="#concept-normalized-usages">normalized value</a> of
-                          <var>usages</var>.
+                          Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                          slot of <var>key</var> to <var>algorithm</var>.
+                        </p>
+                      </li>
+                      <li>
+                        <p>
+                          Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]]
+                          internal slot of <var>key</var> to <var>extractable</var>.
+                        </p>
+                      </li>
+                      <li>
+                        <p>
+                          Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot
+                          of <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                          value</a> of <var>usages</var>.
                         </p>
                       </li>
                       <li>
@@ -14758,8 +14861,8 @@
                       </li>
                       <li>
                         <p>
-                          Set the <a href="#dfn-CryptoKey-type">type</a> attribute of <var>key</var>
-                          to <code>"private"</code>.
+                          Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
+                          <var>key</var> to <code>"private"</code>.
                         </p>
                       </li>
                       <li>
@@ -14792,22 +14895,21 @@
                       </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>
-                          Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                          <var>key</var> to <var>extractable</var>.
-                        </p>
-                      </li>
-                      <li>
-                        <p>
-                          Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
-                          <var>key</var> to the
-                          <a href="#concept-normalized-usages">normalized value</a> of
-                          <var>usages</var>.
+                          Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                          slot of <var>key</var> to <var>algorithm</var>.
+                        </p>
+                      </li>
+                      <li>
+                        <p>
+                          Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]]
+                          internal slot of <var>key</var> to <var>extractable</var>.
+                        </p>
+                      </li>
+                      <li>
+                        <p>
+                          Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot
+                          of <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                          value</a> of <var>usages</var>.
                         </p>
                       </li>
                       <li>
@@ -14837,8 +14939,8 @@
                           <li>
                             <dl class="switch">
                               <dt>
-                                If the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                <var>key</var> is <code>"public"</code>:
+                                If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                                of <var>key</var> is <code>"public"</code>:
                               </dt>
                               <dd>
                                 Let <var>data</var> be the Public Value, <var>PV</var>, associated
@@ -14846,8 +14948,8 @@
                                 href="#PKCS3">PKCS #3</a>].
                               </dd>
                               <dt>
-                                If the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                <var>key</var> is <code>"private"</code>:
+                                If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                                of <var>key</var> is <code>"private"</code>:
                               </dt>
                               <dd>
                                 Let <var>data</var> be the octet string that represents the private
@@ -14871,8 +14973,8 @@
                         <ol>
                           <li>
                             <p>
-                              If the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> is not <code>"public"</code>, then <a
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              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>
@@ -14910,8 +15012,9 @@
                                           Set the <var>prime</var> field to an ASN.1 INTEGER that is
                                           equivalent to the <a
                                           href="#dfn-DhKeyAlgorithm-prime">prime</a> attribute of
-                                          the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                          attribute of <var>key</var>.
+                                          the [[<a
+                                          href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                          internal slot of <var>key</var>.
                                         </p>
                                       </li>
                                       <li>
@@ -14919,9 +15022,9 @@
                                           Set the <var>base</var> field to an ASN.1 INTEGER that is
                                           equivalent to the <a
                                           href="#dfn-DhKeyAlgorithm-generator">generator</a>
-                                          attribute of the <a
-                                          href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                          <var>key</var>.
+                                          attribute of the [[<a
+                                          href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                          internal slot of <var>key</var>.
                                         </p>
                                       </li>
                                     </ul>
@@ -14931,7 +15034,8 @@
                               <li>
                                 <p>
                                   Set the <var>subjectPublicKey</var> to an ASN.1 INTEGER that
-                                  corresponds to the Diffie-Hellman public value represented by
+                                  corresponds to the Diffie-Hellman public value represented by [[<a
+                                  href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                                   <var>key</var>.
                                 </p>
                               </li>
@@ -14952,8 +15056,8 @@
                         <ol>
                           <li>
                             <p>
-                              If the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> is not <code>"private"</code>, then <a
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              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>
@@ -14991,8 +15095,9 @@
                                           Set the <var>prime</var> field to an ASN.1 INTEGER that is
                                           equivalent to the <a
                                           href="#dfn-DhKeyAlgorithm-prime">prime</a> attribute of
-                                          the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                          attribute of <var>key</var>.
+                                          the [[<a
+                                          href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                          internal slot of <var>key</var>.
                                         </p>
                                       </li>
                                       <li>
@@ -15000,9 +15105,9 @@
                                           Set the <var>base</var> field to an ASN.1 INTEGER that is
                                           equivalent to the <a
                                           href="#dfn-DhKeyAlgorithm-generator">generator</a>
-                                          attribute of the <a
-                                          href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                          <var>key</var>.
+                                          attribute of the [[<a
+                                          href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                          internal slot of <var>key</var>.
                                         </p>
                                       </li>
                                     </ul>
@@ -15013,7 +15118,8 @@
                                 <p>
                                   Set the <var>privateKey</var> field to an ASN.1 INTEGER that
                                   corresponds to the Diffie-Hellman private value represented by
-                                  <var>key</var>.
+                                  [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot
+                                  of <var>key</var>.
                                 </p>
                               </li>
                             </ul>
@@ -15303,8 +15409,8 @@
                       </li>
                       <li>
                         <p>
-                          Set the <a href="#dfn-CryptoKey-type">type</a> attribute of <var>key</var>
-                          to <code>"secret"</code>.
+                          Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
+                          <var>key</var> to <code>"secret"</code>.
                         </p>
                       </li>
                       <li>
@@ -15321,22 +15427,21 @@
                       </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>
-                          Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                          <var>key</var> to <var>extractable</var>.
-                        </p>
-                      </li>
-                      <li>
-                        <p>
-                          Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
-                          <var>key</var> to the
-                          <a href="#concept-normalized-usages">normalized value</a> of
-                          <var>usages</var>.
+                          Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                          slot of <var>key</var> to <var>algorithm</var>.
+                        </p>
+                      </li>
+                      <li>
+                        <p>
+                          Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]]
+                          internal slot of <var>key</var> to <var>extractable</var>.
+                        </p>
+                      </li>
+                      <li>
+                        <p>
+                          Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot
+                          of <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                          value</a> of <var>usages</var>.
                         </p>
                       </li>
                       <li>
@@ -15492,8 +15597,9 @@
                   <li>
                     <p>
                       Let <var>keyDerivationKey</var> be the result of performing <var>prf</var>
-                      using <var>extractKey</var> as the key and the secret represented by
-                      <var>key</var> as the message.
+                      using <var>extractKey</var> as the key and the secret represented by [[<a
+                      href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of <var>key</var>
+                      as the message.
                     </p>
                   </li>
                   <li>
@@ -15585,8 +15691,8 @@
                       </li>
                       <li>
                         <p>
-                          Set the <a href="#dfn-CryptoKey-type">type</a> attribute of <var>key</var>
-                          to <code>"secret"</code>.
+                          Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
+                          <var>key</var> to <code>"secret"</code>.
                         </p>
                       </li>
                       <li>
@@ -15603,22 +15709,21 @@
                       </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>
-                          Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                          <var>key</var> to <var>extractable</var>.
-                        </p>
-                      </li>
-                      <li>
-                        <p>
-                          Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
-                          <var>key</var> to the
-                          <a href="#concept-normalized-usages">normalized value</a> of
-                          <var>usages</var>.
+                          Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                          slot of <var>key</var> to <var>algorithm</var>.
+                        </p>
+                      </li>
+                      <li>
+                        <p>
+                          Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]]
+                          internal slot of <var>key</var> to <var>extractable</var>.
+                        </p>
+                      </li>
+                      <li>
+                        <p>
+                          Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot
+                          of <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                          value</a> of <var>usages</var>.
                         </p>
                       </li>
                       <li>
@@ -15758,10 +15863,10 @@
                     <p>
                       Let <var>result</var> be the result of performing the PBKDF2 operation defined
                       in Section 5.2 of [<a href="#rfc2898">RFC2898</a>] using <var>prf</var> as the
-                      pseudo-random function, <var>PRF</var>, the password represented by
-                      <var>key</var> as the password, <var>P</var>, <a
-                      href="#concept-contents-of-arraybuffer">the contents of</a> the <a
-                      href="#dfn-Pbkdf2Params-salt">salt</a> attribute of
+                      pseudo-random function, <var>PRF</var>, the password represented by [[<a
+                      href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of <var>key</var>
+                      as the password, <var>P</var>, <a href="#concept-contents-of-arraybuffer">the
+                      contents of</a> the <a href="#dfn-Pbkdf2Params-salt">salt</a> attribute of
                       <var>normalizedAlgorithm</var> as the salt, <var>S</var>, the value of the <a
                       href="#dfn-Pbkdf2Params-iterations">iterations</a> attribute of
                       <var>normalizedAlgorithm</var> as the iteration count, <var>c</var>, and
@@ -15812,8 +15917,8 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of <var>key</var> to
-                      <code>"secret"</code>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
+                      <var>key</var> to <code>"secret"</code>.
                     </p>
                   </li>
                   <li>
@@ -15830,21 +15935,21 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                      <var>key</var> to <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var>
-                      to the <a href="#concept-normalized-usages">normalized value</a> of
-                      <var>usages</var>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                      value</a> of <var>usages</var>.
                     </p>
                   </li>
                   <li>
@@ -15879,8 +15984,8 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of <var>key</var> to
-                      <code>"secret"</code>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
+                      <var>key</var> to <code>"secret"</code>.
                     </p>
                   </li>
                   <li>
@@ -15897,21 +16002,21 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                      <var>key</var> to <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var>
-                      to the <a href="#concept-normalized-usages">normalized value</a> of
-                      <var>usages</var>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                      value</a> of <var>usages</var>.
                     </p>
                   </li>
                   <li>
--- a/spec/Overview.html	Mon Jun 16 00:00:00 2014 -0700
+++ b/spec/Overview.html	Mon Jun 16 00:00:00 2014 -0700
@@ -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="#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 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-internal-slots">12.3. CryptoKey internal slots</a></li><li><a href="#cryptokey-interface-members">12.4. CryptoKey interface members</a></li><li><a href="#cryptokey-interface-clone">12.5. 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">
@@ -961,35 +961,60 @@
             </dd>
           </dl>
         </div>
+        
+        <div id="cryptokey-interface-internal-slots" class="section">
+          <h3>12.3. CryptoKey internal slots</h3>
+          <p>
+            Every <code>CryptoKey</code> object has a set of internal slots that store information
+            about the key. These slots are not exposed as part of this specification; they
+            represent internal state that an implementation uses to implement this specification.
+            The notational convention used in [<a href="#ES262">ES262</a>] is re-used here; internal
+            slots are identified by names enclosed in double square brackets [[ ]].
+          </p>
+          <p>
+            All <code>CryptoKey</code> objects have internal slots named [[<dfn id="dfn-CryptoKey-slot-type">type</dfn>]], [[<dfn id="dfn-CryptoKey-slot-extractable">extractable</dfn>]], [[<dfn id="dfn-CryptoKey-slot-algorithm">algorithm</dfn>]], [[<dfn id="dfn-CryptoKey-slot-usages">usages</dfn>]], and [[<dfn id="dfn-CryptoKey-slot-handle">handle</dfn>]].
+          </p>
+          <p class="note">
+            The [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] slot is an opaque type that
+            contains whatever data the underlying cryptographic implementation uses to represent a
+            logical key. Different cryptographic implementations may use different types, ranging
+            from opaque identifiers represented as integers, pointer types, or structures that
+            provide identifying information. These handles are never exposed to applications.
+          </p>
+        </div>
 
         <div id="cryptokey-interface-members" class="section">
-          <h3>12.3. CryptoKey interface members</h3>
+          <h3>12.4. CryptoKey interface members</h3>
           <dl>
             <dt id="dfn-CryptoKey-type"><code>type</code></dt>
             <dd>
-              The type of the underlying key.
+              Reflects the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot, which
+              contains the type of the underlying key.
             </dd>
             <dt id="dfn-CryptoKey-extractable"><code>extractable</code></dt>
             <dd>
-              Whether or not the raw keying material may be exported by the application.
+              Reflects the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+              slot, which indicates whether or not the raw keying material may be exported by the
+              application.
             </dd>
             <dt id="dfn-CryptoKey-algorithm"><code>algorithm</code></dt>
             <dd>
-              A JavaScript Object that contains information about the algorithm used to generate
-              the key. The Object will contain properties defined within the various
-              <a href="#dfn-KeyAlgorithm"><code>KeyAlgorithm</code></a> dictionary and derived
-              dictionaries.
+              Reflects the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot,
+              converting the interface contained within [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] to an ECMAScript object, as
+              defined by [<a href="#WebIDL">WEBIDL</a>].
             </dd>
             <dt id="dfn-CryptoKey-usages"><code>usages</code></dt>
             <dd>
-              An <code>Array</code> of <a href="#dfn-KeyUsage"><code>KeyUsages</code></a> that
-              indicate what cryptographic operations may be used with this key.
+              Reflects the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot,
+              converting the list of <a href="#dfn-KeyUsages"><code>KeyUsages</code></a> to an
+              ECMAScript <code>Array</code> object, which indicates which cryptographic operations
+              are permissible to be used with this key.
             </dd>
           </dl>
         </div>
 
         <div id="cryptokey-interface-clone" class="section">
-          <h3>12.4. Structured clone algorithm</h3>
+          <h3>12.5. Structured clone algorithm</h3>
           <p>
             When a user agent is required to obtain a <a href="#structured-clone">structured clone</a>
             of a <a href="#dfn-CryptoKey">CryptoKey</a> object, it must run the following steps.
@@ -1003,32 +1028,29 @@
             </li>
             <li>
               Let <var>output</var> be a newly constructed <a href="#dfn-CryptoKey">CryptoKey</a>
-              object.</li>
-            <li>
-              Let the following attributes of <var>output</var> be equal to the value obtained by
-              invoking the internal structured clone algorithm recursively, using the corresponding
-              attribute on <var>input</var> as the new "<var>input</var>" argument and
-              <var>memory</var> as the new "<var>memory</var>" argument:
-              <ul>
-                <li><a href="#dfn-CryptoKey-type">type</a></li>
-                <li><a href="#dfn-CryptoKey-extractable">extractable</a></li>
-                <li><a href="#dfn-CryptoKey-algorithm">KeyAlgorithm</a></li>
-                <li><a href="#dfn-CryptoKey-usages">KeyUsage</a></li>
-              </ul>
+              object.
             </li>
             <li>
-              Let <var>output</var> refer to the same underlying cryptographic material and
-              cryptographic material key storage of <var>input</var>.
+              Let the [[<a href="#dfn-CryptoKey-slot-type">type</a>]], <a href="#dfn-CryptoKey-slot-extractable">[[extractable]]</a>, <a href="#dfn-CryptoKey-slot-algorithm">[[algorithm]]</a>, and <a href="#dfn-CryptoKey-slot-usages">[[usages]]</a> internal slots of <var>output</var>
+              be set to the result of invoking the internal structured clone algorithm recursively
+              on the corresponding internal slots of <var>input</var>, with the slot contents as the
+              new "<var>input</var>" argument and <var>memory</var> as the new "<var>memory</var>"
+              argument.
+            </li>
+            <li>
+              Let the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+              <var>output</var> refer to the same cryptographic key data represented by the
+              [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of <var>input</var>.
             </li>
           </ol>
           <div class="note"><div class="noteHeader">Note</div>
-            <strong>Implementation Note:</strong> When performing the structured clone algorithm for
-            a <code>CryptoKey</code> object, it is important that the underlying cryptographic key
-            material not be exposed to a JavaScript implementation. Such a situation may arise if an
-            implementation fails to implement the structured clone algorithm correctly, such as by
-            allowing a <code>CryptoKey</code> object to be serialized as part of a structured clone
-            implementation, but then deserializing it as a <code>DOMString</code>, rather than as a
-            <code>CryptoKey</code> object.
+            <strong>Implementation Note:</strong> When performing the structured clone algorithm in
+            order to serialize a <code>CryptoKey</code> object, implementations must not allow the
+            object to be deserialized as a different type. This is normatively required by the
+            definition of structured clone, but it merits specific attention, as such
+            deserialization may expose the contents of the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot, which in some
+            implementations may contain cryptographic key data that should not be exposed to
+            applications.
           </div>
         </div>
       </div>
@@ -1245,8 +1267,8 @@
               </li>
               <li>
                 <p>
-                  If the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var> does
-                  not contain an entry that is <code>"encrypt"</code>, then <a href="#concept-return-an-error">return an error</a> named <a href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
+                  If the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                  <var>key</var> does not contain an entry that is <code>"encrypt"</code>, then <a href="#concept-return-an-error">return an error</a> named <a href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
                 </p>
               </li>
               <li>
@@ -1334,8 +1356,8 @@
               </li>
               <li>
                 <p>
-                  If the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var> does
-                  not contain an entry that is <code>"decrypt"</code>, then <a href="#concept-return-an-error">return an error</a> named <a href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
+                  If the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                  <var>key</var> does not contain an entry that is <code>"decrypt"</code>, then <a href="#concept-return-an-error">return an error</a> named <a href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
                 </p>
               </li>
               <li>
@@ -1422,8 +1444,8 @@
               </li>
               <li>
                 <p>
-                  If the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var> does
-                  not contain an entry that is <code>"sign"</code>, then <a href="#concept-return-an-error">return an error</a> named <a href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
+                  If the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                  <var>key</var> does not contain an entry that is <code>"sign"</code>, then <a href="#concept-return-an-error">return an error</a> named <a href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
                 </p>
               </li>
               <li>
@@ -1515,8 +1537,8 @@
               </li>
               <li>
                 <p>
-                  If the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var> does
-                  not contain an entry that is <code>"verify"</code>, then <a href="#concept-return-an-error">return an error</a> named <a href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
+                  If the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                  <var>key</var> does not contain an entry that is <code>"verify"</code>, then <a href="#concept-return-an-error">return an error</a> named <a href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
                 </p>
               </li>
               <li>
@@ -1778,8 +1800,9 @@
               </li>
               <li>
                 <p>
-                  If the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>baseKey</var>
-                  does not contain an entry that is <code>"deriveKey"</code>, then <a href="#concept-return-an-error">return an error</a> named <a href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
+                  If the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                  <var>baseKey</var> does not contain an entry that is <code>"deriveKey"</code>,
+                  then <a href="#concept-return-an-error">return an error</a> named <a href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
                 </p>
               </li>
               <li>
@@ -1883,8 +1906,9 @@
               </li>
               <li>
                 <p>
-                  If the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>baseKey</var>
-                  does not contain an entry that is <code>"deriveBits"</code>, then <a href="#concept-return-an-error">return an error</a> named <a href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
+                  If the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                  <var>baseKey</var> does not contain an entry that is <code>"deriveBits"</code>,
+                  then <a href="#concept-return-an-error">return an error</a> named <a href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
                 </p>
               </li>
               <li>
@@ -2083,16 +2107,16 @@
               </li>
               <li>
                 <p>
-                  If the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                  <var>key</var> is false, then <a href="#concept-return-an-error">return an
+                  If the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                  of <var>key</var> is false, 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>result</var> be the result of performing the export key operation
-                  specified by the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                  attribute of <var>key</var> using <var>key</var> and <var>format</var>.
+                  specified by the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                  internal slot of <var>key</var> using <var>key</var> and <var>format</var>.
                 </p>
               </li>
               <li>
@@ -2170,37 +2194,36 @@
               </li>
               <li>
                 <p>
-                  If the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
+                  If the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                   <var>wrappingKey</var> does not contain an entry that is <code>"wrapKey"</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>
-                  If the algorithm identified by the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>key</var> does not
-                  support the export key operation, then <a href="#concept-return-an-error">return
-                  an error</a> named <a href="#dfn-NotSupportedError"><code>NotSupportedError</code></a>.
-                </p>
-              </li>
-              <li>
-                <p>
-                  If the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                  <var>key</var> is false, then <a href="#concept-return-an-error">return an
+                  If the algorithm identified by the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                  <var>key</var> does not support the export key operation, then <a href="#concept-return-an-error">return an error</a> named <a href="#dfn-NotSupportedError"><code>NotSupportedError</code></a>.
+                </p>
+              </li>
+              <li>
+                <p>
+                  If the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                  of <var>key</var> is false, 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>key</var> be the result of performing the export key operation
-                  specified the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
+                  Let <var>key</var> be the result of performing the export key operation specified
+                  the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
                   <var>key</var> using <var>key</var> and <var>format</var>.
                 </p>
               </li>
               <li>
                 <dl class="switch">
                   <dt>
-                    If <var>format</var> is equal to the strings <code>raw</code>, <code>pkcs8</code>,
-                    or <code>spki</code>:
+                    If <var>format</var> is equal to the strings <code>raw</code>,
+                    <code>pkcs8</code>, or <code>spki</code>:
                   </dt>
                   <dd>
                     Set <var>bytes</var> be set to <var>key</var>.
@@ -2376,7 +2399,7 @@
               </li>
               <li>
                 <p>
-                  If the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
+                  If the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                   <var>unwrappingKey</var> does not contain an entry that is
                   <code>"unwrapKey"</code>, then <a href="#concept-return-an-error">return an
                   error</a> named <a href="#dfn-InvalidAccessError"><code>InvalidAccessError</code></a>.
@@ -2384,10 +2407,9 @@
               </li>
               <li>
                 <p>
-                  If <var>format</var> is not a
-                  <a href="#dfn-RecognizedKeyFormats">recognized key
-                  format value</a>, then <a href="#concept-return-an-error">return an error</a> named
-                  <a href="#dfn-SyntaxError"><code>SyntaxError</code></a>.
+                  If <var>format</var> is not a <a href="#dfn-RecognizedKeyFormats">recognized key
+                  format value</a>, then <a href="#concept-return-an-error">return an error</a>
+                  named <a href="#dfn-SyntaxError"><code>SyntaxError</code></a>.
                 </p>
               </li>
               <li>
@@ -3165,17 +3187,16 @@
                 <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 signature generation operation defined in Section 8.2 of [<cite><a href="#RFC3447">RFC3447</a></cite>] with the key represented by <var>key</var>
+                      If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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 signature generation operation defined in Section 8.2 of [<cite><a href="#RFC3447">RFC3447</a></cite>] with the key represented by the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of <var>key</var>
                       as the signer's private key and the <a href="#concept-contents-of-arraybuffer">contents of <var>message</var></a> as
-                      <var>M</var> and using the hash function specified in the <a href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a> attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>key</var> as
-                      the Hash option for the EMSA-PKCS1-v1_5 encoding method.
+                      <var>M</var> and using the hash function specified in the <a href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a> attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>key</var> as the Hash option for the EMSA-PKCS1-v1_5 encoding method.
                     </p>
                   </li>
                   <li>
@@ -3199,20 +3220,21 @@
                 <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>.
+                      If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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 signature verification operation defined in Section 8.2 of
-                      [<cite><a href="#RFC3447">RFC3447</a></cite>] with the key represented by
+                      [<cite><a href="#RFC3447">RFC3447</a></cite>] with the key represented by the
+                      [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                       <var>key</var> as the signer's RSA public key and the <a href="#concept-contents-of-arraybuffer">contents of <var>message</var></a> as
                       <var>M</var> and the <a href="#concept-contents-of-arraybuffer">contents of
                       <var>signature</var></a> as <var>S</var> and using the hash function specified
-                      in the <a href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a> attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>key</var> as
-                      the Hash option for the EMSA-PKCS1-v1_5 encoding method.
+                      in the <a href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a> attribute of the
+                      [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>key</var> as the Hash option for the EMSA-PKCS1-v1_5 encoding method.
                     </p>
                   </li>
                   <li>
@@ -3321,28 +3343,27 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>[ "verify" ]</code>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>publicKey</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>publicKey</var> to true.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>publicKey</var> to be the <a href="#concept-usage-intersection">usage
+                      intersection</a> of <var>usages</var> and <code>[ "verify" ]</code>.
                     </p>
                   </li>
                   <li>
@@ -3353,25 +3374,25 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>privateKey</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>privateKey</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>privateKey</var> to be the <a href="#concept-usage-intersection">usage
                       intersection</a> of <var>usages</var> and <code>[ "sign" ]</code>.
                     </p>
@@ -3558,8 +3579,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> to <code>"public"</code>
+                              Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              of <var>key</var> to <code>"public"</code>
                             </p>
                           </li>
                         </ol>
@@ -3691,8 +3712,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> to <code>"private"</code>
+                              Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              of <var>key</var> to <code>"private"</code>
                             </p>
                           </li>
                         </ol>
@@ -3818,8 +3839,8 @@
                                   </li>
                                   <li>
                                     <p>
-                                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                      <var>key</var> to <code>"private"</code>
+                                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]]
+                                      internal slot of <var>key</var> to <code>"private"</code>
                                     </p>
                                   </li>
                                 </ol>
@@ -3843,8 +3864,8 @@
                                   </li>
                                   <li>
                                     <p>
-                                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                      <var>key</var> to <code>"public"</code>
+                                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]]
+                                      internal slot of <var>key</var> to <code>"public"</code>
                                     </p>
                                   </li>
                                 </ol>
@@ -3895,8 +3916,8 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                      <var>key</var> to <var>algorithm</var>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
                     </p>
                   </li>
                   <li>
@@ -3920,8 +3941,8 @@
                         <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>.
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              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>
@@ -3955,7 +3976,8 @@
                                   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>
+                                  represents the RSA public key represented by the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                                  <var>key</var>
                                 </p>
                               </li>
                             </ul>
@@ -3973,8 +3995,8 @@
                         <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>.
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              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>
@@ -4010,10 +4032,10 @@
                               </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>
+                                  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 represented by the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                                  <var>key</var>
                                 </p>
                                 <div class="ednote"><div class="ednoteHeader">Editorial note</div>
                                   <a href="#RFC5208">RFC 5208</a> specifies that the encoding of
@@ -4103,8 +4125,8 @@
                           <li>
                             <dl class="switch">
                               <dt>
-                                If the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                <var>key</var> is <code>"private"</code>:
+                                If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                                of <var>key</var> is <code>"private"</code>:
                               </dt>
                               <dd>
                                 <ol>
@@ -4119,11 +4141,10 @@
                                   </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
+                                      If the underlying RSA private key represented by the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot
+                                      of <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>
@@ -4137,8 +4158,8 @@
                           </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>.
+                              Set the <code>ext</code> attribute of <var>jwk</var> to the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                              of <var>key</var>.
                             </p>
                           </li>
                           <li>
@@ -4240,10 +4261,8 @@
                 <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>.
+                      If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>
@@ -4263,11 +4282,12 @@
                   </li>
                   <li>
                     <p>
-                      Perform the signature generation operation defined in Section 8.1 of [<cite><a href="#RFC3447">RFC3447</a></cite>] with the key represented by <var>key</var>
+                      Perform the signature generation operation defined in Section 8.1 of [<cite><a href="#RFC3447">RFC3447</a></cite>] with the key represented by the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of <var>key</var>
                       as the signer's private key, <var>K</var>, and the <a href="#concept-contents-of-arraybuffer">contents of <var>message</var></a> as
                       the message to be signed, <var>M</var>, and using the hash function specified
-                      by the <a href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a> attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>key</var> as
-                      the Hash option, MGF1 (defined in Section B.2.1 of [<cite><a href="#RFC3447">RFC3447</a></cite>]) as the MGF option and the <a href="#dfn-RsaPssParams-saltLength">saltLength</a> member of
+                      by the <a href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a> attribute of the
+                      [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>key</var> as the Hash option, MGF1 (defined in Section B.2.1 of [<cite><a href="#RFC3447">RFC3447</a></cite>]) as the MGF option and the <a href="#dfn-RsaPssParams-saltLength">saltLength</a> member of
                       <var>normalizedAlgorithm</var> as the salt length option for the
                       EMM-PSS-ENCODE operation.
                     </p>
@@ -4293,9 +4313,8 @@
                 <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>.
+                      If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>
@@ -4316,12 +4335,14 @@
                   <li>
                     <p>
                       Perform the signature verification operation defined in Section 8.1 of
-                      [<cite><a href="#RFC3447">RFC3447</a></cite>] with the key represented by
+                      [<cite><a href="#RFC3447">RFC3447</a></cite>] with the key represented by the
+                      [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                       <var>key</var> as the signer's RSA public key and the <a href="#concept-contents-of-arraybuffer">contents of <var>message</var></a> as
                       <var>M</var> and <a href="#concept-contents-of-arraybuffer">the contents of
                       <var>signature</var></a> as <var>S</var> and using the hash function specified
-                      by the <a href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a> attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>key</var> as
-                      the Hash option, MGF1 (defined in Section B.2.1 of [<cite><a href="#RFC3447">RFC3447</a></cite>]) as the MGF option and the <a href="#dfn-RsaPssParams-saltLength">saltLength</a> member of
+                      by the <a href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a> attribute of the
+                      [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>key</var> as the Hash option, MGF1 (defined in Section B.2.1 of [<cite><a href="#RFC3447">RFC3447</a></cite>]) as the MGF option and the <a href="#dfn-RsaPssParams-saltLength">saltLength</a> member of
                       <var>normalizedAlgorithm</var> as the salt length option for the
                       EMSA-PSS-VERIFY operation.
                     </p>
@@ -4433,25 +4454,25 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>publicKey</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>publicKey</var> to true.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>publicKey</var> to be the <a href="#concept-usage-intersection">usage
                       intersection</a> of <var>usages</var> and <code>[ "verify" ]</code>.
                     </p>
@@ -4464,28 +4485,27 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>[ "sign" ]</code>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>privateKey</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>privateKey</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>privateKey</var> to be the <a href="#concept-usage-intersection">usage
+                      intersection</a> of <var>usages</var> and <code>[ "sign" ]</code>.
                     </p>
                   </li>
                   <li>
@@ -4723,8 +4743,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> to <code>"public"</code>
+                              Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              of <var>key</var> to <code>"public"</code>
                             </p>
                           </li>
                         </ol>
@@ -4913,8 +4933,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> to <code>"private"</code>
+                              Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              of <var>key</var> to <code>"private"</code>
                             </p>
                           </li>
                         </ol>
@@ -5040,8 +5060,8 @@
                                   </li>
                                   <li>
                                     <p>
-                                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                      <var>key</var> to <code>"private"</code>
+                                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]]
+                                      internal slot of <var>key</var> to <code>"private"</code>
                                     </p>
                                   </li>
                                 </ol>
@@ -5065,8 +5085,8 @@
                                   </li>
                                   <li>
                                     <p>
-                                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                      <var>key</var> to <code>"public"</code>
+                                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]]
+                                      internal slot of <var>key</var> to <code>"public"</code>
                                     </p>
                                   </li>
                                 </ol>
@@ -5117,8 +5137,8 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                      <var>key</var> to <var>algorithm</var>
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>
                     </p>
                   </li>
                   <li>
@@ -5142,8 +5162,8 @@
                         <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>.
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              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>
@@ -5183,8 +5203,8 @@
                                           <dt>
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-1</code>:
+                                            the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-1</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -5195,8 +5215,8 @@
                                           <dt>
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-256</code>:
+                                            the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-256</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -5207,8 +5227,8 @@
                                           <dt>
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-384</code>:
+                                            the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-384</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -5219,8 +5239,8 @@
                                           <dt>
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-512</code>:
+                                            the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-512</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -5257,8 +5277,8 @@
                                         <p>
                                           Set the <var>saltLength</var> field to the length in
                                           octets of the digest algorithm identified by the <a href="#dfn-KeyAlgorithm-name">name</a> attribute of the <a href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a> attribute
-                                          of the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                          attribute of <var>key</var>.
+                                          of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                          internal slot of <var>key</var>.
                                         </p>
                                       </li>
                                     </ul>
@@ -5270,7 +5290,8 @@
                                   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>
+                                  represents the RSA public key represented by the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                                  <var>key</var>
                                 </p>
                               </li>
                             </ul>
@@ -5288,8 +5309,8 @@
                         <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>.
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              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>
@@ -5334,8 +5355,8 @@
                                           <dt>
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-1</code>:
+                                            the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-1</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -5346,8 +5367,8 @@
                                           <dt>
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-256</code>:
+                                            the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-256</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -5358,8 +5379,8 @@
                                           <dt>
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-384</code>:
+                                            the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-384</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -5370,8 +5391,8 @@
                                           <dt>
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-512</code>:
+                                            the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-512</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -5408,8 +5429,8 @@
                                         <p>
                                           Set the <var>saltLength</var> field to the length in
                                           octets of the digest algorithm identified by the <a href="#dfn-KeyAlgorithm-name">name</a> attribute of the <a href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a> attribute
-                                          of the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                          attribute of <var>key</var>.
+                                          of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                          internal slot of <var>key</var>.
                                         </p>
                                       </li>
                                     </ul>
@@ -5418,10 +5439,10 @@
                               </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>
+                                  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 represented by the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                                  <var>key</var>
                                 </p>
                                 <div class="ednote"><div class="ednoteHeader">Editorial note</div>
                                   <a href="#RFC5208">RFC 5208</a> specifies that the encoding of
@@ -5455,8 +5476,8 @@
                             <p>
                               Let <var>hash</var> be the <a href="#dfn-KeyAlgorithm-name">name</a>
                               attribute of the <a href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a>
-                              attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                              attribute of <var>key</var>.
+                              attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                              <var>key</var>.
                             </p>
                           </li>
                           <li>
@@ -5508,7 +5529,7 @@
                           <li>
                             <dl class="switch">
                               <dt>
-                                If the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                                If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
                                 <var>key</var> is <code>"private"</code>:
                               </dt>
                               <dd>
@@ -5524,11 +5545,10 @@
                                   </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
+                                      If the underlying RSA private key represented by the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot
+                                      of <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>
@@ -5542,8 +5562,8 @@
                           </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>.
+                              Set the <code>ext</code> attribute of <var>jwk</var> to the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                              of <var>key</var>.
                             </p>
                           </li>
                           <li>
@@ -5646,7 +5666,7 @@
                 <ol>
                   <li>
                     <p>
-                      If the <a href="#dfn-CryptoKey-type">type</a> attribute of <var>key</var>
+                      If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>.
@@ -5674,7 +5694,7 @@
                       as the message to be encrypted, <var>M</var> and the <a href="#concept-contents-of-arraybuffer">contents of</a> <a href="#dfn-RsaOaepParams-label">label</a> member of
                       <var>normalizedAlgorithm</var> as the label, <var>L</var>, and with the hash
                       function specified by the <a href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a>
-                      attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
+                      attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
                       <var>key</var> as the Hash option and MGF1 (defined in Section B.2.1 of
                       [<cite><a href="#RFC3447">RFC3447</a></cite>]) as the MGF option.
                     </p>
@@ -5700,7 +5720,7 @@
                 <ol>
                   <li>
                     <p>
-                      If the <a href="#dfn-CryptoKey-type">type</a> attribute of <var>key</var>
+                      If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>.
@@ -5728,7 +5748,7 @@
                       as the ciphertext to be decrypted, C, and the <a href="#concept-contents-of-arraybuffer">contents of</a> the <a href="#dfn-RsaOaepParams-label">label</a> member of
                       <var>normalizedAlgorithm</var> as the label, <var>L</var>, and with the hash
                       function specified by the <a href="#dfn-RsaHashedKeyAlgorithm-hash">hash</a>
-                      attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
+                      attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
                       <var>key</var> as the Hash option and MGF1 (defined in Section B.2.1 of
                       [<cite><a href="#RFC3447">RFC3447</a></cite>]) as the MGF option.
                     </p>
@@ -5840,25 +5860,25 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
                       <var>publicKey</var> to <code>"public"</code>
                     </p>
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
                       <var>publicKey</var> to <var>algorithm</var>.
                     </p>
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot of
                       <var>publicKey</var> to true.
                     </p>
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>publicKey</var> to be the
                       <a href="#concept-usage-intersection">usage intersection</a> of
                       <var>usages</var> and <code>[ "encrypt", "wrapKey" ]</code>.
@@ -5872,25 +5892,25 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
                       <var>privateKey</var> to <code>"private"</code>
                     </p>
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
                       <var>privateKey</var> to <var>algorithm</var>.
                     </p>
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot of
                       <var>privateKey</var> to <var>extractable</var>.
                     </p>
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>privateKey</var> to be the
                       <a href="#concept-usage-intersection">usage intersection</a> of
                       <var>usages</var> and <code>[ "decrypt", "unwrapKey" ]</code>.
@@ -6130,7 +6150,7 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                              Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
                               <var>key</var> to <code>"public"</code>
                             </p>
                           </li>
@@ -6321,7 +6341,7 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                              Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
                               <var>key</var> to <code>"private"</code>
                             </p>
                           </li>
@@ -6425,7 +6445,7 @@
                                   </li>
                                   <li>
                                     <p>
-                                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
                                       <var>key</var> to <code>"private"</code>
                                     </p>
                                   </li>
@@ -6450,7 +6470,7 @@
                                   </li>
                                   <li>
                                     <p>
-                                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
                                       <var>key</var> to <code>"public"</code>
                                     </p>
                                   </li>
@@ -6502,7 +6522,7 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
                       <var>key</var> to <var>algorithm</var>
                     </p>
                   </li>
@@ -6527,7 +6547,7 @@
                         <ol>
                           <li>
                             <p>
-                              If the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>
@@ -6568,8 +6588,8 @@
                                           <dt>
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-1</code>:
+                                            the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-1</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -6580,8 +6600,8 @@
                                           <dt>
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-256</code>:
+                                            the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-256</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -6592,8 +6612,8 @@
                                           <dt>
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-384</code>:
+                                            the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-384</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -6604,8 +6624,8 @@
                                           <dt>
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-512</code>:
+                                            the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-512</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -6647,7 +6667,8 @@
                                   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>
+                                  represents the RSA public key represented by the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                                  <var>key</var>
                                 </p>
                               </li>
                             </ul>
@@ -6665,7 +6686,7 @@
                         <ol>
                           <li>
                             <p>
-                              If the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>
@@ -6711,8 +6732,8 @@
                                           <dt>
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-1</code>:
+                                            the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-1</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -6723,8 +6744,8 @@
                                           <dt>
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-256</code>:
+                                            the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-256</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -6735,8 +6756,8 @@
                                           <dt>
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-384</code>:
+                                            the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-384</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -6747,8 +6768,8 @@
                                           <dt>
                                             If the <a href="#dfn-KeyAlgorithm-name">name</a>
                                             attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                            the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                            attribute of <var>key</var> is <code>SHA-512</code>:
+                                            the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                            internal slot of <var>key</var> is <code>SHA-512</code>:
                                           </dt>
                                           <dd>
                                             <p>
@@ -6787,10 +6808,10 @@
                               </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>
+                                  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 represented by the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                                  <var>key</var>
                                 </p>
                                 <div class="ednote"><div class="ednoteHeader">Editorial note</div>
                                   <a href="#RFC5208">RFC 5208</a> specifies that the encoding of
@@ -6828,9 +6849,7 @@
                           <li>
                             <dl class="switch">
                               <dt>
-                                If the <a href="#dfn-KeyAlgorithm-name">name</a>
-                                attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute
+                                If the <a href="#dfn-KeyAlgorithm-name">name</a> attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot
                                 of <var>key</var> is <code>SHA-1</code>:
                               </dt>
                               <dd>
@@ -6840,9 +6859,7 @@
                                 </p>
                               </dd>
                               <dt>
-                                If the <a href="#dfn-KeyAlgorithm-name">name</a>
-                                attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute
+                                If the <a href="#dfn-KeyAlgorithm-name">name</a> attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot
                                 of <var>key</var> is <code>SHA-256</code>:
                               </dt>
                               <dd>
@@ -6852,9 +6869,7 @@
                                 </p>
                               </dd>
                               <dt>
-                                If the <a href="#dfn-KeyAlgorithm-name">name</a>
-                                attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute
+                                If the <a href="#dfn-KeyAlgorithm-name">name</a> attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot
                                 of <var>key</var> is <code>SHA-384</code>:
                               </dt>
                               <dd>
@@ -6864,9 +6879,7 @@
                                 </p>
                               </dd>
                               <dt>
-                                If the <a href="#dfn-KeyAlgorithm-name">name</a>
-                                attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of
-                                the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute
+                                If the <a href="#dfn-KeyAlgorithm-name">name</a> attribute of the <a href="#dfn-RsaHashedKeyAlgorithm">hash</a> attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot
                                 of <var>key</var> is <code>SHA-512</code>:
                               </dt>
                               <dd>
@@ -6887,8 +6900,8 @@
                           <li>
                             <dl class="switch">
                               <dt>
-                                If the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                <var>key</var> is <code>"private"</code>:
+                                If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                                of <var>key</var> is <code>"private"</code>:
                               </dt>
                               <dd>
                                 <ol>
@@ -6903,11 +6916,10 @@
                                   </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
+                                      If the underlying RSA private key represented by the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot
+                                      of <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>
@@ -6921,8 +6933,8 @@
                           </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>.
+                              Set the <code>ext</code> attribute of <var>jwk</var> to the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                              of <var>key</var>.
                             </p>
                           </li>
                           <li>
@@ -7068,9 +7080,8 @@
                 <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>.
+                      If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>
@@ -7163,10 +7174,8 @@
                 <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>.
+                      If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>
@@ -7309,25 +7318,25 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>publicKey</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>publicKey</var> to true.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>publicKey</var> to be the empty list.
                     </p>
                   </li>
@@ -7339,28 +7348,27 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>[ "sign", "verify" ]</code>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>privateKey</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>privateKey</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>privateKey</var> to be the <a href="#concept-usage-intersection">usage
+                      intersection</a> of <var>usages</var> and <code>[ "sign", "verify" ]</code>.
                     </p>
                   </li>
                   <li>
@@ -7511,8 +7519,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> to <code>"public"</code>
+                              Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              of <var>key</var> to <code>"public"</code>
                             </p>
                           </li>
                           <li>
@@ -7534,8 +7542,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                              <var>key</var> to <var>algorithm</var>.
+                              Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                              internal slot of <var>key</var> to <var>algorithm</var>.
                             </p>
                           </li>
                         </ol>
@@ -7678,8 +7686,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> to <code>"private"</code>
+                              Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              of <var>key</var> to <code>"private"</code>
                             </p>
                           </li>
                           <li>
@@ -7701,8 +7709,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                              <var>key</var> to <var>algorithm</var>.
+                              Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                              internal slot of <var>key</var> to <var>algorithm</var>.
                             </p>
                           </li>
                         </ol>
@@ -7828,8 +7836,8 @@
                                   </li>
                                   <li>
                                     <p>
-                                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                      <var>Key</var> to <code>"private"</code>.
+                                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]]
+                                      internal slot of <var>Key</var> to <code>"private"</code>.
                                     </p>
                                   </li>
                                 </ol>
@@ -7852,8 +7860,8 @@
                                   </li>
                                   <li>
                                     <p>
-                                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                      <var>Key</var> to <code>"public"</code>.
+                                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]]
+                                      internal slot of <var>Key</var> to <code>"public"</code>.
                                     </p>
                                   </li>
                                 </ol>
@@ -7879,8 +7887,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                              <var>key</var> to <var>algorithm</var>.
+                              Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                              internal slot of <var>key</var> to <var>algorithm</var>.
                             </p>
                           </li>
                         </ol>
@@ -7907,7 +7915,8 @@
                 <ol>
                   <li>
                     <p>
-                      Let <var>key</var> be the <a href="#dfn-CryptoKey">CryptoKey</a> to be exported.
+                      Let <var>key</var> be the <a href="#dfn-CryptoKey">CryptoKey</a> to be
+                      exported.
                     </p>
                   </li>
                   <li>
@@ -7917,8 +7926,8 @@
                         <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>.
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              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>
@@ -7948,8 +7957,8 @@
                                     <dl class="switch">
                                       <dt>
                                         If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-256"</code>:
+                                        attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-256"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -7960,8 +7969,8 @@
                                       </dd>
                                       <dt>
                                         If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-384"</code>:
+                                        attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-384"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -7972,8 +7981,8 @@
                                       </dd>
                                       <dt>
                                         If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-521"</code>:
+                                        attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-521"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -7989,7 +7998,7 @@
                               <li>
                                 <p>
                                   Set the <var>subjectPublicKey</var> field to the octet string that
-                                  represents the Elliptic Curve public key identified by
+                                  represents the Elliptic Curve public key represented by the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                                   <var>key</var> according to the encoding rules specified in
                                   Section 2.2 of <a href="#RFC5480">RFC 5480</a> and using the
                                   uncompressed form.
@@ -8010,8 +8019,8 @@
                         <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>.
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              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>
@@ -8046,8 +8055,8 @@
                                     <dl class="switch">
                                       <dt>
                                         If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-256"</code>:
+                                        attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-256"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -8058,8 +8067,8 @@
                                       </dd>
                                       <dt>
                                         If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-384"</code>:
+                                        attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-384"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -8070,8 +8079,8 @@
                                       </dd>
                                       <dt>
                                         If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-521"</code>:
+                                        attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-521"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -8089,8 +8098,8 @@
                                   Set the <var>privateKey</var> field to the result of DER-encoding
                                   an instance of the <code>ECPrivateKey</code> structure defined in
                                   Section 3 of <a href="#RFC5915">RFC 5915</a> for the Elliptic
-                                  Curve private key represented by <var>key</var> and that conforms
-                                  to the following:
+                                  Curve private key represented by the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                                  <var>key</var> and that conforms to the following:
                                 </p>
                                 <ul>
                                   <li>
@@ -8105,7 +8114,8 @@
                                     <p>
                                       The <var>publicKey</var> field is present and represents the
                                       Elliptic Curve public key associated with the Elliptic Curve
-                                      private key represented by <var>key</var>.
+                                      private key represented by the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot
+                                      of <var>key</var>.
                                     </p>
                                   </li>
                                 </ul>
@@ -8139,8 +8149,8 @@
                             <dl class="switch">
                               <dt>
                                 If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                attribute of <var>key</var> is <code>P-256</code>:
+                                attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot
+                                of <var>key</var> is <code>P-256</code>:
                               </dt>
                               <dd>
                                 Set the <code>crv</code> attribute of <var>jwk</var> to
@@ -8148,8 +8158,8 @@
                               </dd>
                               <dt>
                                 If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                attribute of <var>key</var> is <code>P-384</code>:
+                                attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot
+                                of <var>key</var> is <code>P-384</code>:
                               </dt>
                               <dd>
                                 Set the <code>crv</code> attribute of <var>jwk</var> to
@@ -8157,8 +8167,8 @@
                               </dd>
                               <dt>
                                 If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                attribute of <var>key</var> is <code>P-521</code>:
+                                attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot
+                                of <var>key</var> is <code>P-521</code>:
                               </dt>
                               <dd>
                                 Set the <code>crv</code> attribute of <var>jwk</var> to
@@ -8183,13 +8193,13 @@
                           <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>
-                                <p>
-                                  Set the <code>d</code> attribute of <var>jwk</var> according to the
-                                  definition in Section 6.2.2.1 of <a href="#jwa">JSON Web
+                                If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                                of <var>key</var> is <code>private</code>
+                              </dt>
+                              <dd>
+                                <p>
+                                  Set the <code>d</code> attribute of <var>jwk</var> according to
+                                  the definition in Section 6.2.2.1 of <a href="#jwa">JSON Web
                                   Algorithms</a>.
                                 </p>
                               </dd>
@@ -8197,14 +8207,13 @@
                           </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>.
+                              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-slot-extractable">extractable</a>]] internal slot
+                              of <var>key</var>.
                             </p>
                           </li>
                           <li>
@@ -8324,8 +8333,7 @@
                   </li>
                   <li>
                     <p>
-                      Generate an Elliptic Curve key pair, as defined in [<a href="#X9.63">X9.63</a>]
-                      with domain parameters for the curve identified by
+                      Generate an Elliptic Curve key pair, as defined in [<a href="#X9.63">X9.63</a>] with domain parameters for the curve identified by
                       the <a href="#dfn-EcKeyGenParams-namedCurve">namedCurve</a> member of
                       <var>normalizedAlgorithm</var>.
                     </p>
@@ -8360,31 +8368,31 @@
                   </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
+                      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-slot-type">type</a>]] internal slot of
+                      <var>publicKey</var> to <code>"public"</code>
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>publicKey</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>publicKey</var> to true.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>publicKey</var> to be the empty list.
                     </p>
                   </li>
@@ -8396,25 +8404,25 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>privateKey</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>privateKey</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>privateKey</var> to be the
                       <a href="#concept-usage-intersection">usage intersection</a> of
                       <var>usages</var> and <code>[ "deriveKey", "deriveBits" ]</code>.
@@ -8451,10 +8459,8 @@
                 <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>.
+                      If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>
@@ -8481,29 +8487,31 @@
                   </li>
                   <li>
                     <p>
-                      If the <a href="#dfn-KeyAlgorithm-name">name</a> attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
+                      If the <a href="#dfn-KeyAlgorithm-name">name</a> attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
                       <var>publicKey</var> is not <code>"ECDH"</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>
-                      If the <a href="#dfn-CryptoKey-type">type</a> attribute of
+                      If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
                       <var>publicKey</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>
                       If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a> attribute of
-                      the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                      <var>publicKey</var> is not equal to the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a> property of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>key</var>,
-                      then <a href="#concept-return-an-error">return an error</a> named <a href="#dfn-DataError"><code>DataError</code></a>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Perform the ECDH primitive specified in <a href="#X9.63">X9.63</a> Section 5.4.1
-                      with <var>key</var> as the EC private key <var>d</var> and the EC public key
-                      represented by <var>publicKey</var> as the EC public key <var>Q</var>.
+                      the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>publicKey</var> is not equal to the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a> property of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>key</var>, then <a href="#concept-return-an-error">return an error</a>
+                      named <a href="#dfn-DataError"><code>DataError</code></a>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Perform the ECDH primitive specified in <a href="#X9.63">X9.63</a> Section
+                      5.4.1 with <var>key</var> as the EC private key <var>d</var> and the EC public
+                      key represented by the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]]
+                      internal slot of <var>publicKey</var> as the EC public key <var>Q</var>.
                     </p>
                   </li>
                   <li>
@@ -8668,8 +8676,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> to <code>"public"</code>
+                              Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              of <var>key</var> to <code>"public"</code>
                             </p>
                           </li>
                           <li>
@@ -8691,8 +8699,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                              <var>key</var> to <var>algorithm</var>.
+                              Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                              internal slot of <var>key</var> to <var>algorithm</var>.
                             </p>
                           </li>
                         </ol>
@@ -8838,8 +8846,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> to <code>"private"</code>.
+                              Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              of <var>key</var> to <code>"private"</code>.
                             </p>
                           </li>
                           <li>
@@ -8861,8 +8869,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                              <var>key</var> to <var>algorithm</var>.
+                              Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                              internal slot of <var>key</var> to <var>algorithm</var>.
                             </p>
                           </li>
                         </ol>
@@ -8947,8 +8955,8 @@
                                   </li>
                                   <li>
                                     <p>
-                                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                      <var>Key</var> to <code>"private"</code>.
+                                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]]
+                                      internal slot of <var>Key</var> to <code>"private"</code>.
                                     </p>
                                   </li>
                                 </ol>
@@ -8971,8 +8979,8 @@
                                   </li>
                                   <li>
                                     <p>
-                                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                      <var>Key</var> to <code>"public"</code>.
+                                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]]
+                                      internal slot of <var>Key</var> to <code>"public"</code>.
                                     </p>
                                   </li>
                                 </ol>
@@ -8998,8 +9006,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                              <var>key</var> to <var>algorithm</var>.
+                              Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                              internal slot of <var>key</var> to <var>algorithm</var>.
                             </p>
                           </li>
                         </ol>
@@ -9072,26 +9080,26 @@
                           </li>
                           <li>
                             <p>
-                              Set the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                              <var>key</var> to <code>"public"</code>
-                            </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>
-                              Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
-                              <var>key</var> to <var>usages</var>.
-                            </p>
-                          </li>
-                          <li>
-                            <p>
-                              Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute
-                              of <var>key</var> to <var>extractable</var>.
+                              Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              of <var>key</var> to <code>"public"</code>
+                            </p>
+                          </li>
+                          <li>
+                            <p>
+                              Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                              internal slot of <var>key</var> to <var>algorithm</var>.
+                            </p>
+                          </li>
+                          <li>
+                            <p>
+                              Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal
+                              slot of <var>key</var> to <var>usages</var>.
+                            </p>
+                          </li>
+                          <li>
+                            <p>
+                              Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]]
+                              internal slot of <var>key</var> to <var>extractable</var>.
                             </p>
                           </li>
                         </ol>
@@ -9129,8 +9137,8 @@
                         <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>.
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              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>
@@ -9160,8 +9168,8 @@
                                     <dl class="switch">
                                       <dt>
                                         If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-256"</code>:
+                                        attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-256"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -9172,8 +9180,8 @@
                                       </dd>
                                       <dt>
                                         If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-384"</code>:
+                                        attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-384"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -9184,8 +9192,8 @@
                                       </dd>
                                       <dt>
                                         If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-521"</code>:
+                                        attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-521"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -9201,7 +9209,7 @@
                               <li>
                                 <p>
                                   Set the <var>subjectPublicKey</var> field to the octet string that
-                                  represents the Elliptic Curve public key identified by
+                                  represents the Elliptic Curve public key represented by the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                                   <var>key</var> according to the encoding rules specified in
                                   Section 2.2 of <a href="#RFC5480">RFC 5480</a> and using the
                                   uncompressed form.
@@ -9216,8 +9224,8 @@
                         <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>.
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              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>
@@ -9252,8 +9260,8 @@
                                     <dl class="switch">
                                       <dt>
                                         If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-256"</code>:
+                                        attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-256"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -9264,8 +9272,8 @@
                                       </dd>
                                       <dt>
                                         If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-384"</code>:
+                                        attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-384"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -9276,8 +9284,8 @@
                                       </dd>
                                       <dt>
                                         If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                        attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                        <var>key</var> is <code>"P-521"</code>:
+                                        attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                        internal slot of <var>key</var> is <code>"P-521"</code>:
                                       </dt>
                                       <dd>
                                         <p>
@@ -9295,8 +9303,8 @@
                                   Set the <var>privateKey</var> field to the result of DER-encoding
                                   an instance of the <code>ECPrivateKey</code> structure defined in
                                   Section 3 of <a href="#RFC5915">RFC 5915</a> for the Elliptic
-                                  Curve private key represented by <var>key</var> and that conforms
-                                  to the following:
+                                  Curve private key represented by the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                                  <var>key</var> and that conforms to the following:
                                 </p>
                                 <ul>
                                   <li>
@@ -9311,7 +9319,8 @@
                                     <p>
                                       The <var>publicKey</var> field is present and represents the
                                       Elliptic Curve public key associated with the Elliptic Curve
-                                      private key represented by <var>key</var>.
+                                      private key represented by the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot
+                                      of <var>key</var>.
                                     </p>
                                   </li>
                                 </ul>
@@ -9339,8 +9348,8 @@
                             <dl class="switch">
                               <dt>
                                 If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                attribute of <var>key</var> is <code>P-256</code>:
+                                attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot
+                                of <var>key</var> is <code>P-256</code>:
                               </dt>
                               <dd>
                                 Set the <code>crv</code> attribute of <var>jwk</var> to
@@ -9348,8 +9357,8 @@
                               </dd>
                               <dt>
                                 If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                attribute of <var>key</var> is <code>P-384</code>:
+                                attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot
+                                of <var>key</var> is <code>P-384</code>:
                               </dt>
                               <dd>
                                 Set the <code>crv</code> attribute of <var>jwk</var> to
@@ -9357,8 +9366,8 @@
                               </dd>
                               <dt>
                                 If the <a href="#dfn-EcKeyAlgorithm-namedCurve">namedCurve</a>
-                                attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                attribute of <var>key</var> is <code>P-521</code>:
+                                attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot
+                                of <var>key</var> is <code>P-521</code>:
                               </dt>
                               <dd>
                                 Set the <code>crv</code> attribute of <var>jwk</var> to
@@ -9383,8 +9392,8 @@
                           <li>
                             <dl class="switch">
                               <dt>
-                                If the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                <var>key</var> is <code>private</code>
+                                If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                                of <var>key</var> is <code>private</code>
                               </dt>
                               <dd>
                                 <p>
@@ -9403,8 +9412,8 @@
                           </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>.
+                              Set the <code>ext</code> attribute of <var>jwk</var> to the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                              of <var>key</var>.
                             </p>
                           </li>
                           <li>
@@ -9422,14 +9431,15 @@
                         <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>.
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              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 an octet string representing the Elliptic Curve
-                              point <var>Q</var> represented by <var>key</var> according to <a href="#X9.62">X9.62</a> Annex A.
+                              point <var>Q</var> represented by [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                              <var>key</var> according to <a href="#X9.62">X9.62</a> Annex A.
                             </p>
                           </li>
                           <li>
@@ -9757,19 +9767,19 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute
-                      of <var>key</var> to be <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to be <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>key</var> to be <var>usages</var>.
                     </p>
                   </li>
@@ -9926,21 +9936,21 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                      <var>key</var> to <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var>
-                      to the <a href="#concept-normalized-usages">normalized value</a> of
-                      <var>usages</var>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                      value</a> of <var>usages</var>.
                     </p>
                   </li>
                   <li>
@@ -9960,7 +9970,7 @@
                         <ol>
                           <li>
                             <p>
-                              Let <var>data</var> be the raw octets of the key represented by
+                              Let <var>data</var> be the raw octets of the key represented by [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                               <var>key</var>.
                             </p>
                           </li>
@@ -9990,9 +10000,8 @@
                           <li>
                             <p>
                               Set the <code>k</code> attribute of <var>jwk</var> to be a string
-                              containing the raw octets
-                              of the key represented by <var>key</var>, encoded according to
-                              Section 6.4 of <a href="#jwa">JSON Web Algorithms</a>.
+                              containing the raw octets of the key represented by [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                              <var>key</var>, encoded according to Section 6.4 of <a href="#jwa">JSON Web Algorithms</a>.
                             </p>
                           </li>
                           <li>
@@ -10014,18 +10023,18 @@
                           <li>
                             <p>
                               Set the <code>key_ops</code> attribute of <var>jwk</var> to equal 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 equal the 
-                              <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
+                              [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                               <var>key</var>.
                             </p>
                           </li>
                           <li>
                             <p>
+                              Set the <code>ext</code> attribute of <var>jwk</var> to equal the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                              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>
@@ -10348,19 +10357,19 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute
-                      of <var>key</var> to be <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to be <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>key</var> to be <var>usages</var>.
                     </p>
                   </li>
@@ -10518,21 +10527,21 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                      <var>key</var> to <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var>
-                      to the <a href="#concept-normalized-usages">normalized value</a> of
-                      <var>usages</var>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                      value</a> of <var>usages</var>.
                     </p>
                   </li>
                   <li>
@@ -10552,7 +10561,7 @@
                         <ol>
                           <li>
                             <p>
-                              Let <var>data</var> be the raw octets of the key represented by
+                              Let <var>data</var> be the raw octets of the key represented by [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                               <var>key</var>.
                             </p>
                           </li>
@@ -10582,9 +10591,8 @@
                           <li>
                             <p>
                               Set the <code>k</code> attribute of <var>jwk</var> to be a string
-                              containing the raw octets
-                              of the key represented by <var>key</var>, encoded according to
-                              Section 6.4 of <a href="#jwa">JSON Web Algorithms</a>.
+                              containing the raw octets of the key represented by [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                              <var>key</var>, encoded according to Section 6.4 of <a href="#jwa">JSON Web Algorithms</a>.
                             </p>
                           </li>
                           <li>
@@ -10611,9 +10619,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <code>ext</code> attribute of <var>jwk</var> to equal the 
-                              <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                              <var>key</var>.
+                              Set the <code>ext</code> attribute of <var>jwk</var> to equal the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                              of <var>key</var>.
                             </p>
                           </li>
                           <li>
@@ -10893,19 +10900,19 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute
-                      of <var>key</var> to be <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to be <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>key</var> to be <var>usages</var>.
                     </p>
                   </li>
@@ -11062,21 +11069,21 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                      <var>key</var> to <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var>
-                      to the <a href="#concept-normalized-usages">normalized value</a> of
-                      <var>usages</var>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                      value</a> of <var>usages</var>.
                     </p>
                   </li>
                   <li>
@@ -11096,7 +11103,7 @@
                         <ol>
                           <li>
                             <p>
-                              Let <var>data</var> be the raw octets of the key represented by
+                              Let <var>data</var> be the raw octets of the key represented by [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                               <var>key</var>.
                             </p>
                           </li>
@@ -11126,9 +11133,8 @@
                           <li>
                             <p>
                               Set the <code>k</code> attribute of <var>jwk</var> to be a string
-                              containing the raw octets
-                              of the key represented by <var>key</var>, encoded according to
-                              Section 6.4 of <a href="#jwa">JSON Web Algorithms</a>.
+                              containing the raw octets of the key represented by [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                              <var>key</var>, encoded according to Section 6.4 of <a href="#jwa">JSON Web Algorithms</a>.
                             </p>
                           </li>
                           <li>
@@ -11150,18 +11156,18 @@
                           <li>
                             <p>
                               Set the <code>key_ops</code> attribute of <var>jwk</var> to equal 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 equal the 
-                              <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
+                              <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 equal the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                              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>
@@ -11568,19 +11574,19 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute
-                      of <var>key</var> to be <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to be <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>key</var> to be <var>usages</var>.
                     </p>
                   </li>
@@ -11738,21 +11744,21 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                      <var>key</var> to <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var>
-                      to the <a href="#concept-normalized-usages">normalized value</a> of
-                      <var>usages</var>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                      value</a> of <var>usages</var>.
                     </p>
                   </li>
                   <li>
@@ -11772,7 +11778,7 @@
                         <ol>
                           <li>
                             <p>
-                              Let <var>data</var> be the raw octets of the key represented by
+                              Let <var>data</var> be the raw octets of the key represented by [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                               <var>key</var>.
                             </p>
                           </li>
@@ -11802,9 +11808,8 @@
                           <li>
                             <p>
                               Set the <code>k</code> attribute of <var>jwk</var> to be a string
-                              containing the raw octets
-                              of the key represented by <var>key</var>, encoded according to
-                              Section 6.4 of <a href="#jwa">JSON Web Algorithms</a>.
+                              containing the raw octets of the key represented by [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                              <var>key</var>, encoded according to Section 6.4 of <a href="#jwa">JSON Web Algorithms</a>.
                             </p>
                           </li>
                           <li>
@@ -11826,18 +11831,18 @@
                           <li>
                             <p>
                               Set the <code>key_ops</code> attribute of <var>jwk</var> to equal 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 equal the 
-                              <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
+                              <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 equal the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                              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>
@@ -12134,19 +12139,19 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute
-                      of <var>key</var> to be <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to be <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>key</var> to be <var>usages</var>.
                     </p>
                   </li>
@@ -12304,21 +12309,21 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                      <var>key</var> to <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var>
-                      to the <a href="#concept-normalized-usages">normalized value</a> of
-                      <var>usages</var>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                      value</a> of <var>usages</var>.
                     </p>
                   </li>
                   <li>
@@ -12338,7 +12343,7 @@
                         <ol>
                           <li>
                             <p>
-                              Let <var>data</var> be the raw octets of the key represented by
+                              Let <var>data</var> be the raw octets of the key represented by [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                               <var>key</var>.
                             </p>
                           </li>
@@ -12368,9 +12373,8 @@
                           <li>
                             <p>
                               Set the <code>k</code> attribute of <var>jwk</var> to be a string
-                              containing the raw octets
-                              of the key represented by <var>key</var>, encoded according to
-                              Section 6.4 of <a href="#jwa">JSON Web Algorithms</a>.
+                              containing the raw octets of the key represented by [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                              <var>key</var>, encoded according to Section 6.4 of <a href="#jwa">JSON Web Algorithms</a>.
                             </p>
                           </li>
                           <li>
@@ -12392,18 +12396,18 @@
                           <li>
                             <p>
                               Set the <code>key_ops</code> attribute of <var>jwk</var> to equal 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 equal the 
-                              <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
+                              <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 equal the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                              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>
@@ -12641,19 +12645,19 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute
-                      of <var>key</var> to be <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to be <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>key</var> to be <var>usages</var>.
                     </p>
                   </li>
@@ -12811,21 +12815,21 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                      <var>key</var> to <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var>
-                      to the <a href="#concept-normalized-usages">normalized value</a> of
-                      <var>usages</var>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                      value</a> of <var>usages</var>.
                     </p>
                   </li>
                   <li>
@@ -12845,7 +12849,7 @@
                         <ol>
                           <li>
                             <p>
-                              Let <var>data</var> be the raw octets of the key represented by
+                              Let <var>data</var> be the raw octets of the key represented by [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                               <var>key</var>.
                             </p>
                           </li>
@@ -12875,9 +12879,8 @@
                           <li>
                             <p>
                               Set the <code>k</code> attribute of <var>jwk</var> to be a string
-                              containing the raw octets
-                              of the key represented by <var>key</var>, encoded according to
-                              Section 6.4 of <a href="#jwa">JSON Web Algorithms</a>.
+                              containing the raw octets of the key represented by [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                              <var>key</var>, encoded according to Section 6.4 of <a href="#jwa">JSON Web Algorithms</a>.
                             </p>
                           </li>
                           <li>
@@ -12904,9 +12907,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <code>ext</code> attribute of <var>jwk</var> to equal the 
-                              <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                              <var>key</var>.
+                              Set the <code>ext</code> attribute of <var>jwk</var> to equal the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                              of <var>key</var>.
                             </p>
                           </li>
                           <li>
@@ -13079,8 +13081,9 @@
                     <p>
                       Let <var>mac</var> be the result of performing the MAC Generation operation
                       described in Section 4 of [<a href="#fips-pub-198-1">FIPS PUB 198-1</a>] using
-                      the key represented by <var>key</var>, the hash function identified by the <a href="#dfn-HmacKeyAlgorithm-hash">hash</a> attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>key</var> and
-                      <var>message</var> as the input data <var>text</var>.
+                      the key represented by [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]]
+                      internal slot of <var>key</var>, the hash function identified by the <a href="#dfn-HmacKeyAlgorithm-hash">hash</a> attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>key</var> and <var>message</var> as the input data <var>text</var>.
                     </p>
                   </li>
                   <li>
@@ -13097,8 +13100,9 @@
                     <p>
                       Let <var>mac</var> be the result of performing the MAC Generation operation
                       described in Section 4 of [<a href="#fips-pub-198-1">FIPS PUB 198-1</a>] using
-                      the key represented by <var>key</var>, the hash function identified by the <a href="#dfn-HmacKeyAlgorithm-hash">hash</a> attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>key</var> and
-                      <var>message</var> as the input data <var>text</var>.
+                      the key represented by [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]]
+                      internal slot of <var>key</var>, the hash function identified by the <a href="#dfn-HmacKeyAlgorithm-hash">hash</a> attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>key</var> and <var>message</var> as the input data <var>text</var>.
                     </p>
                   </li>
                   <li>
@@ -13214,19 +13218,19 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute
-                      of <var>key</var> to be <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to be <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>key</var> to be <var>usages</var>.
                     </p>
                   </li>
@@ -13559,21 +13563,21 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                      <var>key</var> to <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var>
-                      to the <a href="#concept-normalized-usages">normalized value</a> of
-                      <var>usages</var>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                      value</a> of <var>usages</var>.
                     </p>
                   </li>
                   <li>
@@ -13593,7 +13597,7 @@
                         <ol>
                           <li>
                             <p>
-                              Let <var>data</var> be the raw octets of the key represented by
+                              Let <var>data</var> be the raw octets of the key represented by [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                               <var>key</var>.
                             </p>
                           </li>
@@ -13623,14 +13627,13 @@
                           <li>
                             <p>
                               Set the <code>k</code> attribute of <var>jwk</var> to be a string
-                              containing the raw octets
-                              of the key represented by <var>key</var>, encoded according to
-                              Section 6.4 of <a href="#jwa">JSON Web Algorithms</a>.
-                            </p>
-                          </li>
-                          <li>
-                            <p>
-                              Let <var>algorithm</var> be the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
+                              containing the raw octets of the key represented by [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
+                              <var>key</var>, encoded according to Section 6.4 of <a href="#jwa">JSON Web Algorithms</a>.
+                            </p>
+                          </li>
+                          <li>
+                            <p>
+                              Let <var>algorithm</var> be the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
                               <var>key</var>.
                             </p>
                           </li>
@@ -13670,9 +13673,8 @@
                           </li>
                           <li>
                             <p>
-                              Set the <code>ext</code> attribute of <var>jwk</var> to equal the 
-                              <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                              <var>key</var>.
+                              Set the <code>ext</code> attribute of <var>jwk</var> to equal the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal slot
+                              of <var>key</var>.
                             </p>
                           </li>
                           <li>
@@ -13920,25 +13922,25 @@
                   </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
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
+                      <var>publicKey</var> to <code>"public"</code>
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>publicKey</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>publicKey</var> to true.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>publicKey</var> to be the empty list.
                     </p>
                   </li>
@@ -13950,25 +13952,25 @@
                   </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
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
+                      <var>privateKey</var> to <code>"private"</code>
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>privateKey</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>privateKey</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
                       <var>privateKey</var> to be <var>usages</var>.
                     </p>
                   </li>
@@ -14003,10 +14005,8 @@
                 <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>.
+                      If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot 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>
@@ -14033,32 +14033,29 @@
                   </li>
                   <li>
                     <p>
-                      If the <a href="#dfn-KeyAlgorithm-name">name</a> attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>publicKey</var> is
-                      not <code>"DH"</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 <a href="#dfn-CryptoKey-type">type</a> attribute of <var>publicKey</var> is
-                      not <code>"public"</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 <a href="#dfn-DhKeyAlgorithm-prime">prime</a> attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>publicKey</var> is
-                      not equal to the <a href="#dfn-DhKeyAlgorithm-prime">prime</a> attribute of
-                      the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>key</var>,
-                      then <a href="#concept-return-an-error">return an error</a> named <a href="#dfn-DataError"><code>DataError</code></a>.
+                      If the <a href="#dfn-KeyAlgorithm-name">name</a> attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>publicKey</var> is not <code>"DH"</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 [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
+                      <var>publicKey</var> is not <code>"public"</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 <a href="#dfn-DhKeyAlgorithm-prime">prime</a> attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>publicKey</var> is not equal to the <a href="#dfn-DhKeyAlgorithm-prime">prime</a> attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>key</var>, 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 <a href="#dfn-DhKeyAlgorithm-generator">generator</a> attribute of the
-                      <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of <var>publicKey</var>
-                      is not equal to the <a href="#dfn-DhKeyAlgorithm-generator">generator</a>
-                      attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
+                      [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
+                      <var>publicKey</var> is not equal to the <a href="#dfn-DhKeyAlgorithm-generator">generator</a> attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal slot of
                       <var>key</var>, then <a href="#concept-return-an-error">return an error</a>
                       named <a href="#dfn-DataError"><code>DataError</code></a>.
                     </p>
@@ -14066,7 +14063,7 @@
                   <li>
                     <p>
                       Perform the Diffie-Hellman Phase II algorithm as specified in Section 8 of [<a href="#PKCS3">PKCS #3</a>] with <var>key</var> as the DH private value
-                      <var>x</var> and the Diffie-Hellman public value represented by the <a href="#dfn-DhKeyDeriveParams-public">public</a> member of
+                      <var>x</var> and the Diffie-Hellman public value represented by the [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of the <a href="#dfn-DhKeyDeriveParams-public">public</a> member of
                       <var>normalizedAlgorithm</var> as the other's public value <var>PV'</var>.
                     </p>
                     <dl class="switch">
@@ -14149,8 +14146,8 @@
                       </li>
                       <li>
                         <p>
-                          Set the <a href="#dfn-CryptoKey-type">type</a> attribute of <var>key</var>
-                          to <code>"public"</code>.
+                          Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
+                          <var>key</var> to <code>"public"</code>.
                         </p>
                       </li>
                       <li>
@@ -14180,20 +14177,20 @@
                       </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>
-                          Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                          <var>key</var> to <var>extractable</var>.
-                        </p>
-                      </li>
-                      <li>
-                        <p>
-                          Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
-                          <var>key</var> to <var>usages</var>.
+                          Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                          slot of <var>key</var> to <var>algorithm</var>.
+                        </p>
+                      </li>
+                      <li>
+                        <p>
+                          Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]]
+                          internal slot of <var>key</var> to <var>extractable</var>.
+                        </p>
+                      </li>
+                      <li>
+                        <p>
+                          Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot
+                          of <var>key</var> to <var>usages</var>.
                         </p>
                       </li>
                       <li>
@@ -14255,8 +14252,8 @@
                       </li>
                       <li>
                         <p>
-                          Set the <a href="#dfn-CryptoKey-type">type</a> property of <var>key</var>
-                          to <code>"public"</code>.
+                          Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
+                          <var>key</var> to <code>"public"</code>.
                         </p>
                       </li>
                       <li>
@@ -14288,22 +14285,21 @@
                       </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>
-                          Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                          <var>key</var> to <var>extractable</var>.
-                        </p>
-                      </li>
-                      <li>
-                        <p>
-                          Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
-                          <var>key</var> to the
-                          <a href="#concept-normalized-usages">normalized value</a> of
-                          <var>usages</var>.
+                          Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                          slot of <var>key</var> to <var>algorithm</var>.
+                        </p>
+                      </li>
+                      <li>
+                        <p>
+                          Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]]
+                          internal slot of <var>key</var> to <var>extractable</var>.
+                        </p>
+                      </li>
+                      <li>
+                        <p>
+                          Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot
+                          of <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                          value</a> of <var>usages</var>.
                         </p>
                       </li>
                       <li>
@@ -14373,8 +14369,8 @@
                       </li>
                       <li>
                         <p>
-                          Set the <a href="#dfn-CryptoKey-type">type</a> attribute of <var>key</var>
-                          to <code>"private"</code>.
+                          Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
+                          <var>key</var> to <code>"private"</code>.
                         </p>
                       </li>
                       <li>
@@ -14407,22 +14403,21 @@
                       </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>
-                          Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                          <var>key</var> to <var>extractable</var>.
-                        </p>
-                      </li>
-                      <li>
-                        <p>
-                          Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
-                          <var>key</var> to the
-                          <a href="#concept-normalized-usages">normalized value</a> of
-                          <var>usages</var>.
+                          Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                          slot of <var>key</var> to <var>algorithm</var>.
+                        </p>
+                      </li>
+                      <li>
+                        <p>
+                          Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]]
+                          internal slot of <var>key</var> to <var>extractable</var>.
+                        </p>
+                      </li>
+                      <li>
+                        <p>
+                          Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot
+                          of <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                          value</a> of <var>usages</var>.
                         </p>
                       </li>
                       <li>
@@ -14452,16 +14447,16 @@
                           <li>
                             <dl class="switch">
                               <dt>
-                                If the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                <var>key</var> is <code>"public"</code>:
+                                If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                                of <var>key</var> is <code>"public"</code>:
                               </dt>
                               <dd>
                                 Let <var>data</var> be the Public Value, <var>PV</var>, associated
                                 with <var>key</var> as specified in Section 7 of [<a href="#PKCS3">PKCS #3</a>].
                               </dd>
                               <dt>
-                                If the <a href="#dfn-CryptoKey-type">type</a> attribute of
-                                <var>key</var> is <code>"private"</code>:
+                                If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                                of <var>key</var> is <code>"private"</code>:
                               </dt>
                               <dd>
                                 Let <var>data</var> be the octet string that represents the private
@@ -14485,8 +14480,8 @@
                         <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>.
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              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>
@@ -14519,16 +14514,16 @@
                                         <p>
                                           Set the <var>prime</var> field to an ASN.1 INTEGER that is
                                           equivalent to the <a href="#dfn-DhKeyAlgorithm-prime">prime</a> attribute of
-                                          the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                          attribute of <var>key</var>.
+                                          the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                          internal slot of <var>key</var>.
                                         </p>
                                       </li>
                                       <li>
                                         <p>
                                           Set the <var>base</var> field to an ASN.1 INTEGER that is
                                           equivalent to the <a href="#dfn-DhKeyAlgorithm-generator">generator</a>
-                                          attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                          <var>key</var>.
+                                          attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                          internal slot of <var>key</var>.
                                         </p>
                                       </li>
                                     </ul>
@@ -14538,7 +14533,7 @@
                               <li>
                                 <p>
                                   Set the <var>subjectPublicKey</var> to an ASN.1 INTEGER that
-                                  corresponds to the Diffie-Hellman public value represented by
+                                  corresponds to the Diffie-Hellman public value represented by [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of
                                   <var>key</var>.
                                 </p>
                               </li>
@@ -14559,8 +14554,8 @@
                         <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>.
+                              If the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot
+                              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>
@@ -14593,16 +14588,16 @@
                                         <p>
                                           Set the <var>prime</var> field to an ASN.1 INTEGER that is
                                           equivalent to the <a href="#dfn-DhKeyAlgorithm-prime">prime</a> attribute of
-                                          the <a href="#dfn-CryptoKey-algorithm">algorithm</a>
-                                          attribute of <var>key</var>.
+                                          the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                          internal slot of <var>key</var>.
                                         </p>
                                       </li>
                                       <li>
                                         <p>
                                           Set the <var>base</var> field to an ASN.1 INTEGER that is
                                           equivalent to the <a href="#dfn-DhKeyAlgorithm-generator">generator</a>
-                                          attribute of the <a href="#dfn-CryptoKey-algorithm">algorithm</a> attribute of
-                                          <var>key</var>.
+                                          attribute of the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]]
+                                          internal slot of <var>key</var>.
                                         </p>
                                       </li>
                                     </ul>
@@ -14613,7 +14608,8 @@
                                 <p>
                                   Set the <var>privateKey</var> field to an ASN.1 INTEGER that
                                   corresponds to the Diffie-Hellman private value represented by
-                                  <var>key</var>.
+                                  [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot
+                                  of <var>key</var>.
                                 </p>
                               </li>
                             </ul>
@@ -14903,8 +14899,8 @@
                       </li>
                       <li>
                         <p>
-                          Set the <a href="#dfn-CryptoKey-type">type</a> attribute of <var>key</var>
-                          to <code>"secret"</code>.
+                          Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
+                          <var>key</var> to <code>"secret"</code>.
                         </p>
                       </li>
                       <li>
@@ -14921,22 +14917,21 @@
                       </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>
-                          Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                          <var>key</var> to <var>extractable</var>.
-                        </p>
-                      </li>
-                      <li>
-                        <p>
-                          Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
-                          <var>key</var> to the
-                          <a href="#concept-normalized-usages">normalized value</a> of
-                          <var>usages</var>.
+                          Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                          slot of <var>key</var> to <var>algorithm</var>.
+                        </p>
+                      </li>
+                      <li>
+                        <p>
+                          Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]]
+                          internal slot of <var>key</var> to <var>extractable</var>.
+                        </p>
+                      </li>
+                      <li>
+                        <p>
+                          Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot
+                          of <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                          value</a> of <var>usages</var>.
                         </p>
                       </li>
                       <li>
@@ -15092,8 +15087,8 @@
                   <li>
                     <p>
                       Let <var>keyDerivationKey</var> be the result of performing <var>prf</var>
-                      using <var>extractKey</var> as the key and the secret represented by
-                      <var>key</var> as the message.
+                      using <var>extractKey</var> as the key and the secret represented by [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of <var>key</var>
+                      as the message.
                     </p>
                   </li>
                   <li>
@@ -15183,8 +15178,8 @@
                       </li>
                       <li>
                         <p>
-                          Set the <a href="#dfn-CryptoKey-type">type</a> attribute of <var>key</var>
-                          to <code>"secret"</code>.
+                          Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
+                          <var>key</var> to <code>"secret"</code>.
                         </p>
                       </li>
                       <li>
@@ -15201,22 +15196,21 @@
                       </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>
-                          Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                          <var>key</var> to <var>extractable</var>.
-                        </p>
-                      </li>
-                      <li>
-                        <p>
-                          Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of
-                          <var>key</var> to the
-                          <a href="#concept-normalized-usages">normalized value</a> of
-                          <var>usages</var>.
+                          Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                          slot of <var>key</var> to <var>algorithm</var>.
+                        </p>
+                      </li>
+                      <li>
+                        <p>
+                          Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]]
+                          internal slot of <var>key</var> to <var>extractable</var>.
+                        </p>
+                      </li>
+                      <li>
+                        <p>
+                          Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot
+                          of <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                          value</a> of <var>usages</var>.
                         </p>
                       </li>
                       <li>
@@ -15354,8 +15348,9 @@
                     <p>
                       Let <var>result</var> be the result of performing the PBKDF2 operation defined
                       in Section 5.2 of [<a href="#rfc2898">RFC2898</a>] using <var>prf</var> as the
-                      pseudo-random function, <var>PRF</var>, the password represented by
-                      <var>key</var> as the password, <var>P</var>, <a href="#concept-contents-of-arraybuffer">the contents of</a> the <a href="#dfn-Pbkdf2Params-salt">salt</a> attribute of
+                      pseudo-random function, <var>PRF</var>, the password represented by [[<a href="#dfn-CryptoKey-slot-handle">handle</a>]] internal slot of <var>key</var>
+                      as the password, <var>P</var>, <a href="#concept-contents-of-arraybuffer">the
+                      contents of</a> the <a href="#dfn-Pbkdf2Params-salt">salt</a> attribute of
                       <var>normalizedAlgorithm</var> as the salt, <var>S</var>, the value of the <a href="#dfn-Pbkdf2Params-iterations">iterations</a> attribute of
                       <var>normalizedAlgorithm</var> as the iteration count, <var>c</var>, and
                       <var>length</var> divided by 8 as the intended key length, <var>dkLen</var>.
@@ -15403,8 +15398,8 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of <var>key</var> to
-                      <code>"secret"</code>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
+                      <var>key</var> to <code>"secret"</code>.
                     </p>
                   </li>
                   <li>
@@ -15421,21 +15416,21 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                      <var>key</var> to <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var>
-                      to the <a href="#concept-normalized-usages">normalized value</a> of
-                      <var>usages</var>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                      value</a> of <var>usages</var>.
                     </p>
                   </li>
                   <li>
@@ -15468,8 +15463,8 @@
                   </li>
                   <li>
                     <p>
-                      Set the <a href="#dfn-CryptoKey-type">type</a> attribute of <var>key</var> to
-                      <code>"secret"</code>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-type">type</a>]] internal slot of
+                      <var>key</var> to <code>"secret"</code>.
                     </p>
                   </li>
                   <li>
@@ -15486,21 +15481,21 @@
                   </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>
-                      Set the <a href="#dfn-CryptoKey-extractable">extractable</a> attribute of
-                      <var>key</var> to <var>extractable</var>.
-                    </p>
-                  </li>
-                  <li>
-                    <p>
-                      Set the <a href="#dfn-CryptoKey-usages">usages</a> attribute of <var>key</var>
-                      to the <a href="#concept-normalized-usages">normalized value</a> of
-                      <var>usages</var>.
+                      Set the [[<a href="#dfn-CryptoKey-slot-algorithm">algorithm</a>]] internal
+                      slot of <var>key</var> to <var>algorithm</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-extractable">extractable</a>]] internal
+                      slot of <var>key</var> to <var>extractable</var>.
+                    </p>
+                  </li>
+                  <li>
+                    <p>
+                      Set the [[<a href="#dfn-CryptoKey-slot-usages">usages</a>]] internal slot of
+                      <var>key</var> to the <a href="#concept-normalized-usages">normalized
+                      value</a> of <var>usages</var>.
                     </p>
                   </li>
                   <li>