| < draft-kivinen-ipsecme-oob-pubkey-08.txt | draft-kivinen-ipsecme-oob-pubkey-09.txt > | |||
|---|---|---|---|---|
| IP Security Maintenance and Extensions (ipsecme) T. Kivinen | IP Security Maintenance and Extensions (ipsecme) T. Kivinen | |||
| Internet-Draft INSIDE Secure | Internet-Draft INSIDE Secure | |||
| Intended status: Standards Track P. Wouters | Updates: 7296 P. Wouters | |||
| Expires: September 12, 2015 Red Hat | Intended status: Standards Track Red Hat | |||
| H. Tschofenig | Expires: October 13, 2015 H. Tschofenig | |||
| March 2015 | April 2015 | |||
| More Raw Public Keys for IKEv2 | More Raw Public Keys for IKEv2 | |||
| draft-kivinen-ipsecme-oob-pubkey-08.txt | draft-kivinen-ipsecme-oob-pubkey-09.txt | |||
| Abstract | Abstract | |||
| The Internet Key Exchange Version 2 (IKEv2) protocol currently only | The Internet Key Exchange Version 2 (IKEv2) protocol currently only | |||
| supports raw RSA keys. In some environments it is useful to make use | supports raw RSA keys. In constrained environments it is useful to | |||
| of other types of public keys, such as those based on Elliptic Curve | make use of other types of public keys, such as those based on | |||
| Cryptography. This documents adds support for other types of raw | Elliptic Curve Cryptography. This documents adds support for other | |||
| public keys to IKEv2. | types of raw public keys to IKEv2. | |||
| 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 September 12, 2015. | This Internet-Draft will expire on October 13, 2015. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2015 IETF Trust and the persons identified as the | Copyright (c) 2015 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 (http://trustee.ietf.org/ | Provisions Relating to IETF Documents (http://trustee.ietf.org/ | |||
| license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
| Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
| skipping to change at page 2, line 21 ¶ | skipping to change at page 2, line 21 ¶ | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . . 4 | 7.2. Informative References . . . . . . . . . . . . . . . . . . 4 | |||
| Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . . 5 | Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| Appendix A.1. ECDSA Example . . . . . . . . . . . . . . . . . . 5 | Appendix A.1. ECDSA Example . . . . . . . . . . . . . . . . . . 5 | |||
| Appendix A.2. RSA Example . . . . . . . . . . . . . . . . . . . 6 | Appendix A.2. RSA Example . . . . . . . . . . . . . . . . . . . 6 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 8 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 1. Introduction | 1. Introduction | |||
| Secure DNS allows public keys to be associated with domain names for | Secure DNS allows public keys to be associated with domain names for | |||
| usage with security protocols like Internet Key Exchange Version 2 | usage with security protocols like Internet Key Exchange Version 2 | |||
| (IKEv2) [RFC7296] and Transport Layer Security (TLS) but it relies on | (IKEv2) [RFC7296] and Transport Layer Security (TLS) [RFC5246] but it | |||
| extensions in those protocols to be specified. | relies on extensions in those protocols to be specified. | |||
| In [RFC5996] IKEv2 had support for PKCS #1 encoded RSA keys, i.e., a | In [RFC5996] IKEv2 had support for PKCS #1 encoded RSA keys, i.e., a | |||
| DER- encoded RSAPublicKey structure (see [RSA] and [RFC3447]). Other | DER-encoded RSAPublicKey structure (see [RSA] and [RFC3447]). Other | |||
| raw public keys types are, however, not supported. In [RFC7296] this | raw public key types are, however, not supported. In [RFC7296] this | |||
| feature was removed, and this document adds support for raw public | feature was removed, and this document adds support for raw public | |||
| keys back to IKEv2 in more generic way. | keys back to IKEv2 in a more generic way. | |||
| The TLS Out-of-Band Public Key Validation specification ([RFC7250]) | The TLS Out-of-Band Public Key Validation specification ([RFC7250]) | |||
| adds generic support for raw public keys to TLS by re-using the | adds generic support for raw public keys to TLS by re-using the | |||
| SubjectPublicKeyInfo format from the X.509 Public Key Infrastructure | SubjectPublicKeyInfo format from the X.509 Public Key Infrastructure | |||
| Certificate profile [RFC5280]. | Certificate profile [RFC5280]. | |||
| This document is similar than the TLS Out-of-Band Public Key | This document is similar to the TLS Out-of-Band Public Key Validation | |||
| Validation specification, and applies the concept to IKEv2 to support | specification, and applies the concept to IKEv2 to support all public | |||
| all public key formats defined by PKIX. This approach also allows | key formats defined by PKIX. This approach also allows future public | |||
| future public key extensions to be supported without the need to | key extensions to be supported without the need to introduce further | |||
| introduce further enhancements to IKEv2. | enhancements to IKEv2. | |||
| To support new types of public keys in IKEv2 the following changes | To support new types of public keys in IKEv2 the following changes | |||
| are needed: | are needed: | |||
| o A new Certificate Encoding format needs to be defined for carrying | o A new Certificate Encoding format needs to be defined for carrying | |||
| the SubjectPublicKeyInfo structure. [cert-encoding] specifies | the SubjectPublicKeyInfo structure. [cert-encoding] specifies | |||
| this new encoding format. | this new encoding format. | |||
| o A new Certificate Encoding type needs to be allocated from the | o A new Certificate Encoding type needs to be allocated from the | |||
| IANA registry. [iana] contains this request to IANA. | IANA registry. [iana] contains this request to IANA. | |||
| skipping to change at page 3, line 16 ¶ | skipping to change at page 3, line 17 ¶ | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Next Payload |C| RESERVED | Payload Length | | | Next Payload |C| RESERVED | Payload Length | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Cert Encoding | | | | Cert Encoding | | | |||
| +-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+ | | |||
| ~ Certificate Data ~ | ~ Certificate Data ~ | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| To support raw public keys, the field values are as follows: | ||||
| o Certificate Encoding (1 octet) - This field indicates the type of | o Certificate Encoding (1 octet) - This field indicates the type of | |||
| certificate or certificate-related information contained in the | certificate or certificate-related information contained in the | |||
| Certificate Data field. | Certificate Data field. | |||
| Certificate Encoding Value | Certificate Encoding Value | |||
| ---------------------------------------------------- | ---------------------------------------------------- | |||
| Raw Public Key TBD | Raw Public Key TBD | |||
| o Certificate Data (variable length) - Actual encoding of the | o Certificate Data (variable length) - Actual encoding of the | |||
| certificate data. The type of certificate is indicated by the | certificate data. | |||
| Certificate Encoding field. | ||||
| In order to provide a simple and standard way to indicate the key | In order to provide a simple and standard way to indicate the key | |||
| type when the encoding type is 'Raw Public Key', the | type when the encoding type is 'Raw Public Key', the | |||
| SubjectPublicKeyInfo structure of the PKIX certificate is used. This | SubjectPublicKeyInfo structure of the PKIX certificate is used. This | |||
| is a a very simple encoding, as most of the ASN.1 part can be | is a a very simple encoding, as most of the ASN.1 part can be | |||
| included literally, and recognized by block comparison. See | included literally, and recognized by block comparison. See | |||
| [RFC7250] Appendix A for a detailed breakdown. In addition, | [RFC7250] Appendix A for a detailed breakdown. In addition, | |||
| [examples] has a few examples. | [examples] has several examples. | |||
| In the case of the Certificate Request payload the Certification | In addition to the Certificate payload, the Cert Encoding for Raw | |||
| Authority field MUST be empty if the "Raw Public Key" certificate | Public Key can be used in the Certificate Request payload. In that | |||
| encoding is used. | case the Certification Authority field MUST be empty if the "Raw | |||
| Public Key" certificate encoding is used. | ||||
| Note, that we do follow public key processing rules of the section | Implementations MUST follow the public key processing rules of | |||
| 1.2 of the Additional Algorithms and Identifiers for RSA Cryptography | section 1.2 of the Additional Algorithms and Identifiers for RSA | |||
| for PKIX ([RFC4055]) even when the SubjectPublicKeyInfo is not part | Cryptography for PKIX ([RFC4055]) even when the SubjectPublicKeyInfo | |||
| of the certificate, but sent here. This means RSASSA-PSS and RSASSA- | is not part of a certificate, but rather sent as a Certificate Data | |||
| PSS-params inside the SubjectPublicKeyInfo needs to be followed. | field. This means that RSASSA-PSS and RSASSA-PSS-params inside the | |||
| SubjectPublicKeyInfo structure MUST be sent when applicable. | ||||
| 4. Security Considerations | 4. Security Considerations | |||
| An IKEv2 deployment using raw public keys needs to utilize an out-of- | An IKEv2 deployment using raw public keys needs to utilize an out-of- | |||
| band public key validation procedure to be confident in the | band public key validation procedure to be confident in the | |||
| authenticity of the keys being used. One such mechanism is to use a | authenticity of the keys being used. One way to achieve this goal is | |||
| configuration mechanism for provisioning raw public keys into the | to use a configuration mechanism for provisioning raw public keys | |||
| IKEv2 software. A suitable deployment is likely to be found with | into the IKEv2 software. "Smart object" deployments are likely to | |||
| smart objects. Yet another approach is to rely on secure DNS to | use such preconfigured public keys. | |||
| associate public keys to be associated with domain names using the | ||||
| IPSECKEY DNS RRtype [RFC4025]. More information can be found in DNS- | ||||
| Based Authentication of Named Entities (DANE) [RFC6394]. | ||||
| This document does not change the assumptions made by the IKEv2 | Another approach is to rely on secure DNS to associate public keys | |||
| specifications since "Raw RSA Key" support was already available in | with domain names using the IPSECKEY DNS RRtype [RFC4025]. More | |||
| IKEv2. This document only generalizes the raw public key support. | information can be found in DNS-Based Authentication of Named | |||
| Entities (DANE) [RFC6394]. | ||||
| This document does not change the security assumptions made by the | ||||
| IKEv2 specification since "Raw RSA Key" support was already available | ||||
| in IKEv2. This document only generalizes raw public key support. | ||||
| 5. IANA Considerations | 5. IANA Considerations | |||
| This document allocates a new value from the IKEv2 Certificate | This document allocates a new value from the IKEv2 Certificate | |||
| Encodings registry: | Encodings registry: | |||
| TBD Raw Public Key | TBD Raw Public Key | |||
| 6. Acknowledgements | 6. Acknowledgements | |||
| This document copies parts from the similar TLS document ([RFC7250]). | This document reproduces some parts of the similar TLS document | |||
| ([RFC7250]). | ||||
| 7. References | 7. References | |||
| 7.1. Normative References | 7.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | |||
| Housley, R. and W. Polk, "Internet X.509 Public Key | Housley, R. and W. Polk, "Internet X.509 Public Key | |||
| skipping to change at page 4, line 52 ¶ | skipping to change at page 5, line 9 ¶ | |||
| [RFC4055] Schaad, J., Kaliski, B. and R. Housley, "Additional | [RFC4055] Schaad, J., Kaliski, B. and R. Housley, "Additional | |||
| Algorithms and Identifiers for RSA Cryptography for use in | Algorithms and Identifiers for RSA Cryptography for use in | |||
| the Internet X.509 Public Key Infrastructure Certificate | the Internet X.509 Public Key Infrastructure Certificate | |||
| and Certificate Revocation List (CRL) Profile", RFC 4055, | and Certificate Revocation List (CRL) Profile", RFC 4055, | |||
| June 2005. | June 2005. | |||
| [RFC4754] Fu, D. and J. Solinas, "IKE and IKEv2 Authentication Using | [RFC4754] Fu, D. and J. Solinas, "IKE and IKEv2 Authentication Using | |||
| the Elliptic Curve Digital Signature Algorithm (ECDSA)", | the Elliptic Curve Digital Signature Algorithm (ECDSA)", | |||
| RFC 4754, January 2007. | RFC 4754, January 2007. | |||
| [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | ||||
| (TLS) Protocol Version 1.2", RFC 5246, August 2008. | ||||
| [RFC5480] Turner, S., Brown, D., Yiu, K., Housley, R. and T. Polk, | [RFC5480] Turner, S., Brown, D., Yiu, K., Housley, R. and T. Polk, | |||
| "Elliptic Curve Cryptography Subject Public Key | "Elliptic Curve Cryptography Subject Public Key | |||
| Information", RFC 5480, March 2009. | Information", RFC 5480, March 2009. | |||
| [RFC5996] Kaufman, C., Hoffman, P., Nir, Y. and P. Eronen, "Internet | [RFC5996] Kaufman, C., Hoffman, P., Nir, Y. and P. Eronen, "Internet | |||
| Key Exchange Protocol Version 2 (IKEv2)", RFC 5996, | Key Exchange Protocol Version 2 (IKEv2)", RFC 5996, | |||
| September 2010. | September 2010. | |||
| [RFC6394] Barnes, R., "Use Cases and Requirements for DNS-Based | [RFC6394] Barnes, R., "Use Cases and Requirements for DNS-Based | |||
| Authentication of Named Entities (DANE)", RFC 6394, | Authentication of Named Entities (DANE)", RFC 6394, | |||
| skipping to change at page 5, line 20 ¶ | skipping to change at page 5, line 35 ¶ | |||
| T. Kivinen, "Using Raw Public Keys in Transport Layer | T. Kivinen, "Using Raw Public Keys in Transport Layer | |||
| Security (TLS) and Datagram Transport Layer Security | Security (TLS) and Datagram Transport Layer Security | |||
| (DTLS)", RFC 7250, June 2014. | (DTLS)", RFC 7250, June 2014. | |||
| [RSA] R. Rivest, , A. Shamir, and L. Adleman, "A Method for | [RSA] R. Rivest, , A. Shamir, and L. Adleman, "A Method for | |||
| Obtaining Digital Signatures and Public-Key | Obtaining Digital Signatures and Public-Key | |||
| Cryptosystems", February 1978. | Cryptosystems", February 1978. | |||
| Appendix A. Examples | Appendix A. Examples | |||
| This appendix provides examples of the actual packets sent on the | This appendix provides examples of the actual payloads sent on the | |||
| wire. | wire. | |||
| Appendix A.1. ECDSA Example | Appendix A.1. ECDSA Example | |||
| This first example uses the 256-bit ECDSA private/public key pair | This first example uses the 256-bit ECDSA private/public key pair | |||
| defined in the section 8.1. of the IKEv2 ECDSA document [RFC4754]. | defined in section 8.1 of the IKEv2 ECDSA document [RFC4754]. | |||
| The public key is as followed: | The public key is as follows: | |||
| o Algorithm : id-ecPublicKey (1.2.840.10045.2.1) | o Algorithm : id-ecPublicKey (1.2.840.10045.2.1) | |||
| o Fixed curve: secp256r1 (1.2.840.10045.3.1.7) | o Fixed curve: secp256r1 (1.2.840.10045.3.1.7) | |||
| o Public key x coordinate : cb28e099 9b9c7715 fd0a80d8 e47a7707 | o Public key x coordinate : cb28e099 9b9c7715 fd0a80d8 e47a7707 | |||
| 9716cbbf 917dd72e 97566ea1 c066957c | 9716cbbf 917dd72e 97566ea1 c066957c | |||
| o Public key y coordinate : 2b57c023 5fb74897 68d058ff 4911c20f | o Public key y coordinate : 2b57c023 5fb74897 68d058ff 4911c20f | |||
| dbe71e36 99d91339 afbb903e e17255dc | dbe71e36 99d91339 afbb903e e17255dc | |||
| The SubjectPublicKeyInfo ASN.1 object is as follows: | The SubjectPublicKeyInfo ASN.1 object is as follows: | |||
| skipping to change at page 6, line 12 ¶ | skipping to change at page 6, line 30 ¶ | |||
| The final encoded SubjectPublicKeyInfo object is as follows: | The final encoded SubjectPublicKeyInfo object is as follows: | |||
| 00000000: 3059 3013 0607 2a86 48ce 3d02 0106 082a | 00000000: 3059 3013 0607 2a86 48ce 3d02 0106 082a | |||
| 00000010: 8648 ce3d 0301 0703 4200 04cb 28e0 999b | 00000010: 8648 ce3d 0301 0703 4200 04cb 28e0 999b | |||
| 00000020: 9c77 15fd 0a80 d8e4 7a77 0797 16cb bf91 | 00000020: 9c77 15fd 0a80 d8e4 7a77 0797 16cb bf91 | |||
| 00000030: 7dd7 2e97 566e a1c0 6695 7c2b 57c0 235f | 00000030: 7dd7 2e97 566e a1c0 6695 7c2b 57c0 235f | |||
| 00000040: b748 9768 d058 ff49 11c2 0fdb e71e 3699 | 00000040: b748 9768 d058 ff49 11c2 0fdb e71e 3699 | |||
| 00000050: d913 39af bb90 3ee1 7255 dc | 00000050: d913 39af bb90 3ee1 7255 dc | |||
| This will result the final IKEv2 Certificate Payload to be: | This will result in the final IKEv2 Certificate Payload: | |||
| 00000000: NN00 0060 XX30 5930 1306 072a 8648 ce3d | 00000000: NN00 0060 XX30 5930 1306 072a 8648 ce3d | |||
| 00000010: 0201 0608 2a86 48ce 3d03 0107 0342 0004 | 00000010: 0201 0608 2a86 48ce 3d03 0107 0342 0004 | |||
| 00000020: cb28 e099 9b9c 7715 fd0a 80d8 e47a 7707 | 00000020: cb28 e099 9b9c 7715 fd0a 80d8 e47a 7707 | |||
| 00000030: 9716 cbbf 917d d72e 9756 6ea1 c066 957c | 00000030: 9716 cbbf 917d d72e 9756 6ea1 c066 957c | |||
| 00000040: 2b57 c023 5fb7 4897 68d0 58ff 4911 c20f | 00000040: 2b57 c023 5fb7 4897 68d0 58ff 4911 c20f | |||
| 00000050: dbe7 1e36 99d9 1339 afbb 903e e172 55dc | 00000050: dbe7 1e36 99d9 1339 afbb 903e e172 55dc | |||
| Where the NN will be the next payload type (i.e. that value depends | Where NN is the next payload type (i.e. the type of the payload that | |||
| on what is the next payload after this certificate payload). | immediately follows this Certificate payload). | |||
| Note to the RFC editor / IANA, replace the XX above with the newly | Note to the RFC editor / IANA, replace the XX above with the newly | |||
| allocated Raw Public Key number, and remove this note. | allocated Raw Public Key number (in hex notation), and remove this | |||
| note. | ||||
| Appendix A.2. RSA Example | Appendix A.2. RSA Example | |||
| This second example uses random 1024-bit RSA key. | This second example uses a random 1024-bit RSA key. | |||
| The public key is as followed: | The public key is as follows: | |||
| o Algorithm : rsaEncryption (1.2.840.113549.1.1.1) | o Algorithm : rsaEncryption (1.2.840.113549.1.1.1) | |||
| o Modulus n (1024 bits, decimal): | o Modulus n (1024 bits, decimal): | |||
| 1323562071162740912417075551025599045700 | 1323562071162740912417075551025599045700 | |||
| 3972512968992059076067098474693867078469 | 3972512968992059076067098474693867078469 | |||
| 7654066339302927451756327389839253751712 | 7654066339302927451756327389839253751712 | |||
| 9485277759962777278073526290329821841100 | 9485277759962777278073526290329821841100 | |||
| 9721044682579432931952695408402169276996 | 9721044682579432931952695408402169276996 | |||
| 5181887843758615443536914372816830537901 | 5181887843758615443536914372816830537901 | |||
| 8976615344413864477626646564638249672329 | 8976615344413864477626646564638249672329 | |||
| skipping to change at page 7, line 23 ¶ | skipping to change at page 7, line 42 ¶ | |||
| 00000030: e8ca 348e bdca 5742 31ca dc97 12e2 09b1 | 00000030: e8ca 348e bdca 5742 31ca dc97 12e2 09b1 | |||
| 00000040: fddb a58a 8c62 b369 038a 3d1e aa72 7c1f | 00000040: fddb a58a 8c62 b369 038a 3d1e aa72 7c1f | |||
| 00000050: 39ae 49ed 6ebc 30f8 d9b5 2e23 385a 4019 | 00000050: 39ae 49ed 6ebc 30f8 d9b5 2e23 385a 4019 | |||
| 00000060: 1585 8c59 be72 f343 fb1e b87b 16ff c5ab | 00000060: 1585 8c59 be72 f343 fb1e b87b 16ff c5ab | |||
| 00000070: 0f8f 8fe9 f7cb 3e66 3d8f e9f9 ecfa 1230 | 00000070: 0f8f 8fe9 f7cb 3e66 3d8f e9f9 ecfa 1230 | |||
| 00000080: 66f3 6835 8cea efd3 0203 0100 01 | 00000080: 66f3 6835 8cea efd3 0203 0100 01 | |||
| The first byte (00) of the bit string indicates that there is no | The first byte (00) of the bit string indicates that there is no | |||
| "number of unused bits". Inside that bit string there is an ASN.1 | "number of unused bits". Inside that bit string there is an ASN.1 | |||
| sequence having 2 integers. The second byte (30) indicates that this | sequence having 2 integers. The second byte (30) indicates that this | |||
| is beginning of the sequence, and then next byte (81) indicates the | is beginning of the sequence, and the next byte (81) indicates the | |||
| length does not fit in 7-bits, but requires one byte, so the length | length does not fit in 7 bits, but requires one byte, so the length | |||
| is in the next byte (89). Then starts the first integer with tag (02) | is in the next byte (89). Then starts the first integer with tag (02) | |||
| and length (81 81). After that we have the modulus (prefixed with 0 | and length (81 81). After that we have the modulus (prefixed with 0 | |||
| so it will not be negative number). After the modulus there is new | so it will not be a negative number). After the modulus there follows | |||
| tag (02) and length (03) of the exponent, and the last 3 bytes are | the tag (02) and length (03) of the exponent, and the last 3 bytes | |||
| the exponent. | are the exponent. | |||
| The final encoded SubjectPublicKeyInfo object is as follows: | The final encoded SubjectPublicKeyInfo object is as follows: | |||
| 00000000: 3081 9f30 0d06 092a 8648 86f7 0d01 0101 | 00000000: 3081 9f30 0d06 092a 8648 86f7 0d01 0101 | |||
| 00000010: 0500 0381 8d00 3081 8902 8181 00bc 7b43 | 00000010: 0500 0381 8d00 3081 8902 8181 00bc 7b43 | |||
| 00000020: 4749 c7b3 8600 bfa8 4b44 f881 879a 2dda | 00000020: 4749 c7b3 8600 bfa8 4b44 f881 879a 2dda | |||
| 00000030: 08d1 f014 5af5 806c 2aed 6a61 72ff 0dc3 | 00000030: 08d1 f014 5af5 806c 2aed 6a61 72ff 0dc3 | |||
| 00000040: d4cd 6016 38e8 ca34 8ebd ca57 4231 cadc | 00000040: d4cd 6016 38e8 ca34 8ebd ca57 4231 cadc | |||
| 00000050: 9712 e209 b1fd dba5 8a8c 62b3 6903 8a3d | 00000050: 9712 e209 b1fd dba5 8a8c 62b3 6903 8a3d | |||
| 00000060: 1eaa 727c 1f39 ae49 ed6e bc30 f8d9 b52e | 00000060: 1eaa 727c 1f39 ae49 ed6e bc30 f8d9 b52e | |||
| 00000070: 2338 5a40 1915 858c 59be 72f3 43fb 1eb8 | 00000070: 2338 5a40 1915 858c 59be 72f3 43fb 1eb8 | |||
| 00000080: 7b16 ffc5 ab0f 8f8f e9f7 cb3e 663d 8fe9 | 00000080: 7b16 ffc5 ab0f 8f8f e9f7 cb3e 663d 8fe9 | |||
| 00000090: f9ec fa12 3066 f368 358c eaef d302 0301 | 00000090: f9ec fa12 3066 f368 358c eaef d302 0301 | |||
| 000000a0: 0001 | 000000a0: 0001 | |||
| This will result the final IKEv2 Certificate Payload to be: | This will result in the final IKEv2 Certificate Payload: | |||
| 00000000: NN00 00a7 XX30 819f 300d 0609 2a86 4886 | 00000000: NN00 00a7 XX30 819f 300d 0609 2a86 4886 | |||
| 00000010: f70d 0101 0105 0003 818d 0030 8189 0281 | 00000010: f70d 0101 0105 0003 818d 0030 8189 0281 | |||
| 00000020: 8100 bc7b 4347 49c7 b386 00bf a84b 44f8 | 00000020: 8100 bc7b 4347 49c7 b386 00bf a84b 44f8 | |||
| 00000030: 8187 9a2d da08 d1f0 145a f580 6c2a ed6a | 00000030: 8187 9a2d da08 d1f0 145a f580 6c2a ed6a | |||
| 00000040: 6172 ff0d c3d4 cd60 1638 e8ca 348e bdca | 00000040: 6172 ff0d c3d4 cd60 1638 e8ca 348e bdca | |||
| 00000050: 5742 31ca dc97 12e2 09b1 fddb a58a 8c62 | 00000050: 5742 31ca dc97 12e2 09b1 fddb a58a 8c62 | |||
| 00000060: b369 038a 3d1e aa72 7c1f 39ae 49ed 6ebc | 00000060: b369 038a 3d1e aa72 7c1f 39ae 49ed 6ebc | |||
| 00000070: 30f8 d9b5 2e23 385a 4019 1585 8c59 be72 | 00000070: 30f8 d9b5 2e23 385a 4019 1585 8c59 be72 | |||
| 00000080: f343 fb1e b87b 16ff c5ab 0f8f 8fe9 f7cb | 00000080: f343 fb1e b87b 16ff c5ab 0f8f 8fe9 f7cb | |||
| 00000090: 3e66 3d8f e9f9 ecfa 1230 66f3 6835 8cea | 00000090: 3e66 3d8f e9f9 ecfa 1230 66f3 6835 8cea | |||
| 000000a0: efd3 0203 0100 01 | 000000a0: efd3 0203 0100 01 | |||
| Where the NN will be the next payload type (i.e. that value depends | ||||
| on what is the next payload after this certificate payload). | Where NN is the next payload type (i.e. the type of the payload that | |||
| immediately follows this Certificate payload). | ||||
| Note to the RFC editor / IANA, replace the XX above with the newly | Note to the RFC editor / IANA, replace the XX above with the newly | |||
| allocated Raw Public Key number, and remove this note. | allocated Raw Public Key number, and remove this note. | |||
| Authors' Addresses | Authors' Addresses | |||
| Tero Kivinen | Tero Kivinen | |||
| INSIDE Secure | INSIDE Secure | |||
| Eerikinkatu 28 | Eerikinkatu 28 | |||
| HELSINKI, FI-00180 | HELSINKI, FI-00180 | |||
| End of changes. 29 change blocks. | ||||
| 59 lines changed or deleted | 70 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/ | ||||