| < draft-ietf-jose-json-web-key-26.txt | draft-ietf-jose-json-web-key-27.txt > | |||
|---|---|---|---|---|
| JOSE Working Group M. Jones | JOSE Working Group M. Jones | |||
| Internet-Draft Microsoft | Internet-Draft Microsoft | |||
| Intended status: Standards Track April 30, 2014 | Intended status: Standards Track June 10, 2014 | |||
| Expires: November 1, 2014 | Expires: December 12, 2014 | |||
| JSON Web Key (JWK) | JSON Web Key (JWK) | |||
| draft-ietf-jose-json-web-key-26 | draft-ietf-jose-json-web-key-27 | |||
| Abstract | Abstract | |||
| A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data | A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data | |||
| structure that represents a cryptographic key. This specification | structure that represents a cryptographic key. This specification | |||
| also defines a JSON Web Key Set (JWK Set) JSON data structure for | also defines a JSON Web Key Set (JWK Set) JSON data structure that | |||
| representing a set of JWKs. Cryptographic algorithms and identifiers | represents a set of JWKs. Cryptographic algorithms and identifiers | |||
| for use with this specification are described in the separate JSON | for use with this specification are described in the separate JSON | |||
| Web Algorithms (JWA) specification and IANA registries defined by | Web Algorithms (JWA) specification and IANA registries defined by | |||
| that specification. | that specification. | |||
| Status of this Memo | Status of this Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on November 1, 2014. | This Internet-Draft will expire on December 12, 2014. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2014 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 12 ¶ | skipping to change at page 2, line 12 ¶ | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 1.1. Notational Conventions . . . . . . . . . . . . . . . . . . 4 | 1.1. Notational Conventions . . . . . . . . . . . . . . . . . . 4 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. JSON Web Key (JWK) Format . . . . . . . . . . . . . . . . . . 5 | 3. Example JWK . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3.1. "kty" (Key Type) Parameter . . . . . . . . . . . . . . . . 5 | 4. JSON Web Key (JWK) Format . . . . . . . . . . . . . . . . . . 5 | |||
| 3.2. "use" (Public Key Use) Parameter . . . . . . . . . . . . . 6 | 4.1. "kty" (Key Type) Parameter . . . . . . . . . . . . . . . . 6 | |||
| 3.3. "key_ops" (Key Operations) Parameter . . . . . . . . . . . 6 | 4.2. "use" (Public Key Use) Parameter . . . . . . . . . . . . . 6 | |||
| 3.4. "alg" (Algorithm) Parameter . . . . . . . . . . . . . . . 7 | 4.3. "key_ops" (Key Operations) Parameter . . . . . . . . . . . 7 | |||
| 3.5. "kid" (Key ID) Parameter . . . . . . . . . . . . . . . . . 7 | 4.4. "alg" (Algorithm) Parameter . . . . . . . . . . . . . . . 7 | |||
| 3.6. "x5u" (X.509 URL) Parameter . . . . . . . . . . . . . . . 7 | 4.5. "kid" (Key ID) Parameter . . . . . . . . . . . . . . . . . 8 | |||
| 3.7. "x5c" (X.509 Certificate Chain) Parameter . . . . . . . . 8 | 4.6. "x5u" (X.509 URL) Parameter . . . . . . . . . . . . . . . 8 | |||
| 3.8. "x5t" (X.509 Certificate SHA-1 Thumbprint) Parameter . . . 8 | 4.7. "x5c" (X.509 Certificate Chain) Parameter . . . . . . . . 8 | |||
| 4. JSON Web Key Set (JWK Set) Format . . . . . . . . . . . . . . 9 | 4.8. "x5t" (X.509 Certificate SHA-1 Thumbprint) Parameter . . . 9 | |||
| 4.1. "keys" Parameter . . . . . . . . . . . . . . . . . . . . . 9 | 4.9. "x5t#S256" (X.509 Certificate SHA-256 Thumbprint) | |||
| 5. String Comparison Rules . . . . . . . . . . . . . . . . . . . 10 | Parameter . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 6. Encrypted JWK and Encrypted JWK Set Formats . . . . . . . . . 10 | 5. JSON Web Key Set (JWK Set) Format . . . . . . . . . . . . . . 9 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | 5.1. "keys" Parameter . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 7.1. JSON Web Key Parameters Registry . . . . . . . . . . . . . 11 | 6. String Comparison Rules . . . . . . . . . . . . . . . . . . . 10 | |||
| 7.1.1. Registration Template . . . . . . . . . . . . . . . . 11 | 7. Encrypted JWK and Encrypted JWK Set Formats . . . . . . . . . 10 | |||
| 7.1.2. Initial Registry Contents . . . . . . . . . . . . . . 12 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 7.2. JSON Web Key Use Registry . . . . . . . . . . . . . . . . 14 | 8.1. JSON Web Key Parameters Registry . . . . . . . . . . . . . 12 | |||
| 7.2.1. Registration Template . . . . . . . . . . . . . . . . 14 | 8.1.1. Registration Template . . . . . . . . . . . . . . . . 12 | |||
| 7.2.2. Initial Registry Contents . . . . . . . . . . . . . . 14 | 8.1.2. Initial Registry Contents . . . . . . . . . . . . . . 13 | |||
| 7.3. JSON Web Key Operations Registry . . . . . . . . . . . . . 15 | 8.2. JSON Web Key Use Registry . . . . . . . . . . . . . . . . 14 | |||
| 7.3.1. Registration Template . . . . . . . . . . . . . . . . 15 | 8.2.1. Registration Template . . . . . . . . . . . . . . . . 14 | |||
| 7.3.2. Initial Registry Contents . . . . . . . . . . . . . . 15 | 8.2.2. Initial Registry Contents . . . . . . . . . . . . . . 15 | |||
| 7.4. JSON Web Key Set Parameters Registry . . . . . . . . . . . 16 | 8.3. JSON Web Key Operations Registry . . . . . . . . . . . . . 15 | |||
| 7.4.1. Registration Template . . . . . . . . . . . . . . . . 16 | 8.3.1. Registration Template . . . . . . . . . . . . . . . . 15 | |||
| 7.4.2. Initial Registry Contents . . . . . . . . . . . . . . 17 | 8.3.2. Initial Registry Contents . . . . . . . . . . . . . . 16 | |||
| 7.5. Media Type Registration . . . . . . . . . . . . . . . . . 17 | 8.4. JSON Web Key Set Parameters Registry . . . . . . . . . . . 17 | |||
| 7.5.1. Registry Contents . . . . . . . . . . . . . . . . . . 17 | 8.4.1. Registration Template . . . . . . . . . . . . . . . . 17 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 18 | 8.4.2. Initial Registry Contents . . . . . . . . . . . . . . 18 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 19 | 8.5. Media Type Registration . . . . . . . . . . . . . . . . . 18 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . . 19 | 8.5.1. Registry Contents . . . . . . . . . . . . . . . . . . 18 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . . 20 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | |||
| Appendix A. Example JSON Web Key Sets . . . . . . . . . . . . . . 21 | 9.1. Key Provenance and Trust . . . . . . . . . . . . . . . . . 19 | |||
| A.1. Example Public Keys . . . . . . . . . . . . . . . . . . . 21 | 9.2. Preventing Disclosure of Non-Public Key Information . . . 20 | |||
| A.2. Example Private Keys . . . . . . . . . . . . . . . . . . . 22 | 9.3. RSA Private Key Representations and Blinding . . . . . . . 20 | |||
| A.3. Example Symmetric Keys . . . . . . . . . . . . . . . . . . 24 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 10.1. Normative References . . . . . . . . . . . . . . . . . . . 20 | ||||
| 10.2. Informative References . . . . . . . . . . . . . . . . . . 22 | ||||
| Appendix A. Example JSON Web Key Sets . . . . . . . . . . . . . . 23 | ||||
| A.1. Example Public Keys . . . . . . . . . . . . . . . . . . . 23 | ||||
| A.2. Example Private Keys . . . . . . . . . . . . . . . . . . . 23 | ||||
| A.3. Example Symmetric Keys . . . . . . . . . . . . . . . . . . 25 | ||||
| Appendix B. Example Use of "x5c" (X.509 Certificate Chain) | Appendix B. Example Use of "x5c" (X.509 Certificate Chain) | |||
| Parameter . . . . . . . . . . . . . . . . . . . . . . 24 | Parameter . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| Appendix C. Example Encrypted RSA Private Key . . . . . . . . . . 25 | Appendix C. Example Encrypted RSA Private Key . . . . . . . . . . 26 | |||
| C.1. Plaintext RSA Private Key . . . . . . . . . . . . . . . . 26 | C.1. Plaintext RSA Private Key . . . . . . . . . . . . . . . . 27 | |||
| C.2. JWE Header . . . . . . . . . . . . . . . . . . . . . . . . 29 | C.2. JWE Header . . . . . . . . . . . . . . . . . . . . . . . . 30 | |||
| C.3. Content Encryption Key (CEK) . . . . . . . . . . . . . . . 29 | C.3. Content Encryption Key (CEK) . . . . . . . . . . . . . . . 30 | |||
| C.4. Key Derivation . . . . . . . . . . . . . . . . . . . . . . 30 | C.4. Key Derivation . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| C.5. Key Encryption . . . . . . . . . . . . . . . . . . . . . . 30 | C.5. Key Encryption . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| C.6. Initialization Vector . . . . . . . . . . . . . . . . . . 30 | C.6. Initialization Vector . . . . . . . . . . . . . . . . . . 31 | |||
| C.7. Additional Authenticated Data . . . . . . . . . . . . . . 31 | C.7. Additional Authenticated Data . . . . . . . . . . . . . . 32 | |||
| C.8. Content Encryption . . . . . . . . . . . . . . . . . . . . 31 | C.8. Content Encryption . . . . . . . . . . . . . . . . . . . . 32 | |||
| C.9. Complete Representation . . . . . . . . . . . . . . . . . 34 | C.9. Complete Representation . . . . . . . . . . . . . . . . . 35 | |||
| Appendix D. Acknowledgements . . . . . . . . . . . . . . . . . . 35 | Appendix D. Acknowledgements . . . . . . . . . . . . . . . . . . 36 | |||
| Appendix E. Document History . . . . . . . . . . . . . . . . . . 36 | Appendix E. Document History . . . . . . . . . . . . . . . . . . 37 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 41 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
| 1. Introduction | 1. Introduction | |||
| A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) [RFC7159] | A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) [RFC7159] | |||
| data structure that represents a cryptographic key. This | data structure that represents a cryptographic key. This | |||
| specification also defines a JSON Web Key Set (JWK Set) JSON data | specification also defines a JSON Web Key Set (JWK Set) JSON data | |||
| structure for representing a set of JWKs. Cryptographic algorithms | structure that represents a set of JWKs. Cryptographic algorithms | |||
| and identifiers for use with this specification are described in the | and identifiers for use with this specification are described in the | |||
| separate JSON Web Algorithms (JWA) [JWA] specification and IANA | separate JSON Web Algorithms (JWA) [JWA] specification and IANA | |||
| registries defined by that specification. | registries defined by that specification. | |||
| Goals for this specification do not include representing certificate | ||||
| chains, representing certified keys, and replacing X.509 | ||||
| certificates. | ||||
| JWKs and JWK Sets are used in the JSON Web Signature (JWS) [JWS] and | JWKs and JWK Sets are used in the JSON Web Signature (JWS) [JWS] and | |||
| JSON Web Encryption (JWE) [JWE] specifications. | JSON Web Encryption (JWE) [JWE] specifications. | |||
| Names defined by this specification are short because a core goal is | Names defined by this specification are short because a core goal is | |||
| for the resulting representations to be compact. | for the resulting representations to be compact. | |||
| 1.1. Notational Conventions | 1.1. Notational Conventions | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| skipping to change at page 5, line 6 ¶ | skipping to change at page 5, line 6 ¶ | |||
| 2. Terminology | 2. Terminology | |||
| These terms defined by the JSON Web Signature (JWS) [JWS] | These terms defined by the JSON Web Signature (JWS) [JWS] | |||
| specification are incorporated into this specification: "Base64url | specification are incorporated into this specification: "Base64url | |||
| Encoding" and "Collision-Resistant Name". | Encoding" and "Collision-Resistant Name". | |||
| These terms are defined for use by this specification: | These terms are defined for use by this specification: | |||
| JSON Web Key (JWK) | JSON Web Key (JWK) | |||
| A JSON object that represents a cryptographic key. | A JSON object that represents a cryptographic key. The members of | |||
| the object represent properties of the key, including its value. | ||||
| JSON Web Key Set (JWK Set) | JSON Web Key Set (JWK Set) | |||
| A JSON object that contains an array of JWKs as the value of its | A JSON object that represents a set of JWKs. The JSON object MUST | |||
| "keys" member. | have a "keys" member, which is an array of JWK objects. | |||
| 3. JSON Web Key (JWK) Format | 3. Example JWK | |||
| A JSON Web Key (JWK) is a JSON object. The members of the object | This section provides an example of a JWK. The following example JWK | |||
| represent properties of the key, including its value. This document | declares that the key is an an elliptic curve key, it is used with | |||
| defines the key parameters that are not algorithm specific, and thus | the P-256 elliptic curve, and its x and y coordinates are the | |||
| common to many keys. | base64url encoded values shown. A key identifier is also provided | |||
| for the key. | ||||
| {"kty":"EC", | ||||
| "crv":"P-256", | ||||
| "x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU", | ||||
| "y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0", | ||||
| "kid":"Public key used in JWS A.3 example" | ||||
| } | ||||
| Additional example JWK values can be found in Appendix A. | ||||
| 4. JSON Web Key (JWK) Format | ||||
| A JSON Web Key (JWK) is a JSON object that represents a cryptographic | ||||
| key. The members of the object represent properties of the key, | ||||
| including its value. This document defines the key parameters that | ||||
| are not algorithm specific, and thus common to many keys. | ||||
| In addition to the common parameters, each JWK will have members that | In addition to the common parameters, each JWK will have members that | |||
| are specific to the kind of key being represented. These members | are specific to the kind of key being represented. These members | |||
| represent the parameters of the key. Section 6 of the JSON Web | represent the parameters of the key. Section 6 of the JSON Web | |||
| Algorithms (JWA) [JWA] specification defines multiple kinds of | Algorithms (JWA) [JWA] specification defines multiple kinds of | |||
| cryptographic keys and their associated members. | cryptographic keys and their associated members. | |||
| The member names within a JWK MUST be unique; recipients MUST either | The member names within a JWK MUST be unique; recipients MUST either | |||
| reject JWKs with duplicate member names or use a JSON parser that | reject JWKs with duplicate member names or use a JSON parser that | |||
| returns only the lexically last duplicate member name, as specified | returns only the lexically last duplicate member name, as specified | |||
| in Section 15.12 (The JSON Object) of ECMAScript 5.1 [ECMAScript]. | in Section 15.12 (The JSON Object) of ECMAScript 5.1 [ECMAScript]. | |||
| Additional members can be present in the JWK; if not understood by | Additional members can be present in the JWK; if not understood by | |||
| implementations encountering them, they MUST be ignored. Member | implementations encountering them, they MUST be ignored. Member | |||
| names used for representing key parameters for different keys types | names used for representing key parameters for different keys types | |||
| need not be distinct. Any new member name should either be | need not be distinct. Any new member name should either be | |||
| registered in the IANA JSON Web Key Parameters registry defined in | registered in the IANA JSON Web Key Parameters registry defined in | |||
| Section 7.1 or be a value that contains a Collision-Resistant Name. | Section 8.1 or be a value that contains a Collision-Resistant Name. | |||
| 3.1. "kty" (Key Type) Parameter | 4.1. "kty" (Key Type) Parameter | |||
| The "kty" (key type) member identifies the cryptographic algorithm | The "kty" (key type) member identifies the cryptographic algorithm | |||
| family used with the key. "kty" values should either be registered in | family used with the key. "kty" values should either be registered in | |||
| the IANA JSON Web Key Types registry defined in [JWA] or be a value | the IANA JSON Web Key Types registry defined in [JWA] or be a value | |||
| that contains a Collision-Resistant Name. The "kty" value is a case- | that contains a Collision-Resistant Name. The "kty" value is a case- | |||
| sensitive string. This member MUST be present in a JWK. | sensitive string. This member MUST be present in a JWK. | |||
| A list of defined "kty" values can be found in the IANA JSON Web Key | A list of defined "kty" values can be found in the IANA JSON Web Key | |||
| Types registry defined in [JWA]; the initial contents of this | Types registry defined in [JWA]; the initial contents of this | |||
| registry are the values defined in Section 6.1 of the JSON Web | registry are the values defined in Section 6.1 of the JSON Web | |||
| Algorithms (JWA) [JWA] specification. | Algorithms (JWA) [JWA] specification. | |||
| The key type definitions include specification of the members to be | The key type definitions include specification of the members to be | |||
| used for those key types. Additional members used with "kty" values | used for those key types. Additional members used with "kty" values | |||
| can also be found in the IANA JSON Web Key Parameters registry | can also be found in the IANA JSON Web Key Parameters registry | |||
| defined in Section 7.1. | defined in Section 8.1. | |||
| 3.2. "use" (Public Key Use) Parameter | 4.2. "use" (Public Key Use) Parameter | |||
| The "use" (public key use) member identifies the intended use of the | The "use" (public key use) member identifies the intended use of the | |||
| public key. The "use" parameter is intended for use cases in which | public key. The "use" parameter is intended for use cases in which | |||
| it is useful to distinguish between public signing keys and public | it is useful to distinguish between public signing keys and public | |||
| encryption keys. | encryption keys. | |||
| Values defined by this specification are: | Values defined by this specification are: | |||
| o "sig" (signature) | o "sig" (signature) | |||
| o "enc" (encryption) | o "enc" (encryption) | |||
| Other values MAY be used. Public Key Use values can be registered in | Other values MAY be used. Public Key Use values can be registered in | |||
| the IANA JSON Web Key Use registry defined in Section 7.2. The "use" | the IANA JSON Web Key Use registry defined in Section 8.2. The "use" | |||
| value is a case-sensitive string. Use of the "use" member is | value is a case-sensitive string. Use of the "use" member is | |||
| OPTIONAL, unless the application requires its presence. | OPTIONAL, unless the application requires its presence. | |||
| When a key is used to wrap another key and a key use designation for | When a key is used to wrap another key and a key use designation for | |||
| the first key is desired, the "enc" (encryption) key use value SHOULD | the first key is desired, the "enc" (encryption) key use value SHOULD | |||
| be used, since key wrapping is a kind of encryption. The "enc" value | be used, since key wrapping is a kind of encryption. The "enc" value | |||
| SHOULD also be used for public keys used for key agreement | SHOULD also be used for public keys used for key agreement | |||
| operations. (The "alg" member can be used to specify the particular | operations. (The "alg" member can be used to specify the particular | |||
| cryptographic operation to be performed, when desired.) | cryptographic operation to be performed, when desired.) | |||
| 3.3. "key_ops" (Key Operations) Parameter | 4.3. "key_ops" (Key Operations) Parameter | |||
| The "key_ops" (key operations) member identifies the operation(s) | The "key_ops" (key operations) member identifies the operation(s) | |||
| that the key is intended to be used for. The "key_ops" parameter is | that the key is intended to be used for. The "key_ops" parameter is | |||
| intended for use cases in which public, private, or symmetric keys | intended for use cases in which public, private, or symmetric keys | |||
| may be present. | may be present. | |||
| Its value is an array of key operation values. Values defined by | Its value is an array of key operation values. Values defined by | |||
| this specification are: | this specification are: | |||
| o "sign" (compute signature or MAC) | o "sign" (compute signature or MAC) | |||
| skipping to change at page 7, line 7 ¶ | skipping to change at page 7, line 29 ¶ | |||
| o "wrapKey" (encrypt key) | o "wrapKey" (encrypt key) | |||
| o "unwrapKey" (decrypt key and validate decryption, if applicable) | o "unwrapKey" (decrypt key and validate decryption, if applicable) | |||
| o "deriveKey" (derive key) | o "deriveKey" (derive key) | |||
| o "deriveBits" (derive bits not to be used as a key) | o "deriveBits" (derive bits not to be used as a key) | |||
| (Note that the "key_ops" values intentionally match the "KeyUsage" | (Note that the "key_ops" values intentionally match the "KeyUsage" | |||
| values defined in the Web Cryptography API [WebCrypto] | values defined in the Web Cryptography API [WebCrypto] | |||
| specification.) | specification.) | |||
| Other values MAY be used. Key operation values can be registered in | Other values MAY be used. Key operation values can be registered in | |||
| the IANA JSON Web Key Operations registry defined in Section 7.3. | the IANA JSON Web Key Operations registry defined in Section 8.3. | |||
| The key operation values are case-sensitive strings. Duplicate key | The key operation values are case-sensitive strings. Duplicate key | |||
| operation values MUST NOT be present in the array. | operation values MUST NOT be present in the array. | |||
| Use of the "key_ops" member is OPTIONAL, unless the application | Use of the "key_ops" member is OPTIONAL, unless the application | |||
| requires its presence. | requires its presence. | |||
| Multiple unrelated key operations SHOULD NOT be specified for a key | Multiple unrelated key operations SHOULD NOT be specified for a key | |||
| because of the potential vulnerabilities associated with using the | because of the potential vulnerabilities associated with using the | |||
| same key with multiple algorithms. Thus, the combinations "sign" | same key with multiple algorithms. Thus, the combinations "sign" | |||
| with "verify", "encrypt" with "decrypt", and "wrapKey" with | with "verify", "encrypt" with "decrypt", and "wrapKey" with | |||
| "unwrapKey" are permitted, but other combinations SHOULD NOT be used. | "unwrapKey" are permitted, but other combinations SHOULD NOT be used. | |||
| The "use" and "key_ops" JWK members SHOULD NOT be used together. | The "use" and "key_ops" JWK members SHOULD NOT be used together. | |||
| Applications should specify which of these members they use, if | Applications should specify which of these members they use, if | |||
| either is to be used by the application. | either is to be used by the application. | |||
| 3.4. "alg" (Algorithm) Parameter | 4.4. "alg" (Algorithm) Parameter | |||
| The "alg" (algorithm) member identifies the algorithm intended for | The "alg" (algorithm) member identifies the algorithm intended for | |||
| use with the key. The values used should either be registered in the | use with the key. The values used should either be registered in the | |||
| IANA JSON Web Signature and Encryption Algorithms registry defined in | IANA JSON Web Signature and Encryption Algorithms registry defined in | |||
| [JWA] or be a value that contains a Collision-Resistant Name. Use of | [JWA] or be a value that contains a Collision-Resistant Name. Use of | |||
| this member is OPTIONAL. | this member is OPTIONAL. | |||
| 3.5. "kid" (Key ID) Parameter | 4.5. "kid" (Key ID) Parameter | |||
| The "kid" (key ID) member can be used to match a specific key. This | The "kid" (key ID) member can be used to match a specific key. This | |||
| can be used, for instance, to choose among a set of keys within a JWK | can be used, for instance, to choose among a set of keys within a JWK | |||
| Set during key rollover. The structure of the "kid" value is | Set during key rollover. The structure of the "kid" value is | |||
| unspecified. When "kid" values are used within a JWK Set, different | unspecified. When "kid" values are used within a JWK Set, different | |||
| keys within the JWK Set SHOULD use distinct "kid" values. (One | keys within the JWK Set SHOULD use distinct "kid" values. (One | |||
| example in which different keys might use the same "kid" value is if | example in which different keys might use the same "kid" value is if | |||
| they have different "kty" (key type) values but are considered to be | they have different "kty" (key type) values but are considered to be | |||
| equivalent alternatives by the application using them.) The "kid" | equivalent alternatives by the application using them.) The "kid" | |||
| value is a case-sensitive string. Use of this member is OPTIONAL. | value is a case-sensitive string. Use of this member is OPTIONAL. | |||
| When used with JWS or JWE, the "kid" value is used to match a JWS or | When used with JWS or JWE, the "kid" value is used to match a JWS or | |||
| JWE "kid" Header Parameter value. | JWE "kid" Header Parameter value. | |||
| 3.6. "x5u" (X.509 URL) Parameter | 4.6. "x5u" (X.509 URL) Parameter | |||
| The "x5u" (X.509 URL) member is a URI [RFC3986] that refers to a | The "x5u" (X.509 URL) member is a URI [RFC3986] that refers to a | |||
| resource for an X.509 public key certificate or certificate chain | resource for an X.509 public key certificate or certificate chain | |||
| [RFC5280]. The identified resource MUST provide a representation of | [RFC5280]. The identified resource MUST provide a representation of | |||
| the certificate or certificate chain that conforms to RFC 5280 | the certificate or certificate chain that conforms to RFC 5280 | |||
| [RFC5280] in PEM encoded form [RFC1421]. The key in the first | [RFC5280] in PEM encoded form [RFC1421]. The key in the first | |||
| certificate MUST match the public key represented by other members of | certificate MUST match the public key represented by other members of | |||
| the JWK. The protocol used to acquire the resource MUST provide | the JWK. The protocol used to acquire the resource MUST provide | |||
| integrity protection; an HTTP GET request to retrieve the certificate | integrity protection; an HTTP GET request to retrieve the certificate | |||
| MUST use TLS [RFC2818] [RFC5246]; the identity of the server MUST be | MUST use TLS [RFC2818] [RFC5246]; the identity of the server MUST be | |||
| skipping to change at page 8, line 24 ¶ | skipping to change at page 8, line 45 ¶ | |||
| representing the public key be populated when an "x5u" member is | representing the public key be populated when an "x5u" member is | |||
| present, doing so may improve interoperability for applications that | present, doing so may improve interoperability for applications that | |||
| do not handle PKIX certificates. If other members are present, the | do not handle PKIX certificates. If other members are present, the | |||
| contents of those members MUST be semantically consistent with the | contents of those members MUST be semantically consistent with the | |||
| related fields in the first certificate. For instance, if the "use" | related fields in the first certificate. For instance, if the "use" | |||
| member is present, then it needs to allow for only a subset of the | member is present, then it needs to allow for only a subset of the | |||
| usages that are permitted by the certificate. Similarly, if the | usages that are permitted by the certificate. Similarly, if the | |||
| "alg" member is present, it should represent an algorithm that the | "alg" member is present, it should represent an algorithm that the | |||
| certificate allows. | certificate allows. | |||
| 3.7. "x5c" (X.509 Certificate Chain) Parameter | 4.7. "x5c" (X.509 Certificate Chain) Parameter | |||
| The "x5c" (X.509 Certificate Chain) member contains a chain of one or | The "x5c" (X.509 Certificate Chain) member contains a chain of one or | |||
| more PKIX certificates [RFC5280]. The certificate chain is | more PKIX certificates [RFC5280]. The certificate chain is | |||
| represented as a JSON array of certificate value strings. Each | represented as a JSON array of certificate value strings. Each | |||
| string in the array is a base64 encoded ([RFC4648] Section 4 -- not | string in the array is a base64 encoded ([RFC4648] Section 4 -- not | |||
| base64url encoded) DER [ITU.X690.1994] PKIX certificate value. The | base64url encoded) DER [ITU.X690.1994] PKIX certificate value. The | |||
| PKIX certificate containing the key value MUST be the first | PKIX certificate containing the key value MUST be the first | |||
| certificate. This MAY be followed by additional certificates, with | certificate. This MAY be followed by additional certificates, with | |||
| each subsequent certificate being the one used to certify the | each subsequent certificate being the one used to certify the | |||
| previous one. The key in the first certificate MUST match the public | previous one. The key in the first certificate MUST match the public | |||
| key represented by other members of the JWK. Use of this member is | key represented by other members of the JWK. Use of this member is | |||
| OPTIONAL. | OPTIONAL. | |||
| As with the "x5u" member, members other than those representing the | As with the "x5u" member, members other than those representing the | |||
| public key may also be populated when an "x5c" member is present. If | public key may also be populated when an "x5c" member is present. If | |||
| other members are present, the contents of those members MUST be | other members are present, the contents of those members MUST be | |||
| semantically consistent with the related fields in the first | semantically consistent with the related fields in the first | |||
| certificate. See the last paragraph of Section 3.6 for additional | certificate. See the last paragraph of Section 4.6 for additional | |||
| guidance on this. | guidance on this. | |||
| 3.8. "x5t" (X.509 Certificate SHA-1 Thumbprint) Parameter | 4.8. "x5t" (X.509 Certificate SHA-1 Thumbprint) Parameter | |||
| The "x5t" (X.509 Certificate SHA-1 Thumbprint) member is a base64url | The "x5t" (X.509 Certificate SHA-1 Thumbprint) member is a base64url | |||
| encoded SHA-1 thumbprint (a.k.a. digest) of the DER encoding of an | encoded SHA-1 thumbprint (a.k.a. digest) of the DER encoding of an | |||
| X.509 certificate [RFC5280]. The key in the certificate MUST match | X.509 certificate [RFC5280]. The key in the certificate MUST match | |||
| the public key represented by other members of the JWK. Use of this | the public key represented by other members of the JWK. Use of this | |||
| member is OPTIONAL. | member is OPTIONAL. | |||
| If, in the future, certificate thumbprints need to be computed using | ||||
| hash functions other than SHA-1, it is suggested that additional | ||||
| related JWK parameters be defined for that purpose. For example, it | ||||
| is suggested that a new "x5t#S256" (X.509 Certificate Thumbprint | ||||
| using SHA-256) JWK parameter could be defined by registering it in | ||||
| the IANA JSON Web Key Parameters registry defined in Section 7.1. | ||||
| As with the "x5u" member, members other than those representing the | As with the "x5u" member, members other than those representing the | |||
| public key may also be populated when an "x5t" member is present. If | public key may also be populated when an "x5t" member is present. If | |||
| other members are present, the contents of those members MUST be | other members are present, the contents of those members MUST be | |||
| semantically consistent with the related fields in the referenced | semantically consistent with the related fields in the referenced | |||
| certificate. See the last paragraph of Section 3.6 for additional | certificate. See the last paragraph of Section 4.6 for additional | |||
| guidance on this. | guidance on this. | |||
| 4. JSON Web Key Set (JWK Set) Format | 4.9. "x5t#S256" (X.509 Certificate SHA-256 Thumbprint) Parameter | |||
| A JSON Web Key Set (JWK Set) is a JSON object representing a set of | The "x5t#S256" (X.509 Certificate SHA-256 Thumbprint) member is a | |||
| JWKs. The JSON object MUST have a "keys" member, which is an array | base64url encoded SHA-256 thumbprint (a.k.a. digest) of the DER | |||
| of JWK objects. | encoding of an X.509 certificate [RFC5280]. The key in the | |||
| certificate MUST match the public key represented by other members of | ||||
| the JWK. Use of this member is OPTIONAL. | ||||
| As with the "x5u" member, members other than those representing the | ||||
| public key may also be populated when an "x5t#S256" member is | ||||
| present. If other members are present, the contents of those members | ||||
| MUST be semantically consistent with the related fields in the | ||||
| referenced certificate. See the last paragraph of Section 4.6 for | ||||
| additional guidance on this. | ||||
| 5. JSON Web Key Set (JWK Set) Format | ||||
| A JSON Web Key Set (JWK Set) is a JSON object that represents a set | ||||
| of JWKs. The JSON object MUST have a "keys" member, which is an | ||||
| array of JWK objects. | ||||
| The member names within a JWK Set MUST be unique; recipients MUST | The member names within a JWK Set MUST be unique; recipients MUST | |||
| either reject JWK Sets with duplicate member names or use a JSON | either reject JWK Sets with duplicate member names or use a JSON | |||
| parser that returns only the lexically last duplicate member name, as | parser that returns only the lexically last duplicate member name, as | |||
| specified in Section 15.12 (The JSON Object) of ECMAScript 5.1 | specified in Section 15.12 (The JSON Object) of ECMAScript 5.1 | |||
| [ECMAScript]. | [ECMAScript]. | |||
| Additional members can be present in the JWK Set; if not understood | Additional members can be present in the JWK Set; if not understood | |||
| by implementations encountering them, they MUST be ignored. | by implementations encountering them, they MUST be ignored. | |||
| Parameters for representing additional properties of JWK Sets should | Parameters for representing additional properties of JWK Sets should | |||
| either be registered in the IANA JSON Web Key Set Parameters registry | either be registered in the IANA JSON Web Key Set Parameters registry | |||
| defined in Section 7.4 or be a value that contains a Collision- | defined in Section 8.4 or be a value that contains a Collision- | |||
| Resistant Name. | Resistant Name. | |||
| Implementations SHOULD ignore JWKs within a JWK Set that use "kty" | Implementations SHOULD ignore JWKs within a JWK Set that use "kty" | |||
| (key type) values that are not understood by them, are missing | (key type) values that are not understood by them, are missing | |||
| required members, or for which values are out of the supported | required members, or for which values are out of the supported | |||
| ranges. | ranges. | |||
| 4.1. "keys" Parameter | 5.1. "keys" Parameter | |||
| The value of the "keys" member is an array of JWK values. By | The value of the "keys" member is an array of JWK values. By | |||
| default, the order of the JWK values within the array does not imply | default, the order of the JWK values within the array does not imply | |||
| an order of preference among them, although applications of JWK Sets | an order of preference among them, although applications of JWK Sets | |||
| can choose to assign a meaning to the order for their purposes, if | can choose to assign a meaning to the order for their purposes, if | |||
| desired. This member MUST be present in a JWK Set. | desired. This member MUST be present in a JWK Set. | |||
| 5. String Comparison Rules | 6. String Comparison Rules | |||
| The string comparison rules for this specification are the same as | The string comparison rules for this specification are the same as | |||
| those defined in Section 5.3 of [JWS]. | those defined in Section 5.3 of [JWS]. | |||
| 6. Encrypted JWK and Encrypted JWK Set Formats | 7. Encrypted JWK and Encrypted JWK Set Formats | |||
| JWKs containing non-public key material will need to be encrypted in | JWKs containing non-public key material will need to be encrypted | |||
| some contexts to prevent the disclosure of private or symmetric key | when potentially observable by parties without legitimate access to | |||
| values to unintended parties. The use of an Encrypted JWK, which is | the non-public information to prevent the disclosure of private or | |||
| a JWE with the UTF-8 encoding of a JWK as its plaintext value, is | symmetric key values to unintended parties. The use of an Encrypted | |||
| recommended for this purpose. The processing of Encrypted JWKs is | JWK, which is a JWE with the UTF-8 encoding of a JWK as its plaintext | |||
| identical to the processing of other JWEs. A "cty" (content type) | value, is recommended for this purpose. The processing of Encrypted | |||
| Header Parameter value of "jwk+json" MUST be used to indicate that | JWKs is identical to the processing of other JWEs. A "cty" (content | |||
| the content of the JWE is a JWK, unless the application knows that | type) Header Parameter value of "jwk+json" MUST be used to indicate | |||
| the encrypted content is a JWK by another means or convention. | that the content of the JWE is a JWK, unless the application knows | |||
| that the encrypted content is a JWK by another means or convention. | ||||
| JWK Sets containing non-public key material will similarly need to be | JWK Sets containing non-public key material will also need to be | |||
| encrypted. The use of an Encrypted JWK Set, which is a JWE with the | encrypted under these circumstances. The use of an Encrypted JWK | |||
| UTF-8 encoding of a JWK Set as its plaintext value, is recommended | Set, which is a JWE with the UTF-8 encoding of a JWK Set as its | |||
| for this purpose. The processing of Encrypted JWK Sets is identical | plaintext value, is recommended for this purpose. The processing of | |||
| to the processing of other JWEs. A "cty" (content type) Header | Encrypted JWK Sets is identical to the processing of other JWEs. A | |||
| Parameter value of "jwk-set+json" MUST be used to indicate that the | "cty" (content type) Header Parameter value of "jwk-set+json" MUST be | |||
| content of the JWE is a JWK Set, unless the application knows that | used to indicate that the content of the JWE is a JWK Set, unless the | |||
| the encrypted content is a JWK Set by another means or convention. | application knows that the encrypted content is a JWK Set by another | |||
| means or convention. | ||||
| See Appendix C for an example encrypted JWK. | See Appendix C for an example encrypted JWK. | |||
| 7. IANA Considerations | 8. IANA Considerations | |||
| The following registration procedure is used for all the registries | The following registration procedure is used for all the registries | |||
| established by this specification. | established by this specification. | |||
| Values are registered with a Specification Required [RFC5226] after a | Values are registered with a Specification Required [RFC5226] after a | |||
| two-week review period on the [TBD]@ietf.org mailing list, on the | two-week review period on the [TBD]@ietf.org mailing list, on the | |||
| advice of one or more Designated Experts. However, to allow for the | advice of one or more Designated Experts. However, to allow for the | |||
| allocation of values prior to publication, the Designated Expert(s) | allocation of values prior to publication, the Designated Expert(s) | |||
| may approve registration once they are satisfied that such a | may approve registration once they are satisfied that such a | |||
| specification will be published. | specification will be published. | |||
| skipping to change at page 11, line 30 ¶ | skipping to change at page 12, line 13 ¶ | |||
| list. | list. | |||
| It is suggested that multiple Designated Experts be appointed who are | It is suggested that multiple Designated Experts be appointed who are | |||
| able to represent the perspectives of different applications using | able to represent the perspectives of different applications using | |||
| this specification, in order to enable broadly-informed review of | this specification, in order to enable broadly-informed review of | |||
| registration decisions. In cases where a registration decision could | registration decisions. In cases where a registration decision could | |||
| be perceived as creating a conflict of interest for a particular | be perceived as creating a conflict of interest for a particular | |||
| Expert, that Expert should defer to the judgment of the other | Expert, that Expert should defer to the judgment of the other | |||
| Expert(s). | Expert(s). | |||
| 7.1. JSON Web Key Parameters Registry | 8.1. JSON Web Key Parameters Registry | |||
| This specification establishes the IANA JSON Web Key Parameters | This specification establishes the IANA JSON Web Key Parameters | |||
| registry for JWK parameter names. The registry records the parameter | registry for JWK parameter names. The registry records the parameter | |||
| name, the key type(s) that the parameter is used with, and a | name, the key type(s) that the parameter is used with, and a | |||
| reference to the specification that defines it. It also records | reference to the specification that defines it. It also records | |||
| whether the parameter conveys public or private information. This | whether the parameter conveys public or private information. This | |||
| specification registers the parameter names defined in Section 3. | specification registers the parameter names defined in Section 4. | |||
| The same JWK parameter name may be registered multiple times, | The same JWK parameter name may be registered multiple times, | |||
| provided that duplicate parameter registrations are only for key type | provided that duplicate parameter registrations are only for key type | |||
| specific JWK parameters; in this case, the meaning of the duplicate | specific JWK parameters; in this case, the meaning of the duplicate | |||
| parameter name is disambiguated by the "kty" value of the JWK | parameter name is disambiguated by the "kty" value of the JWK | |||
| containing it. | containing it. | |||
| 7.1.1. Registration Template | 8.1.1. Registration Template | |||
| Parameter Name: | Parameter Name: | |||
| The name requested (e.g., "example"). Because a core goal of this | The name requested (e.g., "example"). Because a core goal of this | |||
| specification is for the resulting representations to be compact, | specification is for the resulting representations to be compact, | |||
| it is RECOMMENDED that the name be short -- not to exceed 8 | it is RECOMMENDED that the name be short -- not to exceed 8 | |||
| characters without a compelling reason to do so. This name is | characters without a compelling reason to do so. This name is | |||
| case-sensitive. Names may not match other registered names in a | case-sensitive. Names may not match other registered names in a | |||
| case-insensitive manner unless the Designated Expert(s) state that | case-insensitive manner unless the Designated Expert(s) state that | |||
| there is a compelling reason to allow an exception in this | there is a compelling reason to allow an exception in this | |||
| particular case. However, matching names may be registered, | particular case. However, matching names may be registered, | |||
| skipping to change at page 12, line 39 ¶ | skipping to change at page 13, line 21 ¶ | |||
| For Standards Track RFCs, state "IESG". For others, give the name | For Standards Track RFCs, state "IESG". For others, give the name | |||
| of the responsible party. Other details (e.g., postal address, | of the responsible party. Other details (e.g., postal address, | |||
| email address, home page URI) may also be included. | email address, home page URI) may also be included. | |||
| Specification Document(s): | Specification Document(s): | |||
| Reference to the document(s) that specify the parameter, | Reference to the document(s) that specify the parameter, | |||
| preferably including URI(s) that can be used to retrieve copies of | preferably including URI(s) that can be used to retrieve copies of | |||
| the document(s). An indication of the relevant sections may also | the document(s). An indication of the relevant sections may also | |||
| be included but is not required. | be included but is not required. | |||
| 7.1.2. Initial Registry Contents | 8.1.2. Initial Registry Contents | |||
| o Parameter Name: "kty" | o Parameter Name: "kty" | |||
| o Parameter Description: Key Type | o Parameter Description: Key Type | |||
| o Used with "kty" Value(s): * | o Used with "kty" Value(s): * | |||
| o Parameter Information Class: Public | o Parameter Information Class: Public | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.1 of [[ this document ]] | o Specification Document(s): Section 4.1 of [[ this document ]] | |||
| o Parameter Name: "use" | o Parameter Name: "use" | |||
| o Parameter Description: Public Key Use | o Parameter Description: Public Key Use | |||
| o Used with "kty" Value(s): * | o Used with "kty" Value(s): * | |||
| o Parameter Information Class: Public | o Parameter Information Class: Public | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.2 of [[ this document ]] | o Specification Document(s): Section 4.2 of [[ this document ]] | |||
| o Parameter Name: "key_ops" | o Parameter Name: "key_ops" | |||
| o Parameter Description: Key Operations | o Parameter Description: Key Operations | |||
| o Used with "kty" Value(s): * | o Used with "kty" Value(s): * | |||
| o Parameter Information Class: Public | o Parameter Information Class: Public | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.3 of [[ this document ]] | o Specification Document(s): Section 4.3 of [[ this document ]] | |||
| o Parameter Name: "alg" | o Parameter Name: "alg" | |||
| o Parameter Description: Algorithm | o Parameter Description: Algorithm | |||
| o Used with "kty" Value(s): * | o Used with "kty" Value(s): * | |||
| o Parameter Information Class: Public | o Parameter Information Class: Public | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.4 of [[ this document ]] | o Specification Document(s): Section 4.4 of [[ this document ]] | |||
| o Parameter Name: "kid" | o Parameter Name: "kid" | |||
| o Parameter Description: Key ID | o Parameter Description: Key ID | |||
| o Used with "kty" Value(s): * | o Used with "kty" Value(s): * | |||
| o Parameter Information Class: Public | o Parameter Information Class: Public | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.5 of [[ this document ]] | o Specification Document(s): Section 4.5 of [[ this document ]] | |||
| o Parameter Name: "x5u" | o Parameter Name: "x5u" | |||
| o Parameter Description: X.509 URL | o Parameter Description: X.509 URL | |||
| o Used with "kty" Value(s): * | o Used with "kty" Value(s): * | |||
| o Parameter Information Class: Public | o Parameter Information Class: Public | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.6 of [[ this document ]] | o Specification Document(s): Section 4.6 of [[ this document ]] | |||
| o Parameter Name: "x5c" | o Parameter Name: "x5c" | |||
| o Parameter Description: X.509 Certificate Chain | o Parameter Description: X.509 Certificate Chain | |||
| o Used with "kty" Value(s): * | o Used with "kty" Value(s): * | |||
| o Parameter Information Class: Public | o Parameter Information Class: Public | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.7 of [[ this document ]] | o Specification Document(s): Section 4.7 of [[ this document ]] | |||
| o Parameter Name: "x5t" | o Parameter Name: "x5t" | |||
| o Parameter Description: X.509 Certificate SHA-1 Thumbprint | o Parameter Description: X.509 Certificate SHA-1 Thumbprint | |||
| o Used with "kty" Value(s): * | o Used with "kty" Value(s): * | |||
| o Parameter Information Class: Public | o Parameter Information Class: Public | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.8 of [[ this document ]] | o Specification Document(s): Section 4.8 of [[ this document ]] | |||
| 7.2. JSON Web Key Use Registry | o Parameter Name: "x5t#S256" | |||
| o Parameter Description: X.509 Certificate SHA-256 Thumbprint | ||||
| o Used with "kty" Value(s): * | ||||
| o Parameter Information Class: Public | ||||
| o Change Controller: IESG | ||||
| o Specification Document(s): Section 4.9 of [[ this document ]] | ||||
| 8.2. JSON Web Key Use Registry | ||||
| This specification establishes the IANA JSON Web Key Use registry for | This specification establishes the IANA JSON Web Key Use registry for | |||
| JWK "use" (public key use) member values. The registry records the | JWK "use" (public key use) member values. The registry records the | |||
| public key use value and a reference to the specification that | public key use value and a reference to the specification that | |||
| defines it. This specification registers the parameter names defined | defines it. This specification registers the parameter names defined | |||
| in Section 3.2. | in Section 4.2. | |||
| 7.2.1. Registration Template | ||||
| 8.2.1. Registration Template | ||||
| Use Member Value: | Use Member Value: | |||
| The name requested (e.g., "example"). Because a core goal of this | The name requested (e.g., "example"). Because a core goal of this | |||
| specification is for the resulting representations to be compact, | specification is for the resulting representations to be compact, | |||
| it is RECOMMENDED that the name be short -- not to exceed 8 | it is RECOMMENDED that the name be short -- not to exceed 8 | |||
| characters without a compelling reason to do so. This name is | characters without a compelling reason to do so. This name is | |||
| case-sensitive. Names may not match other registered names in a | case-sensitive. Names may not match other registered names in a | |||
| case-insensitive manner unless the Designated Expert(s) state that | case-insensitive manner unless the Designated Expert(s) state that | |||
| there is a compelling reason to allow an exception in this | there is a compelling reason to allow an exception in this | |||
| particular case. | particular case. | |||
| skipping to change at page 14, line 39 ¶ | skipping to change at page 15, line 28 ¶ | |||
| For Standards Track RFCs, state "IESG". For others, give the name | For Standards Track RFCs, state "IESG". For others, give the name | |||
| of the responsible party. Other details (e.g., postal address, | of the responsible party. Other details (e.g., postal address, | |||
| email address, home page URI) may also be included. | email address, home page URI) may also be included. | |||
| Specification Document(s): | Specification Document(s): | |||
| Reference to the document(s) that specify the parameter, | Reference to the document(s) that specify the parameter, | |||
| preferably including URI(s) that can be used to retrieve copies of | preferably including URI(s) that can be used to retrieve copies of | |||
| the document(s). An indication of the relevant sections may also | the document(s). An indication of the relevant sections may also | |||
| be included but is not required. | be included but is not required. | |||
| 7.2.2. Initial Registry Contents | 8.2.2. Initial Registry Contents | |||
| o Use Member Value: "sig" | o Use Member Value: "sig" | |||
| o Use Description: Signature or MAC | o Use Description: Signature or MAC | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.2 of [[ this document ]] | o Specification Document(s): Section 4.2 of [[ this document ]] | |||
| o Use Member Value: "enc" | o Use Member Value: "enc" | |||
| o Use Description: Encryption | o Use Description: Encryption | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.2 of [[ this document ]] | o Specification Document(s): Section 4.2 of [[ this document ]] | |||
| 7.3. JSON Web Key Operations Registry | 8.3. JSON Web Key Operations Registry | |||
| This specification establishes the IANA JSON Web Key Operations | This specification establishes the IANA JSON Web Key Operations | |||
| registry for values of JWK "key_ops" array elements. The registry | registry for values of JWK "key_ops" array elements. The registry | |||
| records the key operation value and a reference to the specification | records the key operation value and a reference to the specification | |||
| that defines it. This specification registers the parameter names | that defines it. This specification registers the parameter names | |||
| defined in Section 3.3. | defined in Section 4.3. | |||
| 7.3.1. Registration Template | ||||
| 8.3.1. Registration Template | ||||
| Key Operation Value: | Key Operation Value: | |||
| The name requested (e.g., "example"). Because a core goal of this | The name requested (e.g., "example"). Because a core goal of this | |||
| specification is for the resulting representations to be compact, | specification is for the resulting representations to be compact, | |||
| it is RECOMMENDED that the name be short -- not to exceed 8 | it is RECOMMENDED that the name be short -- not to exceed 8 | |||
| characters without a compelling reason to do so. This name is | characters without a compelling reason to do so. This name is | |||
| case-sensitive. Names may not match other registered names in a | case-sensitive. Names may not match other registered names in a | |||
| case-insensitive manner unless the Designated Expert(s) state that | case-insensitive manner unless the Designated Expert(s) state that | |||
| there is a compelling reason to allow an exception in this | there is a compelling reason to allow an exception in this | |||
| particular case. | particular case. | |||
| skipping to change at page 15, line 40 ¶ | skipping to change at page 16, line 29 ¶ | |||
| For Standards Track RFCs, state "IESG". For others, give the name | For Standards Track RFCs, state "IESG". For others, give the name | |||
| of the responsible party. Other details (e.g., postal address, | of the responsible party. Other details (e.g., postal address, | |||
| email address, home page URI) may also be included. | email address, home page URI) may also be included. | |||
| Specification Document(s): | Specification Document(s): | |||
| Reference to the document(s) that specify the parameter, | Reference to the document(s) that specify the parameter, | |||
| preferably including URI(s) that can be used to retrieve copies of | preferably including URI(s) that can be used to retrieve copies of | |||
| the document(s). An indication of the relevant sections may also | the document(s). An indication of the relevant sections may also | |||
| be included but is not required. | be included but is not required. | |||
| 7.3.2. Initial Registry Contents | 8.3.2. Initial Registry Contents | |||
| o Key Operation Value: "sign" | o Key Operation Value: "sign" | |||
| o Key Operation Description: Compute signature or MAC | o Key Operation Description: Compute signature or MAC | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.3 of [[ this document ]] | o Specification Document(s): Section 4.3 of [[ this document ]] | |||
| o Key Operation Value: "verify" | o Key Operation Value: "verify" | |||
| o Key Operation Description: Verify signature or MAC | o Key Operation Description: Verify signature or MAC | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.3 of [[ this document ]] | o Specification Document(s): Section 4.3 of [[ this document ]] | |||
| o Key Operation Value: "encrypt" | o Key Operation Value: "encrypt" | |||
| o Key Operation Description: Encrypt content | o Key Operation Description: Encrypt content | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.3 of [[ this document ]] | o Specification Document(s): Section 4.3 of [[ this document ]] | |||
| o Key Operation Value: "decrypt" | o Key Operation Value: "decrypt" | |||
| o Key Operation Description: Decrypt content and validate | o Key Operation Description: Decrypt content and validate | |||
| decryption, if applicable | decryption, if applicable | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.3 of [[ this document ]] | o Specification Document(s): Section 4.3 of [[ this document ]] | |||
| o Key Operation Value: "wrapKey" | o Key Operation Value: "wrapKey" | |||
| o Key Operation Description: Encrypt key | o Key Operation Description: Encrypt key | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.3 of [[ this document ]] | o Specification Document(s): Section 4.3 of [[ this document ]] | |||
| o Key Operation Value: "unwrapKey" | o Key Operation Value: "unwrapKey" | |||
| o Key Operation Description: Decrypt key and validate decryption, if | o Key Operation Description: Decrypt key and validate decryption, if | |||
| applicable | applicable | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.3 of [[ this document ]] | o Specification Document(s): Section 4.3 of [[ this document ]] | |||
| o Key Operation Value: "deriveKey" | o Key Operation Value: "deriveKey" | |||
| o Key Operation Description: Derive key | o Key Operation Description: Derive key | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.3 of [[ this document ]] | o Specification Document(s): Section 4.3 of [[ this document ]] | |||
| o Key Operation Value: "deriveBits" | o Key Operation Value: "deriveBits" | |||
| o Key Operation Description: Derive bits not to be used as a key | o Key Operation Description: Derive bits not to be used as a key | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): Section 3.3 of [[ this document ]] | o Specification Document(s): Section 4.3 of [[ this document ]] | |||
| 7.4. JSON Web Key Set Parameters Registry | 8.4. JSON Web Key Set Parameters Registry | |||
| This specification establishes the IANA JSON Web Key Set Parameters | This specification establishes the IANA JSON Web Key Set Parameters | |||
| registry for JWK Set parameter names. The registry records the | registry for JWK Set parameter names. The registry records the | |||
| parameter name and a reference to the specification that defines it. | parameter name and a reference to the specification that defines it. | |||
| This specification registers the parameter names defined in | This specification registers the parameter names defined in | |||
| Section 4. | Section 5. | |||
| 7.4.1. Registration Template | 8.4.1. Registration Template | |||
| Parameter Name: | Parameter Name: | |||
| The name requested (e.g., "example"). Because a core goal of this | The name requested (e.g., "example"). Because a core goal of this | |||
| specification is for the resulting representations to be compact, | specification is for the resulting representations to be compact, | |||
| it is RECOMMENDED that the name be short -- not to exceed 8 | it is RECOMMENDED that the name be short -- not to exceed 8 | |||
| characters without a compelling reason to do so. This name is | characters without a compelling reason to do so. This name is | |||
| case-sensitive. Names may not match other registered names in a | case-sensitive. Names may not match other registered names in a | |||
| case-insensitive manner unless the Designated Expert(s) state that | case-insensitive manner unless the Designated Expert(s) state that | |||
| there is a compelling reason to allow an exception in this | there is a compelling reason to allow an exception in this | |||
| particular case. | particular case. | |||
| skipping to change at page 17, line 22 ¶ | skipping to change at page 18, line 16 ¶ | |||
| For Standards Track RFCs, state "IESG". For others, give the name | For Standards Track RFCs, state "IESG". For others, give the name | |||
| of the responsible party. Other details (e.g., postal address, | of the responsible party. Other details (e.g., postal address, | |||
| email address, home page URI) may also be included. | email address, home page URI) may also be included. | |||
| Specification Document(s): | Specification Document(s): | |||
| Reference to the document(s) that specify the parameter, | Reference to the document(s) that specify the parameter, | |||
| preferably including URI(s) that can be used to retrieve copies of | preferably including URI(s) that can be used to retrieve copies of | |||
| the document(s). An indication of the relevant sections may also | the document(s). An indication of the relevant sections may also | |||
| be included but is not required. | be included but is not required. | |||
| 7.4.2. Initial Registry Contents | 8.4.2. Initial Registry Contents | |||
| o Parameter Name: "keys" | o Parameter Name: "keys" | |||
| o Parameter Description: Array of JWK values | o Parameter Description: Array of JWK values | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| o Specification Document(s): Section 4.1 of [[ this document ]] | o Specification Document(s): Section 5.1 of [[ this document ]] | |||
| 7.5. Media Type Registration | 8.5. Media Type Registration | |||
| 7.5.1. Registry Contents | 8.5.1. Registry Contents | |||
| This specification registers the "application/jwk+json" and | This specification registers the "application/jwk+json" and | |||
| "application/jwk-set+json" Media Types [RFC2046] in the MIME Media | "application/jwk-set+json" Media Types [RFC2046] in the MIME Media | |||
| Types registry [IANA.MediaTypes], which can be used to indicate, | Types registry [IANA.MediaTypes], which can be used to indicate, | |||
| respectively, that the content is a JWK or a JWK Set. | respectively, that the content is a JWK or a JWK Set. | |||
| o Type Name: application | o Type Name: application | |||
| o Subtype Name: jwk+json | o Subtype Name: jwk+json | |||
| o Required Parameters: n/a | o Required Parameters: n/a | |||
| o Optional Parameters: n/a | o Optional Parameters: n/a | |||
| skipping to change at page 18, line 34 ¶ | skipping to change at page 19, line 27 ¶ | |||
| o Applications that use this media type: TBD | o Applications that use this media type: TBD | |||
| o Additional Information: Magic number(s): n/a, File extension(s): | o Additional Information: Magic number(s): n/a, File extension(s): | |||
| n/a, Macintosh file type code(s): n/a | n/a, Macintosh file type code(s): n/a | |||
| o Person & email address to contact for further information: Michael | o Person & email address to contact for further information: Michael | |||
| B. Jones, mbj@microsoft.com | B. Jones, mbj@microsoft.com | |||
| o Intended Usage: COMMON | o Intended Usage: COMMON | |||
| o Restrictions on Usage: none | o Restrictions on Usage: none | |||
| o Author: Michael B. Jones, mbj@microsoft.com | o Author: Michael B. Jones, mbj@microsoft.com | |||
| o Change Controller: IESG | o Change Controller: IESG | |||
| 8. Security Considerations | 9. Security Considerations | |||
| All of the security issues faced by any cryptographic application | All of the security issues faced by any cryptographic application | |||
| must be faced by a JWS/JWE/JWK agent. Among these issues are | must be faced by a JWS/JWE/JWK agent. Among these issues are | |||
| protecting the user's private and symmetric keys, preventing various | protecting the user's private and symmetric keys, preventing various | |||
| attacks, and helping the user avoid mistakes such as inadvertently | attacks, and helping the user avoid mistakes such as inadvertently | |||
| encrypting a message for the wrong recipient. The entire list of | encrypting a message for the wrong recipient. The entire list of | |||
| security considerations is beyond the scope of this document, but | security considerations is beyond the scope of this document, but | |||
| some significant considerations are listed here. | some significant considerations are listed here. | |||
| 9.1. Key Provenance and Trust | ||||
| One should place no more trust in the data associated with a key than | One should place no more trust in the data associated with a key than | |||
| in than the method by which it was obtained and in the | in than the method by which it was obtained and in the | |||
| trustworthiness of the entity asserting an association with the key. | trustworthiness of the entity asserting an association with the key. | |||
| Any data associated with a key that is obtained in an untrusted | Any data associated with a key that is obtained in an untrusted | |||
| manner should be treated with skepticism. | manner should be treated with skepticism. | |||
| The security considerations in Section 12.3 of XML DSIG 2.0 | ||||
| [W3C.NOTE-xmldsig-core2-20130411] about the strength of a signature | ||||
| depending upon all the links in the security chain also apply to this | ||||
| specification. | ||||
| The TLS Requirements in [JWS] also apply to this specification. | ||||
| 9.2. Preventing Disclosure of Non-Public Key Information | ||||
| Private and symmetric keys MUST be protected from disclosure to | Private and symmetric keys MUST be protected from disclosure to | |||
| unintended parties. One recommended means of doing so is to encrypt | unintended parties. One recommended means of doing so is to encrypt | |||
| JWKs or JWK Sets containing them by using the JWK or JWK Set value as | JWKs or JWK Sets containing them by using the JWK or JWK Set value as | |||
| the plaintext of a JWE. | the plaintext of a JWE. | |||
| The security considerations in RFC 3447 [RFC3447] and RFC 6030 | The security considerations in RFC 3447 [RFC3447] and RFC 6030 | |||
| [RFC6030] about protecting private and symmetric keys, key usage, and | [RFC6030] about protecting private and symmetric keys, key usage, and | |||
| information leakage also apply to this specification. | information leakage also apply to this specification. | |||
| The security considerations in XML DSIG 2.0 | 9.3. RSA Private Key Representations and Blinding | |||
| [W3C.NOTE-xmldsig-core2-20130411], about key representations also | ||||
| apply to this specification, other than those that are XML specific. | ||||
| The TLS Requirements in [JWS] also apply to this specification. | The RSA Key blinding operation [Kocher], which is a defense against | |||
| some timing attacks, requires all of the RSA key values "n", "e", and | ||||
| "d". However, some RSA private key representations do not include | ||||
| the public exponent "e", but only include the modulus "n" and the | ||||
| private exponent "d". This is true, for instance, of the Java | ||||
| RSAPrivateKeySpec API, which does not include the public exponent "e" | ||||
| as a parameter. So as to enable RSA key blinding, such | ||||
| representations should be avoided. For Java, the | ||||
| RSAPrivateCrtKeySpec API can be used instead. Section 8.2.2(i) of | ||||
| the Handbook of Applied Cryptography [HAC] discusses how to compute | ||||
| the remaining RSA private key parameters, if needed, using only "n", | ||||
| "e", and "d". | ||||
| 9. References | 10. References | |||
| 9.1. Normative References | 10.1. Normative References | |||
| [ECMAScript] | [ECMAScript] | |||
| Ecma International, "ECMAScript Language Specification, | Ecma International, "ECMAScript Language Specification, | |||
| 5.1 Edition", ECMA 262, June 2011. | 5.1 Edition", ECMA 262, June 2011. | |||
| [IANA.MediaTypes] | [IANA.MediaTypes] | |||
| Internet Assigned Numbers Authority (IANA), "MIME Media | Internet Assigned Numbers Authority (IANA), "MIME Media | |||
| Types", 2005. | Types", 2005. | |||
| [ITU.X690.1994] | [ITU.X690.1994] | |||
| International Telecommunications Union, "Information | International Telecommunications Union, "Information | |||
| Technology - ASN.1 encoding rules: Specification of Basic | Technology - ASN.1 encoding rules: Specification of Basic | |||
| Encoding Rules (BER), Canonical Encoding Rules (CER) and | Encoding Rules (BER), Canonical Encoding Rules (CER) and | |||
| Distinguished Encoding Rules (DER)", ITU-T Recommendation | Distinguished Encoding Rules (DER)", ITU-T Recommendation | |||
| X.690, 1994. | X.690, 1994. | |||
| [JWA] Jones, M., "JSON Web Algorithms (JWA)", | [JWA] Jones, M., "JSON Web Algorithms (JWA)", | |||
| draft-ietf-jose-json-web-algorithms (work in progress), | draft-ietf-jose-json-web-algorithms (work in progress), | |||
| April 2014. | June 2014. | |||
| [JWE] Jones, M. and J. Hildebrand, "JSON Web Encryption (JWE)", | [JWE] Jones, M. and J. Hildebrand, "JSON Web Encryption (JWE)", | |||
| draft-ietf-jose-json-web-encryption (work in progress), | draft-ietf-jose-json-web-encryption (work in progress), | |||
| April 2014. | June 2014. | |||
| [JWS] Jones, M., Bradley, J., and N. Sakimura, "JSON Web | [JWS] Jones, M., Bradley, J., and N. Sakimura, "JSON Web | |||
| Signature (JWS)", draft-ietf-jose-json-web-signature (work | Signature (JWS)", draft-ietf-jose-json-web-signature (work | |||
| in progress), April 2014. | in progress), June 2014. | |||
| [RFC1421] Linn, J., "Privacy Enhancement for Internet Electronic | [RFC1421] Linn, J., "Privacy Enhancement for Internet Electronic | |||
| Mail: Part I: Message Encryption and Authentication | Mail: Part I: Message Encryption and Authentication | |||
| Procedures", RFC 1421, February 1993. | Procedures", RFC 1421, February 1993. | |||
| [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | |||
| Extensions (MIME) Part Two: Media Types", RFC 2046, | Extensions (MIME) Part Two: Media Types", RFC 2046, | |||
| November 1996. | November 1996. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| skipping to change at page 20, line 46 ¶ | skipping to change at page 22, line 10 ¶ | |||
| (PKIX) Certificates in the Context of Transport Layer | (PKIX) Certificates in the Context of Transport Layer | |||
| Security (TLS)", RFC 6125, March 2011. | Security (TLS)", RFC 6125, March 2011. | |||
| [RFC7159] Bray, T., "The JavaScript Object Notation (JSON) Data | [RFC7159] Bray, T., "The JavaScript Object Notation (JSON) Data | |||
| Interchange Format", RFC 7159, March 2014. | Interchange Format", RFC 7159, March 2014. | |||
| [USASCII] American National Standards Institute, "Coded Character | [USASCII] American National Standards Institute, "Coded Character | |||
| Set -- 7-bit American Standard Code for Information | Set -- 7-bit American Standard Code for Information | |||
| Interchange", ANSI X3.4, 1986. | Interchange", ANSI X3.4, 1986. | |||
| 9.2. Informative References | 10.2. Informative References | |||
| [HAC] Menezes, A., van Oorschot, P., and S. Vanstone, "Handbook | ||||
| of Applied Cryptography", CRC Press, 1996, | ||||
| <http://cacr.uwaterloo.ca/hac/about/chap8.pdf>. | ||||
| [Kocher] Kocher, P., "Timing Attacks on Implementations of Diffe- | ||||
| Hellman, RSA, DSS, and Other Systems", In Proceedings of | ||||
| the 16th Annual International Cryptology Conference | ||||
| Advances in Cryptology, Springer-Verlag, pp. 104-113, | ||||
| 1996. | ||||
| [MagicSignatures] | [MagicSignatures] | |||
| Panzer (editor), J., Laurie, B., and D. Balfanz, "Magic | Panzer (editor), J., Laurie, B., and D. Balfanz, "Magic | |||
| Signatures", January 2011. | Signatures", January 2011. | |||
| [RFC3447] Jonsson, J. and B. Kaliski, "Public-Key Cryptography | [RFC3447] Jonsson, J. and B. Kaliski, "Public-Key Cryptography | |||
| Standards (PKCS) #1: RSA Cryptography Specifications | Standards (PKCS) #1: RSA Cryptography Specifications | |||
| Version 2.1", RFC 3447, February 2003. | Version 2.1", RFC 3447, February 2003. | |||
| [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | |||
| skipping to change at page 36, line 18 ¶ | skipping to change at page 37, line 18 ¶ | |||
| Edmund Jay and Brian Campbell for validating the example. | Edmund Jay and Brian Campbell for validating the example. | |||
| This specification is the work of the JOSE Working Group, which | This specification is the work of the JOSE Working Group, which | |||
| includes dozens of active and dedicated participants. In particular, | includes dozens of active and dedicated participants. In particular, | |||
| the following individuals contributed ideas, feedback, and wording | the following individuals contributed ideas, feedback, and wording | |||
| that influenced this specification: | that influenced this specification: | |||
| Dirk Balfanz, Richard Barnes, John Bradley, Brian Campbell, Breno de | Dirk Balfanz, Richard Barnes, John Bradley, Brian Campbell, Breno de | |||
| Medeiros, Joe Hildebrand, Edmund Jay, Ben Laurie, James Manger, Matt | Medeiros, Joe Hildebrand, Edmund Jay, Ben Laurie, James Manger, Matt | |||
| Miller, Tony Nadalin, Axel Nennker, John Panzer, Eric Rescorla, Nat | Miller, Tony Nadalin, Axel Nennker, John Panzer, Eric Rescorla, Nat | |||
| Sakimura, Jim Schaad, Paul Tarjan, Hannes Tschofenig, and Sean | Sakimura, Jim Schaad, Ryan Sleevi, Paul Tarjan, Hannes Tschofenig, | |||
| Turner. | and Sean Turner. | |||
| Jim Schaad and Karen O'Donoghue chaired the JOSE working group and | Jim Schaad and Karen O'Donoghue chaired the JOSE working group and | |||
| Sean Turner, Stephen Farrell, and Kathleen Moriarty served as | Sean Turner, Stephen Farrell, and Kathleen Moriarty served as | |||
| Security area directors during the creation of this specification. | Security area directors during the creation of this specification. | |||
| Appendix E. Document History | Appendix E. Document History | |||
| [[ to be removed by the RFC Editor before publication as an RFC ]] | [[ to be removed by the RFC Editor before publication as an RFC ]] | |||
| -27 | ||||
| o Added an example JWK early in the draft. | ||||
| o Described additional security considerations. | ||||
| o Added the "x5t#S256" (X.509 Certificate SHA-256 Thumbprint) JWK | ||||
| member. | ||||
| o Addressed a few editorial issues. | ||||
| -26 | -26 | |||
| o Referenced Section 6 of RFC 6125 for TLS server certificate | o Referenced Section 6 of RFC 6125 for TLS server certificate | |||
| identity validation. | identity validation. | |||
| o Deleted misleading non-normative phrase from the "use" | o Deleted misleading non-normative phrase from the "use" | |||
| description. | description. | |||
| o Noted that octet sequences are depicted using JSON array notation. | o Noted that octet sequences are depicted using JSON array notation. | |||
| End of changes. 86 change blocks. | ||||
| 169 lines changed or deleted | 245 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||