rfc9548.original | rfc9548.txt | |||
---|---|---|---|---|
Network Working Group E. Karelina, Ed. | Independent Submission E. Karelina, Ed. | |||
Internet-Draft InfoTeCS | Request for Comments: 9548 InfoTeCS | |||
Intended status: Informational December 2023 | Category: Informational March 2024 | |||
Expires: 14 June 2024 | ISSN: 2070-1721 | |||
Generating the Transport Key Containers Using the GOST Algorithms | Generating Transport Key Containers Using the GOST Algorithms | |||
draft-pkcs12-gost-08 | ||||
Abstract | Abstract | |||
This document specifies how to use "PKCS #12: Personal Information | This document specifies how to use "PKCS #12: Personal Information | |||
Exchange Syntax v1.1" (RFC 7292) to generate the transport key | Exchange Syntax v1.1" (RFC 7292) to generate transport key containers | |||
containers for storing keys and certificates in conjunction with the | for storing keys and certificates in conjunction with the Russian | |||
Russian national standard GOST algorithms. | national standard GOST algorithms. | |||
This specification has been developed outside the IETF. The purpose | This specification has been developed outside the IETF. The purpose | |||
of publication being to facilitate interoperable implementations that | of publication is to facilitate interoperable implementations that | |||
wish to support the GOST algorithms. This document does not imply | wish to support the GOST algorithms. This document does not imply | |||
IETF endorsement of the cryptographic algorithms used here. | IETF endorsement of the cryptographic algorithms used here. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This document is not an Internet Standards Track specification; it is | |||
provisions of BCP 78 and BCP 79. | published for informational purposes. | |||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This is a contribution to the RFC Series, independently of any other | |||
and may be updated, replaced, or obsoleted by other documents at any | RFC stream. The RFC Editor has chosen to publish this document at | |||
time. It is inappropriate to use Internet-Drafts as reference | its discretion and makes no statement about its value for | |||
material or to cite them other than as "work in progress." | implementation or deployment. Documents approved for publication by | |||
the RFC Editor are not candidates for any level of Internet Standard; | ||||
see Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 3 June 2024. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9548. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2023 IETF Trust and the persons identified as the | Copyright (c) 2024 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 (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. | carefully, as they describe your rights and restrictions with respect | |||
to this document. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
2. Conventions Used in This Document . . . . . . . . . . . . . . 3 | 2. Conventions Used in This Document | |||
3. Basic Terms and Definitions . . . . . . . . . . . . . . . . . 3 | 3. Basic Terms and Definitions | |||
4. PFX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 4. PFX | |||
4.1. Structure of PFX . . . . . . . . . . . . . . . . . . . . 6 | 4.1. Structure of PFX | |||
4.2. AuthenticatedSafe . . . . . . . . . . . . . . . . . . . . 6 | 4.2. AuthenticatedSafe | |||
4.2.1. Unencrypted Data . . . . . . . . . . . . . . . . . . 6 | 4.2.1. Unencrypted Data | |||
4.2.2. Password-encrypted data . . . . . . . . . . . . . . . 7 | 4.2.2. Password-Encrypted Data | |||
4.3. SafeContents and SafeBag . . . . . . . . . . . . . . . . 7 | 4.3. SafeContents and SafeBag | |||
5. GOST R 34.10–2012 key representation . . . . . . . . . . . . 8 | 5. GOST R 34.10-2012 Key Representation | |||
5.1. Masking GOST R 34.10–2012 keys . . . . . . . . . . . . . 8 | 5.1. Masking GOST R 34.10-2012 Keys | |||
5.2. KeyBag structure for GOST R 34.10–2012 key . . . . . . . 10 | 5.2. KeyBag Structure for GOST R 34.10-2012 Key | |||
5.3. OneAsymmetricKey structure . . . . . . . . . . . . . . . 10 | 5.3. OneAsymmetricKey Structure | |||
5.4. EncryptedPrivateKeyInfo structure for GOST R 34.10–2012 | 5.4. EncryptedPrivateKeyInfo Structure for GOST R 34.10-2012 Key | |||
key . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 6. GOST R 34.10-2012 Certificate Representation | |||
6. GOST R 34.10–2012 certificate representation . . . . . . . . 11 | 7. Security Mechanisms | |||
7. Security Mechanisms . . . . . . . . . . . . . . . . . . . . . 12 | 8. Security Considerations | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | 9. IANA Considerations | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | 10. ASN.1 Modules | |||
10. ASN.1 Modules . . . . . . . . . . . . . . . . . . . . . . . . 13 | 11. References | |||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 11.1. Normative References | |||
11.1. Normative References . . . . . . . . . . . . . . . . . . 13 | 11.2. Informative References | |||
11.2. Informative References . . . . . . . . . . . . . . . . . 15 | Appendix A. Examples | |||
Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 15 | A.1. Test Data | |||
A.1. Test data . . . . . . . . . . . . . . . . . . . . . . . . 15 | A.1.1. Test Certificate | |||
A.1.1. Test certificate . . . . . . . . . . . . . . . . . . 15 | A.1.2. Test Key | |||
A.1.2. Test key . . . . . . . . . . . . . . . . . . . . . . 16 | A.2. Example of a PFX with a Password-Protected Key and | |||
A.2. The example of a PFX with a password-protected key and | Unencrypted Certificate | |||
unencrypted certificate. . . . . . . . . . . . . . . . . 16 | A.2.1. PFX in BASE64 Format | |||
A.2.1. PFX in BASE64 format . . . . . . . . . . . . . . . . 16 | A.2.2. PFX in ASN.1 Format | |||
A.2.2. PFX in ASN.1 format . . . . . . . . . . . . . . . . . 17 | A.2.3. Decrypted Key Value in BASE64 Format | |||
A.2.3. Decrypted key value in BASE64 format . . . . . . . . 21 | A.2.4. Decrypted Key Value in ASN.1 Format | |||
A.2.4. Decrypted key value in ASN.1 format . . . . . . . . . 22 | A.3. Example of a PFX with a Password-Protected Key and a | |||
A.3. The example of a PFX with a password-protected key and a | Password-Protected Certificate | |||
password-protected certificate. . . . . . . . . . . . . . 22 | A.3.1. PFX in BASE64 Format | |||
A.3.1. PFX in BASE64 format . . . . . . . . . . . . . . . . 22 | A.3.2. PFX in ASN.1 Format | |||
A.3.2. PFX in ASN.1 format . . . . . . . . . . . . . . . . . 23 | A.3.3. Decrypted Key Value in BASE64 Format | |||
A.3.3. Decrypted key value in BASE64 format . . . . . . . . 26 | A.3.4. Decrypted Key Value in ASN.1 Format | |||
A.3.4. Decrypted key value in ASN.1 format . . . . . . . . . 26 | Acknowledgments | |||
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 26 | Author's Address | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 27 | ||||
1. Introduction | 1. Introduction | |||
This document provides a specification of the usage of GOST | This document provides a specification of the usage of GOST | |||
algorithms with PKCS #12 v1.1. | algorithms with PKCS #12 v1.1. | |||
PKCS #12 v1.1 describes a syntax for transfer of personal information | PKCS #12 v1.1 describes a syntax for transfer of personal information | |||
such as private keys, certificates, various secrets. | such as private keys, certificates, and various secrets. | |||
This memo describes the creating of transport key containers for keys | This memo describes the creation of transport key containers for keys | |||
and certificates of electronic signature verification keys which are | and certificates using the GOST R 34.10-2012 algorithm. The GOST R | |||
created in accordance with GOST R 34.10–2012 algorithm. The GOST R | 34.11-2012 algorithm is used to ensure the integrity of transport key | |||
34.11-2012 algorithm is used to ensure integrity of transport key | ||||
containers. | containers. | |||
Caution: | ||||
This specification is not a standard and does not have IETF community | ||||
consensus. It makes use of a cryptographic algorithm that is a | ||||
national standard for Russia. Neither the IETF nor the IRTF has | ||||
analyzed that algorithm for suitability for any given application, | ||||
and it may contain either intended or unintended weaknesses. | ||||
2. Conventions Used in This Document | 2. Conventions Used in This Document | |||
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 | |||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
3. Basic Terms and Definitions | 3. Basic Terms and Definitions | |||
Throughout this document, the following notation is used: | Throughout this document, the following notations are used: | |||
+==========+====================================================+ | P a password encoded as a Unicode UTF-8 string | |||
| Notation | Definition | | ||||
+==========+====================================================+ | ||||
| P | a password encoded as a Unicode UTF-8 string | | ||||
+----------+----------------------------------------------------+ | ||||
| S | a random initializing value | | ||||
+----------+----------------------------------------------------+ | ||||
| V^(*) | the set of all binary row vectors of finite length | | ||||
| | (hereinafter referred to as vectors) including | | ||||
| | empty string | | ||||
+----------+----------------------------------------------------+ | ||||
| V_s | the set of all binary row vectors of length s, s | | ||||
| | >= 0; if s = 0, then the set V_s consists of an | | ||||
| | empty string of length 0 | | ||||
+----------+----------------------------------------------------+ | ||||
| |A| | the number of components (a length) of the vector | | ||||
| | A belonging to V^(*) (if A is an empty string, | | ||||
| | then |A| = 0) | | ||||
+----------+----------------------------------------------------+ | ||||
| A||C | a concatenation of two octet strings A, C, i.e., a | | ||||
| | vector from V_(|A|+|C|), where the left subvector | | ||||
| | from V_(|A|) is equal to the vector A and the | | ||||
| | right subvector from V_(|C|) is equal to the | | ||||
| | vector C: A = (a_(n_1),...,a_1) in V_(n_1) and C = | | ||||
| | (c_(n_2),..., c_1) in V_(n_2), res = | | ||||
| | (a_(n_1),...,a_1,c_(n_2),..., c_1) in V_(n_1+n_2)) | | ||||
+----------+----------------------------------------------------+ | ||||
| F_q | a finite prime field represented as a set of q | | ||||
| | integers {0,1,..., q - 1}, where q > 3 – prime | | ||||
| | number | | ||||
+----------+----------------------------------------------------+ | ||||
| b mod q | the minimum non-negative number comparable to b | | ||||
| | modulo p | | ||||
+----------+----------------------------------------------------+ | ||||
Table 1: Terms and Definitions | S a random initializing value | |||
This document uses the following abbreviations and definitions: | V_s the set of byte strings of length s, where s >= 0; the string 𝑏 | |||
= (b_1,...,b_s) belongs to the set V_s if b_1,...,b_s∈{0,...,255} | ||||
+================+==================================================+ | |A| the number of components (a length) of the vector A belonging to | |||
| Abbreviations | Definition | | V^(*) (if A is an empty string, then |A| = 0) | |||
| and Terms | | | ||||
+================+==================================================+ | ||||
| Signature | one or more data elements resulting from | | ||||
| | the signature process (clause 3.12 of | | ||||
| | [ISO14888-1]). Note: the terms "digital | | ||||
| | signature", "electronic signature", and | | ||||
| | "electronic digital signature" are | | ||||
| | considered equivalent in this document. | | ||||
+----------------+--------------------------------------------------+ | ||||
| Signature key | set of private data elements specific to | | ||||
| | an entity and usable only by this entity | | ||||
| | in the signature process (clause 3.13 of | | ||||
| | [ISO14888-1]). Note: Sometimes called a | | ||||
| | private key. | | ||||
+----------------+--------------------------------------------------+ | ||||
| Verification | set of public data elements which is | | ||||
| key | mathematically related to an entity's | | ||||
| | signature key and which is used by the | | ||||
| | verifier in the verification process | | ||||
| | (clause 3.16 of [ISO14888-1]). Note: | | ||||
| | Sometimes called a public key. | | ||||
+----------------+--------------------------------------------------+ | ||||
| ASN.1 | Abstract Syntax Notation One, as defined | | ||||
| | in [X.680]. | | ||||
+----------------+--------------------------------------------------+ | ||||
| BER | Basic Encoding Rules, as defined in | | ||||
| | [X.690]. | | ||||
+----------------+--------------------------------------------------+ | ||||
| HMAC_GOSTR3411 | Hashed-Based Message Authentication | | ||||
| | Code. A function for calculating a | | ||||
| | Message Authentication Code (MAC) based | | ||||
| | on the GOST R 34.11-2012 hash function | | ||||
| | (see [RFC6986]) with 512-bit output in | | ||||
| | accordance with [RFC2104]. | | ||||
+----------------+--------------------------------------------------+ | ||||
Table 2: Abbreviations and Definition | A||C a concatenation of two byte strings A, C from V_s, i.e., a | |||
string from V_(|A|+|C|), where the left substring from V_(|A|) is | ||||
equal to the string A and the right substring from V_(|C|) is | ||||
equal to the string C: A = (a_(n_1),...,a_1) in V_(n_1) and C = | ||||
(c_(n_2),...,c_1) in V_(n_2), res = | ||||
(a_(n_1),...,a_1,c_(n_2),...,c_1) in V_(n_1+n_2)) | ||||
F_q a finite prime field represented as a set of q integers | ||||
{0,1,...,q - 1}, where q > 3 - prime number | ||||
b mod q the minimum non-negative number comparable to b modulo p | ||||
INT(b) integer INT(b) = b_1+b_2∙256+...+b_s∙ 256^(s-1), where b∈ V_s | ||||
This document uses the following terms and abbreviations: | ||||
Signature one or more data elements resulting from the signature | ||||
process (Clause 3.12 of [ISO14888-1]). Note: The terms "digital | ||||
signature", "electronic signature", and "electronic digital | ||||
signature" are considered equivalent in this document. | ||||
Signature key set of private data elements specific to an entity and | ||||
usable only by this entity in the signature process (Clause 3.13 | ||||
of [ISO14888-1]). Note: Sometimes called a private key. | ||||
Verification key set of public data elements that is mathematically | ||||
related to an entity's signature key and is used by the verifier | ||||
in the verification process (Clause 3.16 of [ISO14888-1]). Note: | ||||
Sometimes called a public key. | ||||
ASN.1 Abstract Syntax Notation One, as defined in [X.680]. | ||||
BER Basic Encoding Rules, as defined in [X.690]. | ||||
HMAC_GOSTR3411 Hash-Based Message Authentication Code. A function | ||||
for calculating a Message Authentication Code (MAC) based on the | ||||
GOST R 34.11-2012 hash function (see [RFC6986]) with 512-bit | ||||
output in accordance with [RFC2104]. | ||||
4. PFX | 4. PFX | |||
The transport key container (PFX, see [RFC7292]) is designed for | The transport key container (PFX; see [RFC7292]) is designed for | |||
secure storage and data transfer. The scope of this document is to | secure storage and data transfer. The scope of this document is to | |||
define how the transport key container is used for private key and | define how the transport key container is used for private key and | |||
certificate protection with a password when GOST R 34.10-2012 is | certificate protection with a password when GOST R 34.10-2012 is | |||
applied. . | applied. | |||
4.1. Structure of PFX | 4.1. Structure of PFX | |||
In accordance with [RFC7292] the transport key container has the | In accordance with [RFC7292], the transport key container has the | |||
following structure: | following structure: | |||
PFX ::= SEQUENCE | PFX ::= SEQUENCE | |||
{ | { | |||
version INTEGER {v3(3)}(v3,...), | version INTEGER {v3(3)}(v3,...), | |||
authSafe ContentInfo, | authSafe ContentInfo, | |||
macData MacData OPTIONAL | macData MacData OPTIONAL | |||
} | } | |||
The fields of PFX have the following meanings: | The fields of the PFX have the following meanings: | |||
* version is the syntax version number; the only allowed value for | * version is the syntax version number; the only allowed value for | |||
this specification is 3; | this specification is 3. | |||
* authSafe contains the data of type ContentInfo. In the case of | * authSafe contains the data of type ContentInfo. In the case of | |||
password integrity mode the authSafe.content field has a Data type | password integrity mode, the authSafe.content field has a Data | |||
value and contains a BER-encoded value of AuthenticatedSafe | type value and contains a BER-encoded value of the | |||
structure; | AuthenticatedSafe structure. | |||
* macData has a MacData type and in the case of password integrity | * macData has a MacData type; in the case of password integrity | |||
mode the macData field should contain the information about | mode, the macData field should contain information about the | |||
algorithm and parameters for a password key generation. The | algorithm and parameters for password key generation. Integrity | |||
integrity control is ensured by using the HMAC_GOSTR3411_2012_512 | control is ensured by using the HMAC_GOSTR3411_2012_512 algorithm: | |||
algorithm: the macData.mac.digestAlgorithm.algorithm field | the macData.mac.digestAlgorithm.algorithm field contains the | |||
contains the HMAC_GOSTR3411_2012_512 algorithm identifier (see | HMAC_GOSTR3411_2012_512 algorithm identifier (see Section 7). | |||
Section 7). When processing a transport key container, this field | When processing a transport key container, this field should be | |||
should be checked first. | checked first. | |||
4.2. AuthenticatedSafe | 4.2. AuthenticatedSafe | |||
The AuthenticatedSafe structure is a sequence of ContentInfo values | The AuthenticatedSafe structure is a sequence of ContentInfo values | |||
(see [RFC5652]): | (see [RFC5652]): | |||
AuthenticatedSafe ::= SEQUENCE OF ContentInfo | AuthenticatedSafe ::= SEQUENCE OF ContentInfo | |||
-- Data if unencrypted | -- Data if unencrypted | |||
-- EncryptedData if password-encrypted | -- EncryptedData if password-encrypted | |||
-- EnvelopedData if public key-encrypted | -- EnvelopedData if public key-encrypted | |||
4.2.1. Unencrypted Data | 4.2.1. Unencrypted Data | |||
If the data is not encrypted then the content field is the BER- | If the data is not encrypted, then the content field is the BER- | |||
encoded value of the SafeContents structure. The contentType field | encoded value of the SafeContents structure. The contentType field | |||
is set to the id-data type. | is set to the id-data type. | |||
4.2.2. Password-encrypted data | 4.2.2. Password-Encrypted Data | |||
When password integrity mode is used the data is represented as an | When password integrity mode is used, the data is represented as an | |||
EncryptedData structure ([RFC5652]). The encryption algorithm and | EncryptedData structure (see [RFC5652]). The encryption algorithm | |||
parameters have the following values: | and parameters have the following values: | |||
ContentEncryptionAlgorithmIdentifier ::= SEQUENCE | ContentEncryptionAlgorithmIdentifier ::= SEQUENCE | |||
{ | { | |||
encryptionAlgorithmOID OBJECT IDENTIFIER, | encryptionAlgorithmOID OBJECT IDENTIFIER, | |||
parameters PBES2-params | parameters PBES2-params | |||
} | } | |||
The PBES2-params type is defined in [RFC9337]. The content should be | The PBES2-params type is defined in [RFC9337]. The content should be | |||
encrypted according to the encryption algorithm in the PBES2 scheme, | encrypted according to the encryption algorithm in the PBES2 scheme, | |||
described in [RFC9337]. The following identifier MUST be specified | as described in [RFC9337]. The following identifier MUST be | |||
in EncryptedData.EncryptedContentInfo.contentEncryptionAlgorithm.encr | specified in the | |||
yptionAlgorithmOID field: | EncryptedData.EncryptedContentInfo.contentEncryptionAlgorithm. | |||
encryptionAlgorithmOID field: | ||||
{ | { | |||
iso(1) member-body(2) us(840) rsadsi(113549) | iso(1) member-body(2) us(840) rsadsi(113549) | |||
pkcs(1) pkcs-5(5) pbes2(13) | pkcs(1) pkcs-5(5) pbes2(13) | |||
} | } | |||
The encrypted content is specified in | The encrypted content is specified in the | |||
EncryptedData.EncryptedContentInfo.encryptedContent field. | EncryptedData.EncryptedContentInfo.encryptedContent field. | |||
4.3. SafeContents and SafeBag | 4.3. SafeContents and SafeBag | |||
In accordance with [RFC7292] the SafeContents structure is a sequence | In accordance with [RFC7292], the SafeContents structure is a | |||
of SafeBag: | sequence of SafeBag: | |||
SafeContents ::= SEQUENCE OF SafeBag | SafeContents ::= SEQUENCE OF SafeBag | |||
where | where | |||
SafeBag ::= SEQUENCE | SafeBag ::= SEQUENCE | |||
{ | { | |||
bagId BAG-TYPE.&id ({PKCS12BagSet}) | bagId BAG-TYPE.&id ({PKCS12BagSet}) | |||
bagValue [0] EXPLICIT BAG-TYPE.&Type({PKCS12BagSet}{@bagId}) | bagValue [0] EXPLICIT BAG-TYPE.&Type({PKCS12BagSet}{@bagId}) | |||
bagAttributes SET OF PKCS12Attribute OPTIONAL | bagAttributes SET OF PKCS12Attribute OPTIONAL | |||
} | } | |||
The fields of SafeBag have the following meanings: | The fields of SafeBag have the following meanings: | |||
* bagId is an object identifier, it defines the type of object; | * bagId is an object identifier; it defines the type of object. | |||
* bagValue is the value of an object; | * bagValue is the value of an object. | |||
* bagAttributes contains the users names, the key identifiers and | ||||
other additional information. It is optional. | ||||
See [RFC7292] Section 4.2. for the different bag types. This | * bagAttributes contains the users' names, the key identifiers, and | |||
document describes the 2 object types of SafeBag structure: | other additional information. This field is optional. | |||
* pkcs8ShroudedKeyBag, | See [RFC7292], Section 4.2 for the different bag types. This | |||
document describes the two object types of the SafeBag structure: | ||||
* certBag. | 1. pkcs8ShroudedKeyBag | |||
When password integrity mode is used the private key has the | 2. certBag | |||
When password integrity mode is used, the private key has the | ||||
following structure: | following structure: | |||
pkcs8ShroudedKeyBag BAG-TYPE ::= | pkcs8ShroudedKeyBag BAG-TYPE ::= | |||
{ | { | |||
PKCS8ShroudedKeyBag IDENTIFIED BY {bagtypes 2} | PKCS8ShroudedKeyBag IDENTIFIED BY {bagtypes 2} | |||
} | } | |||
The bagValue field contains the key and information about it in the | The bagValue field contains the key and information about the key, in | |||
encrypted form in the EncryptedPrivateKeyInfo structure. | encrypted form, in the EncryptedPrivateKeyInfo structure. | |||
A certBag contains a certificate of a certain type. Object | A certBag contains a certificate of a certain type. Object | |||
identifiers are used to distinguish between different certificate | identifiers are used to distinguish between different certificate | |||
types. | types. | |||
certBag BAG-TYPE ::= | certBag BAG-TYPE ::= | |||
{ | { | |||
CertBag IDENTIFIED BY { bagtypes 3 } | CertBag IDENTIFIED BY { bagtypes 3 } | |||
} | } | |||
If the certificate is not encrypted, the CertBag structure is placed | If the certificate is not encrypted, the CertBag structure is placed | |||
in the Data structure (see [RFC5652]). If the certificate is | in the Data structure (see [RFC5652]). If the certificate is | |||
encrypted, the CertBag structure is placed in the EncryptedData | encrypted, the CertBag structure is placed in the EncryptedData | |||
structure (see [RFC5652]). | structure (see [RFC5652]). | |||
5. GOST R 34.10–2012 key representation | 5. GOST R 34.10-2012 Key Representation | |||
This section describes the GOST R 34.10–2012 private keys | This section describes the GOST R 34.10-2012 private key | |||
representation for asymmetric key pairs. Masked keys should be used | representation for asymmetric key pairs. Masked keys should be used | |||
to ensure the protection of private keys from leaks through the side | to ensure that private keys are protected from leaking through side | |||
channels when reading and performing operations with keys. | channels when reading and performing operations with keys. | |||
5.1. Masking GOST R 34.10–2012 keys | 5.1. Masking GOST R 34.10-2012 Keys | |||
The masking algorithm is defined by the basic cryptographic | The masking algorithm is defined by the basic cryptographic | |||
transformation operation of the algorithm: multiplication in the F_q | transformation operation of the algorithm: multiplication in the F_q | |||
field for GOST R 34.10–2012 keys. | field for GOST R 34.10-2012 keys. | |||
Let M_1, M_2, ..., M_k be a sequence of k masks. Let M_i() denote | Let M_1, M_2, ..., M_k be a sequence of k masks. Let M_i() denote | |||
the operation of applying the i-th mask and M_i^-1() denote the | the operation of applying the i-th mask and M_i^-1() denote the | |||
operation of removing the i-th mask, 1 <= i <= k. Let K be a key. | operation of removing the i-th mask, 1 <= i <= k. Let K be a key. | |||
The masked key K_M is obtained by applying the masking operation k | The masked key K_M is obtained by applying the masking operation k | |||
times: | times: | |||
K_M = M_k (...(M_2(M_1(K)...). | K_M = M_k (...(M_2(M_1(K)...). | |||
Unmasking is performed by applying the removing operation k times, | Unmasking is performed by applying the removal operation k times, but | |||
but in reverse order: | in reverse order: | |||
K = M_1^-1(...(M_(k-1)^-1(M_k^-1(K_M))...). | K = M_1^-1(...(M_(k-1)^-1(M_k^-1(K_M))...). | |||
The masked key is represented as the sequence | The masked key is represented as the sequence | |||
I = K_M||M_1||M_2||...||M_k. | I = K_M||M_1||M_2||...||M_k. | |||
Let the key K be n bits in length, then the sequence I is represented | Let the key K be n bits in length; then, the sequence I is | |||
in memory as a sequence of (k + 1)*n bits. I is represented in | represented in memory as a sequence of (k + 1)*n bits. I is | |||
little-endian format. It is possible to use an unmasked private key | represented in little-endian format. It is possible to use an | |||
(i.e., k = 0, K_M = K). The masking operation is the multiplication | unmasked private key (i.e., k = 0, K_M = K). For GOST R 34.10-2012 | |||
of the key by the inverse of the mask: K_M = K * M^-1 mod Q, where | keys, the masking operation is the multiplication of the key by the | |||
the Q value is taken from the key parameters. The operation of | inverse of the mask: INT(K_M) = INT(K) * INT(M)^-1 mod Q, where the Q | |||
removing the mask is the multiplication of the masked key by the | value is taken from the key parameters. The operation of removing | |||
mask: K = K_M * M mod Q. The public key is specified by a pair of | the mask is the multiplication of the masked key by the mask: INT(K) | |||
coordinates (x, y) defined in GOST R 34.10–2012, presented in the | = INT(K_M) * INT(M) mod Q. The public key is specified by a pair of | |||
coordinates (x, y) as defined in GOST R 34.10-2012, presented in the | ||||
following format: | following format: | |||
* a public key corresponding to the GOST R 34.10–2012 algorithm with | * a public key corresponding to the GOST R 34.10-2012 algorithm with | |||
a key length of 256 bits has the GostR3410–2012-256-PublicKey | a key length of 256 bits has the GostR3410-2012-256-PublicKey | |||
representation. It is specified by a 64-byte string, where the | representation. It is specified by a 64-byte string, where the | |||
first 32 bytes contain the little-endian representation of the x | first 32 bytes contain the little-endian representation of the x | |||
coordinate, and the last 32 bytes contain the little-endian | coordinate and the last 32 bytes contain the little-endian | |||
representation of the y coordinate; | representation of the y coordinate. | |||
* a public key corresponding to the GOST R 34.10–2012 algorithm with | * a public key corresponding to the GOST R 34.10-2012 algorithm with | |||
a key length of 512 bits has the GostR3410–2012-512-PublicKey | a key length of 512 bits has the GostR3410-2012-512-PublicKey | |||
representation. It is specified by a 128-byte string, where the | representation. It is specified by a 128-byte string, where the | |||
first 64 bytes contain the little-endian representation of the x | first 64 bytes contain the little-endian representation of the x | |||
coordinate, and the last 64 bytes contain the little-endian | coordinate and the last 64 bytes contain the little-endian | |||
representation of the y coordinate. | representation of the y coordinate. | |||
The public keys GostR3410-2012-256-PublicKey and | The public keys GostR3410-2012-256-PublicKey and | |||
GostR3410-2012-512-PublicKey MUST be DER-encoded as an octet string | GostR3410-2012-512-PublicKey MUST be DER encoded as an octet string | |||
in accordance with [RFC9215] (section 4.3): | in accordance with Section 4.3 of [RFC9215]: | |||
GostR3410–2012-256-PublicKey ::= OCTET STRING (64), | GostR3410-2012-256-PublicKey ::= OCTET STRING (64), | |||
GostR3410–2012-512-PublicKey ::= OCTET STRING (128). | GostR3410-2012-512-PublicKey ::= OCTET STRING (128). | |||
5.2. KeyBag structure for GOST R 34.10–2012 key | 5.2. KeyBag Structure for GOST R 34.10-2012 Key | |||
In accordance with [RFC7292] a KeyBag is defined as information about | In accordance with [RFC7292], a KeyBag is defined as information | |||
a private key represented as the PrivateKeyInfo structure: | about a private key represented as the PrivateKeyInfo structure: | |||
KeyBag := PrivateKeyInfo | KeyBag ::= PrivateKeyInfo | |||
In accordance with [RFC5958], information about a private key is | In accordance with [RFC5958], information about a private key is | |||
presented in the following form: | presented in the following form: | |||
PrivateKeyInfo := OneAsymmetricKey | PrivateKeyInfo ::= OneAsymmetricKey | |||
5.3. OneAsymmetricKey structure | 5.3. OneAsymmetricKey Structure | |||
In accordance with [RFC5958] OneAsymmetricKey has the following | In accordance with [RFC5958], OneAsymmetricKey has the following | |||
structure: | structure: | |||
OneAsymmetricKey::= SEQUENCE | OneAsymmetricKey::= SEQUENCE | |||
{ | { | |||
version Version, | version Version, | |||
privateKeyAlgorithm PrivateKeyAlgorithmIdentifier, | privateKeyAlgorithm PrivateKeyAlgorithmIdentifier, | |||
privateKey PrivateKey, | privateKey PrivateKey, | |||
attributes [0] Attributes OPTIONAL, | attributes [0] Attributes OPTIONAL, | |||
..., | ..., | |||
[[2:publicKey [1] PublicKey OPTIONAL]], | [[2:publicKey [1] PublicKey OPTIONAL]], | |||
skipping to change at page 10, line 42 ¶ | skipping to change at line 412 ¶ | |||
} | } | |||
Version ::= INTEGER { v1(0), v2(1) } (v1, ..., v2) | Version ::= INTEGER { v1(0), v2(1) } (v1, ..., v2) | |||
PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier | PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier | |||
PrivateKey ::= OCTET STRING | PrivateKey ::= OCTET STRING | |||
PublicKey ::= BIT STRING | PublicKey ::= BIT STRING | |||
Attributes ::= SET OF Attribute | Attributes ::= SET OF Attribute | |||
The fields have the following meanings: | The fields have the following meanings: | |||
* version identifies the version of OneAsymmetricKey. If publicKey | * version identifies the version of OneAsymmetricKey. If publicKey | |||
is present, then version is set to 2 else version is set to 1. | is present, then version is set to 2; else, version is set to 1. | |||
* privateKeyAlgorithm identifies the private-key algorithm and | * privateKeyAlgorithm identifies the private key algorithm and | |||
optionally contains parameters associated with the asymmetric key | optionally contains parameters associated with the asymmetric key | |||
pair. For GOST R 34.10–2012 private keys the identifiers of the | pair. For GOST R 34.10-2012 private keys, the identifiers of the | |||
corresponding public keys are used, they are defined in the | corresponding public keys are used; they are defined in [RFC9215]. | |||
[RFC9215]. The use of identifiers and public key parameters is | The use of identifiers and public key parameters is defined in | |||
defined in the [RFC9215]. | [RFC9215]. | |||
* privateKey is an OCTET STRING that contains the value of the | * privateKey is an OCTET STRING that contains the value of the | |||
masked private key I. | masked private key I. | |||
* attributes are optional. They contain information corresponding | * attributes are optional. They contain information corresponding | |||
to the public key (e.g., certificates). | to the public key (e.g., certificates). | |||
* publicKey contains the value of the public key | * publicKey contains the value of the public key | |||
GostR3410–2012-256-PublicKey or GostR3410–2012-512-PublicKey | GostR3410-2012-256-PublicKey or GostR3410-2012-512-PublicKey | |||
encoded in a BIT STRING. It is an optional field. | encoded in a BIT STRING. This field is optional. | |||
5.4. EncryptedPrivateKeyInfo structure for GOST R 34.10–2012 key | 5.4. EncryptedPrivateKeyInfo Structure for GOST R 34.10-2012 Key | |||
In accordance with [RFC7292] the encrypted information of the private | In accordance with [RFC7292], the encrypted information regarding the | |||
key is defined as the PKCS8ShroudedKeyBag structure: | private key is defined as the PKCS8ShroudedKeyBag structure: | |||
PKCS8ShroudedKeyBag::= EncryptedPrivateKeyInfo | PKCS8ShroudedKeyBag::= EncryptedPrivateKeyInfo | |||
In accordance with [RFC5958] the EncryptedPrivateKeyInfo has the | In accordance with [RFC5958], EncryptedPrivateKeyInfo has the | |||
following structure: | following structure: | |||
EncryptedPrivateKeyInfo ::= SEQUENCE | EncryptedPrivateKeyInfo ::= SEQUENCE | |||
{ | { | |||
encryptionAlgorithm EncryptionAlgorithmIdentifier, | encryptionAlgorithm EncryptionAlgorithmIdentifier, | |||
encryptedData EncryptedData | encryptedData EncryptedData | |||
} | } | |||
EncryptionAlgorithmIdentifier ::= AlgorithmIdentifier | EncryptionAlgorithmIdentifier ::= AlgorithmIdentifier | |||
EncryptedData ::= OCTET STRING | EncryptedData ::= OCTET STRING | |||
The fields have the following meanings: | The fields have the following meanings: | |||
* encryptionAlgorithm identifies the algorithm under which the | * encryptionAlgorithm identifies the algorithm under which the | |||
private key information is encrypted. Encryption MUST use PBES2 | private key information is encrypted. Encryption MUST use the | |||
scheme. The algorithm and parameters of this scheme are presented | PBES2 scheme. The algorithm and parameters of this scheme are | |||
in [RFC9337]. | presented in [RFC9337]. | |||
* encryptedData is the DER-encoded PrivateKeyInfo structure. | * encryptedData is the DER-encoded PrivateKeyInfo structure. | |||
6. GOST R 34.10–2012 certificate representation | 6. GOST R 34.10-2012 Certificate Representation | |||
In accordance with [RFC7292] a CertBag is defined as information | In accordance with [RFC7292], a CertBag is defined as information | |||
about a certificate and represented as the following structure: | about a certificate and has the following structure: | |||
CertBag ::= SEQUENCE | CertBag ::= SEQUENCE | |||
{ | { | |||
certId BAG-TYPE.&id ({CertTypes}), | certId BAG-TYPE.&id ({CertTypes}), | |||
certValue [0] EXPLICIT BAG-TYPE.&Type ({CertTypes}{@certId}) | certValue [0] EXPLICIT BAG-TYPE.&Type ({CertTypes}{@certId}) | |||
} | } | |||
The fields have the following meanings: | The fields have the following meanings: | |||
* certId identifies the type of certificate. | * certId identifies the type of certificate. | |||
* certValue contains certificate. | * certValue contains the certificate. | |||
7. Security Mechanisms | 7. Security Mechanisms | |||
Let the sender and receiver have a pre-agreed password P. The sender | Let the sender and receiver have a previously agreed-upon password P. | |||
generates a password key using the PBKDF2 algorithm in accordance | The sender generates a password key using the PBKDF2 algorithm in | |||
with [RFC9337] and uses it to encrypt the transmitted private key. | accordance with [RFC9337] and uses it to encrypt the transmitted | |||
The recipient independently generates a password key using the same | private key. The recipient independently generates a password key | |||
PBKDF2 diversification algorithm in accordance with [RFC9337] and | using the same PBKDF2 diversification algorithm in accordance with | |||
uses it to extract the private key from the PFX. | [RFC9337] and uses it to extract the private key from the PFX. | |||
The same password P is used to encrypt different sections of the PFX | The same password P is used to encrypt different sections of the PFX | |||
using different random initializing value S with a length of 8 to 32 | using a different random initializing value S with a length of 8 to | |||
bytes, where S and P are the input parameters of the PBKDF2 function. | 32 bytes, where S and P are the input parameters of the PBKDF2 | |||
The password MUST be encoded as a Unicode UTF-8 string and fed into | function. The password MUST be encoded as a Unicode UTF-8 string and | |||
the PBKDF2 algorithm as a P parameter. | fed into the PBKDF2 algorithm as a P parameter. | |||
The integrity of PFX is ensured by using the HMAC_GOSTR3411_2012_512 | The integrity of the PFX is ensured by using the | |||
algorithm in accordance with [RFC7836]. For checking the integrity | HMAC_GOSTR3411_2012_512 algorithm in accordance with [RFC7836]. To | |||
of PFX with the HMAC_GOSTR3411_2012_512 algorithm the key for this | check the integrity of the PFX with the HMAC_GOSTR3411_2012_512 | |||
algorithm is also generated by using the PBKDF2 algorithm in | algorithm, the key for this algorithm is also generated by using the | |||
accordance with [RFC9337] with the same value of the P parameter and | PBKDF2 algorithm in accordance with [RFC9337], with the same value | |||
a different initializing value S with a length of 8 to 32 bytes. The | for the P parameter and a different initializing value S with a | |||
dkLen parameter for the PBKDF2 algorithm is set to 96 bytes. The key | length of 8 to 32 bytes. The dkLen parameter for the PBKDF2 | |||
for the HMAC_GOSTR3411_2012_512 algorithm must be the last 32 bytes | algorithm is set to 96 bytes. The key for the | |||
of the 96-byte sequence generated by the PBKDF2 algorithm. The | HMAC_GOSTR3411_2012_512 algorithm must be the last 32 bytes of the | |||
PBKDF2 algorithm parameters S and c are saved in macData.Salt and | 96-byte sequence generated by the PBKDF2 algorithm. The PBKDF2 | |||
macData.iterations fileds respectively. The HMAC_GOSTR3411_2012_512 | algorithm parameters S and c are saved in the macData.Salt and | |||
macData.iterations fields, respectively. The HMAC_GOSTR3411_2012_512 | ||||
function is calculated from the content field of the authSafe | function is calculated from the content field of the authSafe | |||
structure field. The authSafe structure field is a PFX structure | structure field. The authSafe structure field is a PFX structure | |||
field. The value of the calculated checksum is saved in the | field. The value of the calculated checksum is saved in the | |||
macData.mac.digest field. The macData.mac.digestAlgorithm.algorithm | macData.mac.digest field. The macData.mac.digestAlgorithm.algorithm | |||
field contains the following algorithm identifier: | field contains the following algorithm identifier: | |||
id-tc26-gost3411-12-512 :: = | id-tc26-gost3411-12-512 :: = | |||
{ | { | |||
iso(1) member-body(2) ru(643) rosstandart(7) tc26(1) | iso(1) member-body(2) ru(643) rosstandart(7) tc26(1) | |||
algorithms (1) digest(2) gost3411–2012-512(3) | algorithms(1) digest(2) gost3411-12-512(3) | |||
} | } | |||
The macData.mac.digestAlgorithm.parameters field isn't used and | The macData.mac.digestAlgorithm.parameters field isn't used and | |||
should be omitted. | should be omitted. | |||
8. Security Considerations | 8. Security Considerations | |||
The masked keys SHOULD be used to ensure the protection of private | The masked keys SHOULD be used to ensure that private keys are | |||
keys from leaking through side channels when reading and performing | protected from leaking through side channels when reading and | |||
operations with keys. Applications MUST use unique values for ukm | performing operations with keys. Applications MUST use unique values | |||
and S in the PBKDF2 algorithm. It is RECOMMENDED that parameter S | for ukm and S in the PBKDF2 algorithm. It is RECOMMENDED that | |||
consist of at least 32 octets of pseudo-random data in order to | parameter S consist of at least 32 octets of pseudorandom data in | |||
reduce the probability of collisions of keys generated from the same | order to reduce the probability of collisions of keys generated from | |||
password. The password MUST be encoded as a Unicode UTF-8 string and | the same password. The password MUST be encoded as a Unicode UTF-8 | |||
fed into the PBKDF2 algorithm as a P parameter. For more information | string and fed into the PBKDF2 algorithm as a P parameter. For more | |||
see [RFC9337]. Encryption MUST use PBES2 scheme for encryption | information, see [RFC9337]. Encryption MUST use the PBES2 scheme to | |||
private keys. Public keys MUST be DER-encoded as an octet string in | encrypt private keys. Public keys MUST be DER encoded as an octet | |||
accordance with [RFC9215]. Passwords SHOULD be stored in secure way. | string in accordance with [RFC9215]. Passwords SHOULD be stored in a | |||
For information on security considerations for generating the | secure way. For information on security considerations for | |||
transport key containers see [RFC7292]. | generating transport key containers, see [RFC7292]. | |||
9. IANA Considerations | 9. IANA Considerations | |||
This document has no IANA actions. | This document has no IANA actions. | |||
10. ASN.1 Modules | 10. ASN.1 Modules | |||
PKCS-12RU | PKCS-12RU | |||
{ | { | |||
iso(1) member-body(2) ru(643) rosstandart(7) | iso(1) member-body(2) ru(643) rosstandart(7) | |||
tc26(1) modules(0) pkcs-12ruSyntax(5) | tc26(1) modules(0) pkcs-12ruSyntax(5) | |||
} | } | |||
DEFINITIONS EXPLICIT TAGS ::= | DEFINITIONS EXPLICIT TAGS ::= | |||
BEGIN | BEGIN | |||
IMPORTS | IMPORTS | |||
GostR3410–2012-PublicKey | GostR3410-2012-PublicKey | |||
FROM GostR3410–2012-PKISyntax | FROM GostR3410-2012-PKISyntax | |||
{ | { | |||
iso(1) member-body(2) ru(643) rosstandart(7) tc26(1) | iso(1) member-body(2) ru(643) rosstandart(7) tc26(1) | |||
modules(0) gostR3410–2012-PKISyntax(2) | modules(0) gostR3410-2012-PKISyntax(2) | |||
}; | }; | |||
END | END | |||
11. References | 11. References | |||
11.1. Normative References | 11.1. Normative References | |||
[RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed- | [RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed- | |||
Hashing for Message Authentication", RFC 2104, | Hashing for Message Authentication", RFC 2104, | |||
DOI 10.17487/RFC2104, February 1997, | DOI 10.17487/RFC2104, February 1997, | |||
skipping to change at page 14, line 49 ¶ | skipping to change at line 608 ¶ | |||
GOST R 34.10-2012 and GOST R 34.11-2012 Algorithms with | GOST R 34.10-2012 and GOST R 34.11-2012 Algorithms with | |||
the Internet X.509 Public Key Infrastructure", RFC 9215, | the Internet X.509 Public Key Infrastructure", RFC 9215, | |||
DOI 10.17487/RFC9215, March 2022, | DOI 10.17487/RFC9215, March 2022, | |||
<https://www.rfc-editor.org/info/rfc9215>. | <https://www.rfc-editor.org/info/rfc9215>. | |||
[RFC9337] Karelina, E., Ed., "Generating Password-Based Keys Using | [RFC9337] Karelina, E., Ed., "Generating Password-Based Keys Using | |||
the GOST Algorithms", RFC 9337, DOI 10.17487/RFC9337, | the GOST Algorithms", RFC 9337, DOI 10.17487/RFC9337, | |||
December 2022, <https://www.rfc-editor.org/info/rfc9337>. | December 2022, <https://www.rfc-editor.org/info/rfc9337>. | |||
[X.680] ITU-T, "Information Technology - Abstract Syntax Notation | [X.680] ITU-T, "Information Technology - Abstract Syntax Notation | |||
One: Specification of Basic Notation.", ITU-T, | One (ASN.1): Specification of basic notation", ITU-T | |||
Recommendation X.680, ISO/IEC 8824-1:2002, 2002. | Recommendation X.680, ISO/IEC 8824-1:2021, February 2021, | |||
<https://www.itu.int/rec/T-REC-X.680>. | ||||
[X.690] ITU-T, "Information technology - ASN.1 encoding rules: | [X.690] ITU-T, "Information technology - ASN.1 encoding rules: | |||
Specification of Basic Encoding Rules (BER), Canonical | Specification of Basic Encoding Rules (BER), Canonical | |||
Encoding Rules (CER) and Distinguished Encoding Rules | Encoding Rules (CER) and Distinguished Encoding Rules | |||
(DER).", ITU-T, Recommendation X.690, ISO/IEC | (DER)", ITU-T Recommendation X.690, ISO/IEC International | |||
International Standard 8825-1:2008, November 2008. | Standard 8825-1:2021, February 2021, | |||
<https://www.itu.int/rec/T-REC-X.690>. | ||||
11.2. Informative References | 11.2. Informative References | |||
[GostPkcs12] | ||||
Potashnikov, A., Karelina, E., Pianov, S., and A. | ||||
Naumenko, "Information technology. Cryptographic Data | ||||
Security. The transport key containers.", R | ||||
1323565.1.041–2022. Federal Agency on Technical Regulating | ||||
and Metrology (In Russian). | ||||
[ISO14888-1] | [ISO14888-1] | |||
ISO/IEC, "Information technology - Security techniques - | ISO/IEC, "Information technology - Security techniques - | |||
Digital signatures with appendix - Part 1: General.", ISO/ | Digital signatures with appendix - Part 1: General", ISO/ | |||
IEC 14888-1, 2008. | IEC 14888-1, April 2008, | |||
<https://www.iso.org/standard/44226.html>. | ||||
Appendix A. Examples | Appendix A. Examples | |||
This section contains examples of using GOST cryptographic algorithms | This section contains examples of using GOST cryptographic algorithms | |||
to create a PFX. | to create a PFX. | |||
A.1. Test data | A.1. Test Data | |||
In all examples the following data is used. | In all examples, the following data is used. | |||
A.1.1. Test certificate | A.1.1. Test Certificate | |||
This section contains a test certififcate in BASE64 format. | This section contains a test certificate in BASE64 format. | |||
MIICLjCCAdugAwIBAgIEAYy6hDAKBggqhQMHAQEDAjA4MQ0wCwYDVQQKEwRUSzI2 | MIICLjCCAdugAwIBAgIEAYy6hDAKBggqhQMHAQEDAjA4MQ0wCwYDVQQKEwRUSzI2 | |||
MScwJQYDVQQDEx5DQSBUSzI2OiBHT1NUIDM0LjEwLTEyIDI1Ni1iaXQwHhcNMDEw | MScwJQYDVQQDEx5DQSBUSzI2OiBHT1NUIDM0LjEwLTEyIDI1Ni1iaXQwHhcNMDEw | |||
MTAxMDAwMDAwWhcNNDkxMjMxMDAwMDAwWjA7MQ0wCwYDVQQKEwRUSzI2MSowKAYD | MTAxMDAwMDAwWhcNNDkxMjMxMDAwMDAwWjA7MQ0wCwYDVQQKEwRUSzI2MSowKAYD | |||
VQQDEyFPUklHSU5BVE9SOiBHT1NUIDM0LjEwLTEyIDUxMi1iaXQwgaAwFwYIKoUD | VQQDEyFPUklHSU5BVE9SOiBHT1NUIDM0LjEwLTEyIDUxMi1iaXQwgaAwFwYIKoUD | |||
BwEBAQIwCwYJKoUDBwECAQIBA4GEAASBgLSLt1q8KQ4YZVxioU+1LV9QhE7MHR9g | BwEBAQIwCwYJKoUDBwECAQIBA4GEAASBgLSLt1q8KQ4YZVxioU+1LV9QhE7MHR9g | |||
BEh7S1yVNGlqt7+rNG5VFqmrPM74rbUsOlhV8M+zZKprXdk35Oz8lSW/n2oIUHZx | BEh7S1yVNGlqt7+rNG5VFqmrPM74rbUsOlhV8M+zZKprXdk35Oz8lSW/n2oIUHZx | |||
ikXIH/SSHj4rv3K/Puvz7hYTQSZl/xPdp78nUmjrEa6d5wfX8biEy2z0dgufFvAk | ikXIH/SSHj4rv3K/Puvz7hYTQSZl/xPdp78nUmjrEa6d5wfX8biEy2z0dgufFvAk | |||
Mw1Ua4gdXqDOo4GHMIGEMGMGA1UdIwRcMFqAFKxsDkxEZqJCluKfCTslZvPLpFMq | Mw1Ua4gdXqDOo4GHMIGEMGMGA1UdIwRcMFqAFKxsDkxEZqJCluKfCTslZvPLpFMq | |||
oTykOjA4MQ0wCwYDVQQKEwRUSzI2MScwJQYDVQQDEx5DQSBUSzI2OiBHT1NUIDM0 | oTykOjA4MQ0wCwYDVQQKEwRUSzI2MScwJQYDVQQDEx5DQSBUSzI2OiBHT1NUIDM0 | |||
LjEwLTEyIDI1Ni1iaXSCBAGMuoEwHQYDVR0OBBYEFH4GVwmYDK1rCKhX7nkAWDrJ | LjEwLTEyIDI1Ni1iaXSCBAGMuoEwHQYDVR0OBBYEFH4GVwmYDK1rCKhX7nkAWDrJ | |||
16CkMAoGCCqFAwcBAQMCA0EACl6p8dAbpi9Hk+3mgMyI0WIh17IrlrSp/mB0F7Zz | 16CkMAoGCCqFAwcBAQMCA0EACl6p8dAbpi9Hk+3mgMyI0WIh17IrlrSp/mB0F7Zz | |||
Mt8XUD1Dwz3JrrnxeXnfMvOA5BdUJ9hCyDgMVAGs/IcEEA== | Mt8XUD1Dwz3JrrnxeXnfMvOA5BdUJ9hCyDgMVAGs/IcEEA== | |||
A.1.2. Test key | A.1.2. Test Key | |||
This section contains a test key bytes in hexadecimal. | This section contains test key bytes in hexadecimal. | |||
F95A5D44C5245F63F2E7DF8E782C1924EADCB8D06C52D91023179786154CBDB1 | F95A5D44C5245F63F2E7DF8E782C1924EADCB8D06C52D91023179786154CBDB1 | |||
561B4DF759D69F67EE1FBD5B68800E134BAA12818DA4F3AC75B0E5E6F9256911 | 561B4DF759D69F67EE1FBD5B68800E134BAA12818DA4F3AC75B0E5E6F9256911 | |||
A.2. The example of a PFX with a password-protected key and unencrypted | A.2. Example of a PFX with a Password-Protected Key and Unencrypted | |||
certificate. | Certificate | |||
In this example the PKCS8SHroudedKeybag structure is used to store | In this example, the PKCS8SHroudedKeybag structure is used to store | |||
the key, which is placed in the Data structure. The certBag | the key, which is placed in the Data structure. The certBag | |||
structure is used to store the certificate, which is placed in the | structure is used to store the certificate, which is placed in the | |||
Data structure. A following password is used to encrypt the key and | Data structure. The following password is used to encrypt the key | |||
control the integrity: "Пароль для PFX". The password is in | and provide integrity control: "Пароль для PFX". The password is in | |||
hexadecimal: | hexadecimal: | |||
D09FD0B0D180D0BED0BBD18C20D0B4D0BBD18F20504658 | D09FD0B0D180D0BED0BBD18C20D0B4D0BBD18F20504658 | |||
The key encryption algorithm identifier: | The key encryption algorithm identifier: | |||
1.2.643.7.1.1.5.2.2 | 1.2.643.7.1.1.5.2.2 | |||
A.2.1. PFX in BASE64 format | A.2.1. PFX in BASE64 Format | |||
MIIFKwIBAzCCBMQGCSqGSIb3DQEHAaCCBLUEggSxMIIErTCCAswGCSqGSIb3DQEH | MIIFKwIBAzCCBMQGCSqGSIb3DQEHAaCCBLUEggSxMIIErTCCAswGCSqGSIb3DQEH | |||
AaCCAr0EggK5MIICtTCCArEGCyqGSIb3DQEMCgEDoIICSjCCAkYGCiqGSIb3DQEJ | AaCCAr0EggK5MIICtTCCArEGCyqGSIb3DQEMCgEDoIICSjCCAkYGCiqGSIb3DQEJ | |||
FgGgggI2BIICMjCCAi4wggHboAMCAQICBAGMuoQwCgYIKoUDBwEBAwIwODENMAsG | FgGgggI2BIICMjCCAi4wggHboAMCAQICBAGMuoQwCgYIKoUDBwEBAwIwODENMAsG | |||
A1UEChMEVEsyNjEnMCUGA1UEAxMeQ0EgVEsyNjogR09TVCAzNC4xMC0xMiAyNTYt | A1UEChMEVEsyNjEnMCUGA1UEAxMeQ0EgVEsyNjogR09TVCAzNC4xMC0xMiAyNTYt | |||
Yml0MB4XDTAxMDEwMTAwMDAwMFoXDTQ5MTIzMTAwMDAwMFowOzENMAsGA1UEChME | Yml0MB4XDTAxMDEwMTAwMDAwMFoXDTQ5MTIzMTAwMDAwMFowOzENMAsGA1UEChME | |||
VEsyNjEqMCgGA1UEAxMhT1JJR0lOQVRPUjogR09TVCAzNC4xMC0xMiA1MTItYml0 | VEsyNjEqMCgGA1UEAxMhT1JJR0lOQVRPUjogR09TVCAzNC4xMC0xMiA1MTItYml0 | |||
MIGgMBcGCCqFAwcBAQECMAsGCSqFAwcBAgECAQOBhAAEgYC0i7davCkOGGVcYqFP | MIGgMBcGCCqFAwcBAQECMAsGCSqFAwcBAgECAQOBhAAEgYC0i7davCkOGGVcYqFP | |||
tS1fUIROzB0fYARIe0tclTRpare/qzRuVRapqzzO+K21LDpYVfDPs2Sqa13ZN+Ts | tS1fUIROzB0fYARIe0tclTRpare/qzRuVRapqzzO+K21LDpYVfDPs2Sqa13ZN+Ts | |||
/JUlv59qCFB2cYpFyB/0kh4+K79yvz7r8+4WE0EmZf8T3ae/J1Jo6xGunecH1/G4 | /JUlv59qCFB2cYpFyB/0kh4+K79yvz7r8+4WE0EmZf8T3ae/J1Jo6xGunecH1/G4 | |||
hMts9HYLnxbwJDMNVGuIHV6gzqOBhzCBhDBjBgNVHSMEXDBagBSsbA5MRGaiQpbi | hMts9HYLnxbwJDMNVGuIHV6gzqOBhzCBhDBjBgNVHSMEXDBagBSsbA5MRGaiQpbi | |||
skipping to change at page 17, line 33 ¶ | skipping to change at line 707 ¶ | |||
JLWygYrKoipdOjDA/2HEnBZ34uFOLNheUqiKpCPoFpbR2GBiVYVTVK9ibiczgaca | JLWygYrKoipdOjDA/2HEnBZ34uFOLNheUqiKpCPoFpbR2GBiVYVTVK9ibiczgaca | |||
EQYzDXtcS0QCZOxpKWfteAlbdJLC/SqPurPYyKi0MVRUPROhbisFASDT38HDH1Dh | EQYzDXtcS0QCZOxpKWfteAlbdJLC/SqPurPYyKi0MVRUPROhbisFASDT38HDH1Dh | |||
0dL5f6ga4aPWLrWbbgWERFOoOPyh4DotlPF37AQOwiEjsbyyRHq3HgbWiaxQRuAh | 0dL5f6ga4aPWLrWbbgWERFOoOPyh4DotlPF37AQOwiEjsbyyRHq3HgbWiaxQRuAh | |||
eqHOn4QVGY92/HFvJ7u3TcnQdLWhTe/lh1RHLNF3RnXtN9if9zC23laDZOiWZplU | eqHOn4QVGY92/HFvJ7u3TcnQdLWhTe/lh1RHLNF3RnXtN9if9zC23laDZOiWZplU | |||
yLrUiTCbHrtn1RppPDmLFNMt9dJ7KKgCkOi7Zm5nhqPChbywX13wcfYxVDAjBgkq | yLrUiTCbHrtn1RppPDmLFNMt9dJ7KKgCkOi7Zm5nhqPChbywX13wcfYxVDAjBgkq | |||
hkiG9w0BCRUxFgQUeVV0+dS25MICJChpmGc/8AoUwE0wLQYJKoZIhvcNAQkUMSAe | hkiG9w0BCRUxFgQUeVV0+dS25MICJChpmGc/8AoUwE0wLQYJKoZIhvcNAQkUMSAe | |||
HgBwADEAMgBGAHIAaQBlAG4AZABsAHkATgBhAG0AZTBeME4wCgYIKoUDBwEBAgME | HgBwADEAMgBGAHIAaQBlAG4AZABsAHkATgBhAG0AZTBeME4wCgYIKoUDBwEBAgME | |||
QAkBKw4ihn7pSIYTEhu0bcvTPZjI3WgVxCkUVlOsc80G69EKFEOTnObGJGSKJ51U | QAkBKw4ihn7pSIYTEhu0bcvTPZjI3WgVxCkUVlOsc80G69EKFEOTnObGJGSKJ51U | |||
KkOsXF0a7+VBZf3BcVVQh9UECIVEtO+VpuskAgIIAA== | KkOsXF0a7+VBZf3BcVVQh9UECIVEtO+VpuskAgIIAA== | |||
A.2.2. PFX in ASN.1 format | A.2.2. PFX in ASN.1 Format | |||
0 1323:SEQUENCE: | 0 1323:SEQUENCE: | |||
4 1: INTEGER: 3 | 4 1: INTEGER: 3 | |||
7 1220: SEQUENCE: | 7 1220: SEQUENCE: | |||
11 9: OBJECT IDENTIFIER:data [1.2.840.113549.1.7.1] | 11 9: OBJECT IDENTIFIER:data [1.2.840.113549.1.7.1] | |||
22 1205: CONTEXT SPECIFIC (0): | 22 1205: CONTEXT SPECIFIC (0): | |||
26 1201: OCTET STRING: | 26 1201: OCTET STRING: | |||
30 1197: SEQUENCE: | 30 1197: SEQUENCE: | |||
34 716: SEQUENCE: | 34 716: SEQUENCE: | |||
38 9: OBJECT IDENTIFIER:data [1.2.840.113549.1.7.1] | 38 9: OBJECT IDENTIFIER:data [1.2.840.113549.1.7.1] | |||
skipping to change at page 21, line 45 ¶ | skipping to change at line 910 ¶ | |||
1235 10: SEQUENCE: | 1235 10: SEQUENCE: | |||
1237 8: OBJECT IDENTIFIER:[1.2.643.7.1.1.2.3] | 1237 8: OBJECT IDENTIFIER:[1.2.643.7.1.1.2.3] | |||
1247 64: OCTET STRING: | 1247 64: OCTET STRING: | |||
: 09012B0E22867EE9488613121BB46DCB | : 09012B0E22867EE9488613121BB46DCB | |||
: D33D98C8DD6815C429145653AC73CD06 | : D33D98C8DD6815C429145653AC73CD06 | |||
: EBD10A1443939CE6C624648A279D542A | : EBD10A1443939CE6C624648A279D542A | |||
: 43AC5C5D1AEFE54165FDC171555087D5 | : 43AC5C5D1AEFE54165FDC171555087D5 | |||
1313 8: OCTET STRING:'8544B4EF95A6EB24' | 1313 8: OCTET STRING:'8544B4EF95A6EB24' | |||
1323 2: INTEGER:2048 | 1323 2: INTEGER:2048 | |||
A.2.3. Decrypted key value in BASE64 format | A.2.3. Decrypted Key Value in BASE64 Format | |||
MIHiAgEBMBcGCCqFAwcBAQECMAsGCSqFAwcBAgECAQRAEWkl+eblsHWs86SNgRKq | MIHiAgEBMBcGCCqFAwcBAQECMAsGCSqFAwcBAgECAQRAEWkl+eblsHWs86SNgRKq | |||
SxMOgGhbvR/uZ5/WWfdNG1axvUwVhpcXIxDZUmzQuNzqJBkseI7f5/JjXyTFRF1a | SxMOgGhbvR/uZ5/WWfdNG1axvUwVhpcXIxDZUmzQuNzqJBkseI7f5/JjXyTFRF1a | |||
+YGBgQG0i7davCkOGGVcYqFPtS1fUIROzB0fYARIe0tclTRpare/qzRuVRapqzzO | +YGBgQG0i7davCkOGGVcYqFPtS1fUIROzB0fYARIe0tclTRpare/qzRuVRapqzzO | |||
+K21LDpYVfDPs2Sqa13ZN+Ts/JUlv59qCFB2cYpFyB/0kh4+K79yvz7r8+4WE0Em | +K21LDpYVfDPs2Sqa13ZN+Ts/JUlv59qCFB2cYpFyB/0kh4+K79yvz7r8+4WE0Em | |||
Zf8T3ae/J1Jo6xGunecH1/G4hMts9HYLnxbwJDMNVGuIHV6gzg== | Zf8T3ae/J1Jo6xGunecH1/G4hMts9HYLnxbwJDMNVGuIHV6gzg== | |||
A.2.4. Decrypted key value in ASN.1 format | A.2.4. Decrypted Key Value in ASN.1 Format | |||
0 226:SEQUENCE : | 0 226:SEQUENCE: | |||
3 1: INTEGER : 1 | 3 1: INTEGER: 1 | |||
6 23: SEQUENCE : | 6 23: SEQUENCE: | |||
8 8: OBJECT IDENTIFIER : [1.2.643.7.1.1.1.2] | 8 8: OBJECT IDENTIFIER: [1.2.643.7.1.1.1.2] | |||
18 11: SEQUENCE : | 18 11: SEQUENCE: | |||
20 9: OBJECT IDENTIFIER : [1.2.643.7.1.2.1.2.1] | 20 9: OBJECT IDENTIFIER: [1.2.643.7.1.2.1.2.1] | |||
31 64: OCTET STRING : | 31 64: OCTET STRING: | |||
: 116925F9E6E5B075ACF3A48D8112AA4B130E80685BBD1FEE679FD6 | : 116925F9E6E5B075ACF3A48D8112AA4B130E80685BBD1FEE679FD6 | |||
: 59F74D1B56B1BD4C158697172310D9526CD0B8DCEA24192C788EDF | : 59F74D1B56B1BD4C158697172310D9526CD0B8DCEA24192C788EDF | |||
: E7F2635F24C5445D5AF9 | : E7F2635F24C5445D5AF9 | |||
97 129: CONTEXT SPECIFIC (1) : | 97 129: CONTEXT SPECIFIC (1): | |||
: 01B48BB75ABC290E18655C62A14FB52D5F50844ECC1D1F6004487B | : 01B48BB75ABC290E18655C62A14FB52D5F50844ECC1D1F6004487B | |||
: 4B5C9534696AB7BFAB346E5516A9AB3CCEF8ADB52C3A5855F0CFB3 | : 4B5C9534696AB7BFAB346E5516A9AB3CCEF8ADB52C3A5855F0CFB3 | |||
: 64AA6B5DD937E4ECFC9525BF9F6A085076718A45C81FF4921E3E2B | : 64AA6B5DD937E4ECFC9525BF9F6A085076718A45C81FF4921E3E2B | |||
: BF72BF3EEBF3EE1613412665FF13DDA7BF275268EB11AE9DE707D7 | : BF72BF3EEBF3EE1613412665FF13DDA7BF275268EB11AE9DE707D7 | |||
: F1B884CB6CF4760B9F16F024330D546B881D5EA0CE | : F1B884CB6CF4760B9F16F024330D546B881D5EA0CE | |||
A.3. The example of a PFX with a password-protected key and a password- | A.3. Example of a PFX with a Password-Protected Key and a Password- | |||
protected certificate. | Protected Certificate | |||
In this example the PKCS8SHroudedKeybag structure is used to store | In this example, the PKCS8SHroudedKeybag structure is used to store | |||
the key, which is placed in the Data structure (see [RFC5652]). The | the key, which is placed in the Data structure (see [RFC5652]). The | |||
certBag structure is used to store the certificate, which is placed | certBag structure is used to store the certificate, which is placed | |||
in the EncryptedData structure (see [RFC5652]). A following password | in the EncryptedData structure (see [RFC5652]). The following | |||
is used to encrypt the key and control the integrity. The password | password is used to encrypt the key and provide integrity control. | |||
is in hexadecimal. | The password is in hexadecimal. | |||
0xD09FD0B0D180D0BED0BBD18C20D0B4D0BBD18F20504658 | 0xD09FD0B0D180D0BED0BBD18C20D0B4D0BBD18F20504658 | |||
The key encryption algorithm identifier: | The key encryption algorithm identifier: | |||
1.2.643.7.1.1.5.1.1 | 1.2.643.7.1.1.5.1.1 | |||
The certificate encryption algorithm identifier: | The certificate encryption algorithm identifier: | |||
1.2.643.7.1.1.5.1.2 | 1.2.643.7.1.1.5.1.2 | |||
A.3.1. PFX in BASE64 format | A.3.1. PFX in BASE64 Format | |||
MIIFjAIBAzCCBSUGCSqGSIb3DQEHAaCCBRYEggUSMIIFDjCCA0EGCSqGSIb3DQEH | MIIFjAIBAzCCBSUGCSqGSIb3DQEHAaCCBRYEggUSMIIFDjCCA0EGCSqGSIb3DQEH | |||
BqCCAzIwggMuAgEAMIIDJwYJKoZIhvcNAQcBMFUGCSqGSIb3DQEFDTBIMCkGCSqG | BqCCAzIwggMuAgEAMIIDJwYJKoZIhvcNAQcBMFUGCSqGSIb3DQEFDTBIMCkGCSqG | |||
SIb3DQEFDDAcBAgUuSVGsSwGjQICCAAwDAYIKoUDBwEBBAIFADAbBgkqhQMHAQEF | SIb3DQEFDDAcBAgUuSVGsSwGjQICCAAwDAYIKoUDBwEBBAIFADAbBgkqhQMHAQEF | |||
AQIwDgQM9Hk3dagtS48+G/x+gIICwWGPqxxN+sTrKbruRf9R5Ya9cf5AtO1frqMn | AQIwDgQM9Hk3dagtS48+G/x+gIICwWGPqxxN+sTrKbruRf9R5Ya9cf5AtO1frqMn | |||
f1eULfmZmTg/BdE51QQ+Vbnh3v1kmspr6h2+e4Wli+ndEeCWG6A6X/G22h/RAHW2 | f1eULfmZmTg/BdE51QQ+Vbnh3v1kmspr6h2+e4Wli+ndEeCWG6A6X/G22h/RAHW2 | |||
YrVmf6cCWxW+YrqzT4h/8RQL/9haunD5LmHPLVsYrEai0OwbgXayDSwARVJQLQYq | YrVmf6cCWxW+YrqzT4h/8RQL/9haunD5LmHPLVsYrEai0OwbgXayDSwARVJQLQYq | |||
sLNmZK5ViN+fRiS5wszVJ3AtVq8EuPt41aQEKwPy2gmH4S6WmnQRC6W7aoqmIifF | sLNmZK5ViN+fRiS5wszVJ3AtVq8EuPt41aQEKwPy2gmH4S6WmnQRC6W7aoqmIifF | |||
PJENJNn5K2M1J6zNESs6bFtYNKMArNqtvv3rioY6eAaaLy6AV6ljsekmqodHmQjv | PJENJNn5K2M1J6zNESs6bFtYNKMArNqtvv3rioY6eAaaLy6AV6ljsekmqodHmQjv | |||
Y4eEioJs0xhpXhZY69PXT+ZBeHv6MSheBhwXqxAd1DqtPTafMjNK8rqKCap9TtPG | Y4eEioJs0xhpXhZY69PXT+ZBeHv6MSheBhwXqxAd1DqtPTafMjNK8rqKCap9TtPG | |||
vONvo5W9dgwegxRRQzlum8dzV4m1W9Aq4W7t8/UcxDWRz3k6ijFPlGaA9+8ZMTEO | vONvo5W9dgwegxRRQzlum8dzV4m1W9Aq4W7t8/UcxDWRz3k6ijFPlGaA9+8ZMTEO | |||
skipping to change at page 23, line 35 ¶ | skipping to change at line 990 ¶ | |||
AAAEgeUqj9mI3RDfK5hMd0EeYws7foZK/5ANr2wUhP5qnDjAZgn76lExJ+wuvlnS | AAAEgeUqj9mI3RDfK5hMd0EeYws7foZK/5ANr2wUhP5qnDjAZgn76lExJ+wuvlnS | |||
9PChfWVugvdl/9XJgQvvr9Cu4pOh4ICXplchcy0dGk/MzItHRVC5wK2nTxwQ4kKT | 9PChfWVugvdl/9XJgQvvr9Cu4pOh4ICXplchcy0dGk/MzItHRVC5wK2nTxwQ4kKT | |||
kG9xhLFzoD16dhtqX0+/dQg9G8pE5EzCBIYRXLm1Arcz9k7KVsTJuNMjFrr7EQuu | kG9xhLFzoD16dhtqX0+/dQg9G8pE5EzCBIYRXLm1Arcz9k7KVsTJuNMjFrr7EQuu | |||
Tr80ATSQOtsq50zpFyrpznVPGCrOdIjpymZxNdvw48bZxqTtRVDxCYATOGqz0pwH | Tr80ATSQOtsq50zpFyrpznVPGCrOdIjpymZxNdvw48bZxqTtRVDxCYATOGqz0pwH | |||
ClWULHD9LIajLMB2GhBKyQw6ujIlltJs0T+WNdX/AT2FLi1LFSS3+Cj9MVQwIwYJ | ClWULHD9LIajLMB2GhBKyQw6ujIlltJs0T+WNdX/AT2FLi1LFSS3+Cj9MVQwIwYJ | |||
KoZIhvcNAQkVMRYEFHlVdPnUtuTCAiQoaZhnP/AKFMBNMC0GCSqGSIb3DQEJFDEg | KoZIhvcNAQkVMRYEFHlVdPnUtuTCAiQoaZhnP/AKFMBNMC0GCSqGSIb3DQEJFDEg | |||
Hh4AcAAxADIARgByAGkAZQBuAGQAbAB5AE4AYQBtAGUwXjBOMAoGCCqFAwcBAQID | Hh4AcAAxADIARgByAGkAZQBuAGQAbAB5AE4AYQBtAGUwXjBOMAoGCCqFAwcBAQID | |||
BEDp4e22JmXdnvR0xA99yQuzQuJ8pxBeOpsLm2dZQqt3Fje5zqW1uk/7VOcfV5r2 | BEDp4e22JmXdnvR0xA99yQuzQuJ8pxBeOpsLm2dZQqt3Fje5zqW1uk/7VOcfV5r2 | |||
bKm8nsLOs2rPT8hBOoeAZvOIBAjGIUHw6IjG2QICCAA= | bKm8nsLOs2rPT8hBOoeAZvOIBAjGIUHw6IjG2QICCAA= | |||
A.3.2. PFX in ASN.1 format | A.3.2. PFX in ASN.1 Format | |||
0 1420:SEQUENCE: | 0 1420:SEQUENCE: | |||
4 1: INTEGER:3 | 4 1: INTEGER:3 | |||
7 1317: SEQUENCE: | 7 1317: SEQUENCE: | |||
11 9: OBJECT IDENTIFIER:data [1.2.840.113549.1.7.1] | 11 9: OBJECT IDENTIFIER:data [1.2.840.113549.1.7.1] | |||
22 1302: CONTEXT SPECIFIC (0): | 22 1302: CONTEXT SPECIFIC (0): | |||
26 1298: OCTET STRING: | 26 1298: OCTET STRING: | |||
30 1294: SEQUENCE: | 30 1294: SEQUENCE: | |||
34 833: SEQUENCE: | 34 833: SEQUENCE: | |||
38 9: OBJECT IDENTIFIER:encryptedData [1.2.840.113549.1.7.6] | 38 9: OBJECT IDENTIFIER:encryptedData [1.2.840.113549.1.7.6] | |||
skipping to change at page 25, line 35 ¶ | skipping to change at line 1086 ¶ | |||
938 41: SEQUENCE: | 938 41: SEQUENCE: | |||
940 9: OBJECT IDENTIFIER:[1.2.840.113549.1.5.12] | 940 9: OBJECT IDENTIFIER:[1.2.840.113549.1.5.12] | |||
951 28: SEQUENCE: | 951 28: SEQUENCE: | |||
953 8: OCTET STRING: | 953 8: OCTET STRING: | |||
: FD04424D0ED6DC2F | : FD04424D0ED6DC2F | |||
963 2: INTEGER:2048 | 963 2: INTEGER:2048 | |||
967 12: SEQUENCE: | 967 12: SEQUENCE: | |||
969 8: OBJECT IDENTIFIER:[1.2.643.7.1.1.4.2] | 969 8: OBJECT IDENTIFIER:[1.2.643.7.1.1.4.2] | |||
979 0: NULL: | 979 0: NULL: | |||
981 27: SEQUENCE: | 981 27: SEQUENCE: | |||
983 9: OBJECT IDENTIFIER:[1.2.643.7.1.1.5.1.1] | 983 9: OBJECT IDENTIFIER:[1.2.643.7.1.1.5.1.1] | |||
994 14: SEQUENCE: | 994 14: SEQUENCE: | |||
996 12: OCTET STRING: | 996 12: OCTET STRING: | |||
: F0C52AA00000000000000000 | : F0C52AA00000000000000000 | |||
1010 229: OCTET STRING: | 1010 229: OCTET STRING: | |||
: 2A8FD988DD10DF2B984C77411E630B3B7E864AFF900DAF6C1484FE6A9C38C | : 2A8FD988DD10DF2B984C77411E630B3B7E864AFF900DAF6C1484FE6A9C38C | |||
: 06609FBEA513127EC2EBE59D2F4F0A17D656E82F765FFD5C9810BEFAFD0AE | : 06609FBEA513127EC2EBE59D2F4F0A17D656E82F765FFD5C9810BEFAFD0AE | |||
: E293A1E08097A65721732D1D1A4FCCCC8B474550B9C0ADA74F1C10E242939 | : E293A1E08097A65721732D1D1A4FCCCC8B474550B9C0ADA74F1C10E242939 | |||
: 06F7184B173A03D7A761B6A5F4FBF75083D1BCA44E44CC20486115CB9B502 | : 06F7184B173A03D7A761B6A5F4FBF75083D1BCA44E44CC20486115CB9B502 | |||
: B733F64ECA56C4C9B8D32316BAFB110BAE4EBF340134903ADB2AE74CE9172 | : B733F64ECA56C4C9B8D32316BAFB110BAE4EBF340134903ADB2AE74CE9172 | |||
: AE9CE754F182ACE7488E9CA667135DBF0E3C6D9C6A4ED4550F1098013386A | : AE9CE754F182ACE7488E9CA667135DBF0E3C6D9C6A4ED4550F1098013386A | |||
skipping to change at page 26, line 4 ¶ | skipping to change at line 1103 ¶ | |||
: E293A1E08097A65721732D1D1A4FCCCC8B474550B9C0ADA74F1C10E242939 | : E293A1E08097A65721732D1D1A4FCCCC8B474550B9C0ADA74F1C10E242939 | |||
: 06F7184B173A03D7A761B6A5F4FBF75083D1BCA44E44CC20486115CB9B502 | : 06F7184B173A03D7A761B6A5F4FBF75083D1BCA44E44CC20486115CB9B502 | |||
: B733F64ECA56C4C9B8D32316BAFB110BAE4EBF340134903ADB2AE74CE9172 | : B733F64ECA56C4C9B8D32316BAFB110BAE4EBF340134903ADB2AE74CE9172 | |||
: AE9CE754F182ACE7488E9CA667135DBF0E3C6D9C6A4ED4550F1098013386A | : AE9CE754F182ACE7488E9CA667135DBF0E3C6D9C6A4ED4550F1098013386A | |||
: B3D29C070A55942C70FD2C86A32CC0761A104AC90C3ABA322596D26CD13F9 | : B3D29C070A55942C70FD2C86A32CC0761A104AC90C3ABA322596D26CD13F9 | |||
: 635D5FF013D852E2D4B1524B7F828FD | : 635D5FF013D852E2D4B1524B7F828FD | |||
1242 84: SET: | 1242 84: SET: | |||
1244 35: SEQUENCE: | 1244 35: SEQUENCE: | |||
1246 9: OBJECT IDENTIFIER:localKeyID [1.2.840.113549.1.9.21] | 1246 9: OBJECT IDENTIFIER:localKeyID [1.2.840.113549.1.9.21] | |||
1257 22: SET: | 1257 22: SET: | |||
1259 20: OCTET STRING: | 1259 20: OCTET STRING: | |||
: 795574F9D4B6E4C20224286998673FF00A14C04D | : 795574F9D4B6E4C20224286998673FF00A14C04D | |||
1281 45: SEQUENCE: | 1281 45: SEQUENCE: | |||
1283 9: OBJECT IDENTIFIER:friendlyName [1.2.840.113549.1.9.20] | 1283 9: OBJECT IDENTIFIER:friendlyName [1.2.840.113549.1.9.20] | |||
1294 32: SET: | 1294 32: SET: | |||
1296 30: BMP STRING:'p12FriendlyName' | 1296 30: BMP STRING:'p12FriendlyName' | |||
1328 94: SEQUENCE: | 1328 94: SEQUENCE: | |||
1330 78: SEQUENCE: | 1330 78: SEQUENCE: | |||
1332 10: SEQUENCE: | 1332 10: SEQUENCE: | |||
1334 8: OBJECT IDENTIFIER:[1.2.643.7.1.1.2.3] | 1334 8: OBJECT IDENTIFIER:[1.2.643.7.1.1.2.3] | |||
1344 64: OCTET STRING: | 1344 64: OCTET STRING: | |||
: E9E1EDB62665DD9EF474C40F7DC90BB342E27CA7105E3A9B0B9B675942AB771637B9CEA5B5BA4FFB54E71F57 | : E9E1EDB62665DD9EF474C40F7DC90BB342E27CA7105E3A9B0B9B675942AB771637B9CEA5B5BA4FFB54E71F57 | |||
: 9AF66CA9BC9EC2CEB36ACF4FC8413A878066F388 | : 9AF66CA9BC9EC2CEB36ACF4FC8413A878066F388 | |||
1410 8: OCTET STRING:'C62141F0E888C6D9' | 1410 8: OCTET STRING:'C62141F0E888C6D9' | |||
1420 2: INTEGER:2048 | 1420 2: INTEGER:2048 | |||
A.3.3. Decrypted key value in BASE64 format | A.3.3. Decrypted Key Value in BASE64 Format | |||
MIHiAgEBMBcGCCqFAwcBAQECMAsGCSqFAwcBAgECAQRAEWkl+eblsHWs86SNgRKq | MIHiAgEBMBcGCCqFAwcBAQECMAsGCSqFAwcBAgECAQRAEWkl+eblsHWs86SNgRKq | |||
SxMOgGhbvR/uZ5/WWfdNG1axvUwVhpcXIxDZUmzQuNzqJBkseI7f5/JjXyTFRF1a | SxMOgGhbvR/uZ5/WWfdNG1axvUwVhpcXIxDZUmzQuNzqJBkseI7f5/JjXyTFRF1a | |||
+YGBgQG0i7davCkOGGVcYqFPtS1fUIROzB0fYARIe0tclTRpare/qzRuVRapqzzO | +YGBgQG0i7davCkOGGVcYqFPtS1fUIROzB0fYARIe0tclTRpare/qzRuVRapqzzO | |||
+K21LDpYVfDPs2Sqa13ZN+Ts/JUlv59qCFB2cYpFyB/0kh4+K79yvz7r8+4WE0Em | +K21LDpYVfDPs2Sqa13ZN+Ts/JUlv59qCFB2cYpFyB/0kh4+K79yvz7r8+4WE0Em | |||
Zf8T3ae/J1Jo6xGunecH1/G4hMts9HYLnxbwJDMNVGuIHV6gzg== | Zf8T3ae/J1Jo6xGunecH1/G4hMts9HYLnxbwJDMNVGuIHV6gzg== | |||
A.3.4. Decrypted key value in ASN.1 format | A.3.4. Decrypted Key Value in ASN.1 Format | |||
0 226:SEQUENCE : | 0 226:SEQUENCE: | |||
3 1: INTEGER : 1 | 3 1: INTEGER: 1 | |||
6 23: SEQUENCE : | 6 23: SEQUENCE: | |||
8 8: OBJECT IDENTIFIER : [1.2.643.7.1.1.1.2] | 8 8: OBJECT IDENTIFIER: [1.2.643.7.1.1.1.2] | |||
18 11: SEQUENCE : | 18 11: SEQUENCE: | |||
20 9: OBJECT IDENTIFIER : [1.2.643.7.1.2.1.2.1] | 20 9: OBJECT IDENTIFIER: [1.2.643.7.1.2.1.2.1] | |||
31 64: OCTET STRING : | 31 64: OCTET STRING: | |||
: 116925F9E6E5B075ACF3A48D8112AA4B130E80685BBD1FEE679FD6 | : 116925F9E6E5B075ACF3A48D8112AA4B130E80685BBD1FEE679FD6 | |||
: 59F74D1B56B1BD4C158697172310D9526CD0B8DCEA24192C788EDF | : 59F74D1B56B1BD4C158697172310D9526CD0B8DCEA24192C788EDF | |||
: E7F2635F24C5445D5AF9 | : E7F2635F24C5445D5AF9 | |||
97 129: CONTEXT SPECIFIC (1) : | 97 129: CONTEXT SPECIFIC (1): | |||
: 01B48BB75ABC290E18655C62A14FB52D5F50844ECC1D1F6004487B | : 01B48BB75ABC290E18655C62A14FB52D5F50844ECC1D1F6004487B | |||
: 4B5C9534696AB7BFAB346E5516A9AB3CCEF8ADB52C3A5855F0CFB3 | : 4B5C9534696AB7BFAB346E5516A9AB3CCEF8ADB52C3A5855F0CFB3 | |||
: 64AA6B5DD937E4ECFC9525BF9F6A085076718A45C81FF4921E3E2B | : 64AA6B5DD937E4ECFC9525BF9F6A085076718A45C81FF4921E3E2B | |||
: BF72BF3EEBF3EE1613412665FF13DDA7BF275268EB11AE9DE707D7 | : BF72BF3EEBF3EE1613412665FF13DDA7BF275268EB11AE9DE707D7 | |||
: F1B884CB6CF4760B9F16F024330D546B881D5EA0CE | : F1B884CB6CF4760B9F16F024330D546B881D5EA0CE | |||
Acknowledgments | Acknowledgments | |||
The author thanks Potashnikov Alexander, Pianov Semen and Smyslov | The author thanks Alexander Potashnikov, Semen Pianov, and Valery | |||
Valery for their careful readings and useful comments. | Smyslov for their careful readings and useful comments. | |||
Author's Address | Author's Address | |||
Ekaterina Karelina (editor) | Ekaterina Karelina (editor) | |||
InfoTeCS | InfoTeCS | |||
2B stroenie 1, ul. Otradnaya | 2B stroenie 1, ul. Otradnaya | |||
Moscow | Moscow | |||
127273 | 127273 | |||
Russian Federation | Russian Federation | |||
Email: Ekaterina.Karelina@infotecs.ru | Email: Ekaterina.Karelina@infotecs.ru | |||
End of changes. 108 change blocks. | ||||
335 lines changed or deleted | 312 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |