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 May 2024
Expires: 14 June 2024 ISSN: 2070-1721
Generating the Transport Key Containers Using the GOST Algorithms Generating Transport Key Containers (PFX) 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 transport key containers (PFX)
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 (PFX)
and certificates of electronic signature verification keys which are for keys and certificates using the GOST R 34.10-2012 algorithm. The
created in accordance with GOST R 34.10–2012 algorithm. The GOST R GOST R 34.11-2012 algorithm is used to ensure the integrity of PFX.
34.11-2012 algorithm is used to ensure integrity of transport key
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
= (b_1,...,b_s) belongs to the set V_s if b_1,...,b_s belongs to
{0,...,255}
+================+==================================================+ |A| the number of components (a length) of the vector A belonging to
| Abbreviations | Definition | V_s (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_1,...,a_(n_1)) in V_(n_1) and C =
(c_1,...,c_(n_2)) in V_(n_2), res =
(a_1,...,a_(n_1),c_1,...,c_(n_2)) 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 belongs to 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 PFX (see [RFC7292]) is designed for secure storage and data
secure storage and data transfer. The scope of this document is to transfer. The scope of this document is to define how PFX is used
define how the transport key container is used for private key and for private key and certificate protection with a password when GOST
certificate protection with a password when GOST R 34.10-2012 is 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], PFX 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 PFX, this field should be checked first.
should be 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.102012 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 410
} }
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 PFX, 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) gostR34102012-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 606
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 705
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 19, line 4 skipping to change at line 772
: 'ORIGINATOR: : 'ORIGINATOR:
: GOST 34.10-12 512-bit' : GOST 34.10-12 512-bit'
288 160: SEQUENCE: 288 160: SEQUENCE:
291 23: SEQUENCE: 291 23: SEQUENCE:
293 8: OBJECT IDENTIFIER: 293 8: OBJECT IDENTIFIER:
: [1.2.643.7.1.1.1.2] : [1.2.643.7.1.1.1.2]
303 11: SEQUENCE: 303 11: SEQUENCE:
305 9: OBJECT IDENTIFIER: 305 9: OBJECT IDENTIFIER:
: [1.2.643.7.1.2.1.2.1] : [1.2.643.7.1.2.1.2.1]
316 132: BIT STRING UnusedBits:0: 316 132: BIT STRING UnusedBits:0:
320 128: OCTET STRING: 320 128: OCTET STRING:
: B48BB75ABC290E18655C62A : B48BB75ABC290E18655C62A
: 14FB52D5F50844ECC1D1F60 : 14FB52D5F50844ECC1D1F60
: 04487B4B5C9534696AB7BFA : 04487B4B5C9534696AB7BFA
: B346E5516A9AB3CCEF8ADB5 : B346E5516A9AB3CCEF8ADB5
: 2C3A5855F0CFB364AA6B5DD : 2C3A5855F0CFB364AA6B5DD
: 937E4ECFC9525BF9F6A0850 : 937E4ECFC9525BF9F6A0850
: 76718A45C81FF4921E3E2BB : 76718A45C81FF4921E3E2BB
: F72BF3EEBF3EE1613412665 : F72BF3EEBF3EE1613412665
: FF13DDA7BF275268EB11AE9 : FF13DDA7BF275268EB11AE9
: DE707D7F1B884CB6CF4760B : DE707D7F1B884CB6CF4760B
: 9F16F024330D546B881D5EA0CE : 9F16F024330D546B881D5EA0CE
451 135: CONTEXT SPECIFIC (3): 451 135: CONTEXT SPECIFIC (3):
454 132: SEQUENCE: 454 132: SEQUENCE:
457 99: SEQUENCE: 457 99: SEQUENCE:
459 3: OBJECT IDENTIFIER: 459 3: OBJECT IDENTIFIER:
: authorityKeyIdentifier [2.5.29.35] : authorityKeyIdentifier
: [2.5.29.35]
464 92: OCTET STRING: 464 92: OCTET STRING:
466 90: SEQUENCE: 466 90: SEQUENCE:
468 20: CONTEXT SPECIFIC (0): 468 20: CONTEXT SPECIFIC (0):
: AC6C0E4C4466A24296E2 : AC6C0E4C4466A24296E2
: 9F093B2566F3CBA4532A : 9F093B2566F3CBA4532A
490 60: CONTEXT SPECIFIC (1): 490 60: CONTEXT SPECIFIC (1):
492 58: CONTEXT SPECIFIC (4): 492 58: CONTEXT SPECIFIC (4):
494 56: SEQUENCE: 494 56: SEQUENCE:
496 13: SET: 496 13: SET:
498 11: SEQUENCE: 498 11: SEQUENCE:
500 3: OBJECT IDENTIFIER: 500 3: OBJECT IDENTIFIER:
: organizationName : organizationName
: [2.5.4.10] : [2.5.4.10]
505 4: PRINTABLE STRING:'TK26' 505 4: PRINTABLE STRING:
: 'TK26'
511 39: SET: 511 39: SET:
513 37: SEQUENCE: 513 37: SEQUENCE:
515 3: OBJECT IDENTIFIER: 515 3: OBJECT IDENTIFIER:
: commonName [2.5.4.3] : commonName
: [2.5.4.3]
520 30: PRINTABLE STRING: 520 30: PRINTABLE STRING:
: 'CA TK26: GOST ' : 'CA TK26: GOST '
: '34.10-12 256-bit' : '34.10-12 256-bit'
552 4: CONTEXT SPECIFIC (2): 552 4: CONTEXT SPECIFIC (2):
: 018CBA81 : 018CBA81
558 29: SEQUENCE: 558 29: SEQUENCE:
560 3: OBJECT IDENTIFIER: 560 3: OBJECT IDENTIFIER:
: subjectKeyIdentifier [2.5.29.14] : subjectKeyIdentifier
: [2.5.29.14]
565 22: OCTET STRING: 565 22: OCTET STRING:
567 20: OCTET STRING: 567 20: OCTET STRING:
: 7E065709980CAD6B08A8 : 7E065709980CAD6B08A8
: 57EE7900583AC9D7A0A4 : 57EE7900583AC9D7A0A4
589 10: SEQUENCE: 589 10: SEQUENCE:
591 8: OBJECT IDENTIFIER:
591 8: OBJECT IDENTIFIER:[1.2.643.7.1.1.3.2] : [1.2.643.7.1.1.3.2]
601 65: BIT STRING UnusedBits:0: 601 65: BIT STRING UnusedBits:0:
: 0A5EA9F1D01BA62F4793EDE680CC88D1 : 0A5EA9F1D01BA62F4793EDE680CC88D1
: 6221D7B22B96B4A9FE607417B67332DF : 6221D7B22B96B4A9FE607417B67332DF
: 17503D43C33DC9AEB9F17979DF32F380 : 17503D43C33DC9AEB9F17979DF32F380
: E4175427D842C8380C5401ACFC870410 : E4175427D842C8380C5401ACFC870410
668 84: SET: 668 84: SET:
670 35: SEQUENCE: 670 35: SEQUENCE:
672 9: OBJECT IDENTIFIER:localKeyID 672 9: OBJECT IDENTIFIER:localKeyID
: [1.2.840.113549.1.9.21] : [1.2.840.113549.1.9.21]
683 22: SET: 683 22: SET:
skipping to change at page 20, line 30 skipping to change at line 850
709 9: OBJECT IDENTIFIER:friendlyName 709 9: OBJECT IDENTIFIER:friendlyName
: [1.2.840.113549.1.9.20] : [1.2.840.113549.1.9.20]
720 32: SET: 720 32: SET:
722 30: BMP STRING:'p12FriendlyName' 722 30: BMP STRING:'p12FriendlyName'
754 473: SEQUENCE: 754 473: SEQUENCE:
758 9: OBJECT IDENTIFIER:data [1.2.840.113549.1.7.1] 758 9: OBJECT IDENTIFIER:data [1.2.840.113549.1.7.1]
769 458: CONTEXT SPECIFIC (0): 769 458: CONTEXT SPECIFIC (0):
773 454: OCTET STRING: 773 454: OCTET STRING:
777 450: SEQUENCE: 777 450: SEQUENCE:
781 446: SEQUENCE: 781 446: SEQUENCE:
785 11: OBJECT IDENTIFIER:pkcs-12-pkcs-8ShroudedKeyBag 785 11: OBJECT IDENTIFIER:
: [1.2.840.113549.1.12.10.1.2] : pkcs-12-pkcs-8ShroudedKeyBag
: [1.2.840.113549.1.12.10.1.2]
798 343: CONTEXT SPECIFIC (0): 798 343: CONTEXT SPECIFIC (0):
802 339: SEQUENCE: 802 339: SEQUENCE:
806 89: SEQUENCE: 806 89: SEQUENCE:
808 9: OBJECT IDENTIFIER:[1.2.840.113549.1.5.13] 808 9: OBJECT IDENTIFIER:
: [1.2.840.113549.1.5.13]
819 76: SEQUENCE: 819 76: SEQUENCE:
821 41: SEQUENCE: 821 41: SEQUENCE:
823 9: OBJECT IDENTIFIER: 823 9: OBJECT IDENTIFIER:
: [1.2.840.113549.1.5.12] : [1.2.840.113549.1.5.12]
834 28: SEQUENCE: 834 28: SEQUENCE:
836 8: OCTET STRING:'A7F837B34CC2E82A' 836 8: OCTET STRING:'A7F837B34CC2E82A'
846 2: INTEGER:2048 846 2: INTEGER:2048
850 12: SEQUENCE: 850 12: SEQUENCE:
852 8: OBJECT IDENTIFIER: 852 8: OBJECT IDENTIFIER:
: [1.2.643.7.1.1.4.2] : [1.2.643.7.1.1.4.2]
862 0: NULL: 862 0: NULL:
864 31: SEQUENCE: 864 31: SEQUENCE:
866 9: OBJECT IDENTIFIER:[1.2.643.7.1.1.5.2.2] 866 9: OBJECT IDENTIFIER:
: [1.2.643.7.1.1.5.2.2]
877 18: SEQUENCE: 877 18: SEQUENCE:
879 16: OCTET STRING: 879 16: OCTET STRING:
: 259ADD960DF68F265B00B3498B2A0973 : 259ADD960DF68F265B00B3498B2A0973
897 245: OCTET STRING: 897 245: OCTET STRING:
: 0CCBC469C6DB5913435529D724B5B281 : 0CCBC469C6DB5913435529D724B5B281
: 8ACAA22A5D3A30C0FF61C49C1677E2E1 : 8ACAA22A5D3A30C0FF61C49C1677E2E1
: 4E2CD85E52A88AA423E81696D1D86062 : 4E2CD85E52A88AA423E81696D1D86062
: 55855354AF626E273381A71A1106330D : 55855354AF626E273381A71A1106330D
: 7B5C4B440264EC692967ED78095B7492 : 7B5C4B440264EC692967ED78095B7492
: C2FD2A8FBAB3D8C8A8B43154543D13A1 : C2FD2A8FBAB3D8C8A8B43154543D13A1
: 6E2B050120D3DFC1C31F50E1D1D2F97F : 6E2B050120D3DFC1C31F50E1D1D2F97F
: A81AE1A3D62EB59B6E05844453A838FC : A81AE1A3D62EB59B6E05844453A838FC
: A1E03A2D94F177EC040EC22123B1BCB2 : A1E03A2D94F177EC040EC22123B1BCB2
: 447AB71E06D689AC5046E0217AA1CE9F : 447AB71E06D689AC5046E0217AA1CE9F
skipping to change at page 21, line 27 skipping to change at line 898
: F730B6DE568364E896669954C8BAD489 : F730B6DE568364E896669954C8BAD489
: 309B1EBB67D51A693C398B14D32DF5D2 : 309B1EBB67D51A693C398B14D32DF5D2
: 7B28A80290E8BB666E6786A3C285BCB0 : 7B28A80290E8BB666E6786A3C285BCB0
: 5F5DF071F6 : 5F5DF071F6
1145 84: SET: 1145 84: SET:
1147 35: SEQUENCE: 1147 35: SEQUENCE:
1149 9: OBJECT IDENTIFIER:localKeyID 1149 9: OBJECT IDENTIFIER:localKeyID
: [1.2.840.113549.1.9.21] : [1.2.840.113549.1.9.21]
1160 22: SET: 1160 22: SET:
1162 20: OCTET STRING: 1162 20: OCTET STRING:
: 795574F9D4B6E4C20224286998673FF00A14C04D : 795574F9D4B6E4C20224
: 286998673FF00A14C04D
1184 45: SEQUENCE: 1184 45: SEQUENCE:
1186 9: OBJECT IDENTIFIER:friendlyName 1186 9: OBJECT IDENTIFIER:friendlyName
: [1.2.840.113549.1.9.20] : [1.2.840.113549.1.9.20]
1197 32: SET: 1197 32: SET:
1199 30: BMP STRING:'p12FriendlyName' 1199 30: BMP STRING:'p12FriendlyName'
1231 94: SEQUENCE: 1231 94: SEQUENCE:
1233 78: SEQUENCE: 1233 78: SEQUENCE:
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 D09FD0B0D180D0BED0BBD18C20D0B4D0BBD18F20504658
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 997
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:
49 818: CONTEXT SPECIFIC (0): : encryptedData [1.2.840.113549.1.7.6]
53 814: SEQUENCE: 49 818: CONTEXT SPECIFIC (0):
57 1: INTEGER:0 53 814: SEQUENCE:
60 807: SEQUENCE: 57 1: INTEGER:0
64 9: OBJECT IDENTIFIER:data [1.2.840.113549.1.7.1] 60 807: SEQUENCE:
75 85: SEQUENCE: 64 9: OBJECT IDENTIFIER:data [1.2.840.113549.1.7.1]
75 85: SEQUENCE:
77 9: OBJECT IDENTIFIER:[1.2.840.113549.1.5.13] 77 9: OBJECT IDENTIFIER:[1.2.840.113549.1.5.13]
88 72: SEQUENCE: 88 72: SEQUENCE:
90 41: SEQUENCE: 90 41: SEQUENCE:
92 9: OBJECT IDENTIFIER:[1.2.840.113549.1.5.12] 92 9: OBJECT IDENTIFIER:[1.2.840.113549.1.5.12]
103 28: SEQUENCE: 103 28: SEQUENCE:
105 8: OCTET STRING:'14B92546B12C068D' 105 8: OCTET STRING:'14B92546B12C068D'
115 2: INTEGER:2048 115 2: INTEGER:2048
119 12: SEQUENCE: 119 12: SEQUENCE:
121 8: OBJECT IDENTIFIER:[1.2.643.7.1.1.4.2] 121 8: OBJECT IDENTIFIER:[1.2.643.7.1.1.4.2]
131 0: NULL: 131 0: NULL:
133 27: SEQUENCE: 133 27: SEQUENCE:
135 9: OBJECT IDENTIFIER:[1.2.643.7.1.1.5.1.2] 135 9: OBJECT IDENTIFIER:[1.2.643.7.1.1.5.1.2]
146 14: SEQUENCE: 146 14: SEQUENCE:
148 12: OCTET STRING: 148 12: OCTET STRING:
: F4793775A82D4B8F3E1BFC7E : F4793775A82D4B8F3E1BFC7E
162 705: CONTEXT SPECIFIC (0): 162 705: CONTEXT SPECIFIC (0):
: 618FAB1C4DFAC4EB29BAEE45FF51E586BD7 : 618FAB1C4DFAC4EB29BAEE45FF51E586BD7
: 1FE40B4ED5FAEA3277F57942DF99999383F : 1FE40B4ED5FAEA3277F57942DF99999383F
: 05D139D5043E55B9E1DEFD649ACA6BEA1DB : 05D139D5043E55B9E1DEFD649ACA6BEA1DB
: E7B85A58BE9DD11E0961BA03A5FF1B6DA1F : E7B85A58BE9DD11E0961BA03A5FF1B6DA1F
: D10075B662B5667FA7025B15BE62BAB34F8 : D10075B662B5667FA7025B15BE62BAB34F8
: 87FF1140BFFD85ABA70F92E61CF2D5B18AC : 87FF1140BFFD85ABA70F92E61CF2D5B18AC
: 46A2D0EC1B8176B20D2C004552502D062AB : 46A2D0EC1B8176B20D2C004552502D062AB
: 0B36664AE5588DF9F4624B9C2CCD527702D : 0B36664AE5588DF9F4624B9C2CCD527702D
: 56AF04B8FB78D5A4042B03F2DA0987E12E9 : 56AF04B8FB78D5A4042B03F2DA0987E12E9
: 69A74110BA5BB6A8AA62227C53C910D24D9 : 69A74110BA5BB6A8AA62227C53C910D24D9
: F92B633527ACCD112B3A6C5B5834A300ACD : F92B633527ACCD112B3A6C5B5834A300ACD
: AADBEFDEB8A863A78069A2F2E8057A963B1 : AADBEFDEB8A863A78069A2F2E8057A963B1
: E926AA87479908EF6387848A826CD318695 : E926AA87479908EF6387848A826CD318695
: E1658EBD3D74FE641787BFA31285E061C17 : E1658EBD3D74FE641787BFA31285E061C17
: AB101DD43AAD3D369F32334AF2BA8A09AA7 : AB101DD43AAD3D369F32334AF2BA8A09AA7
: D4ED3C6BCE36FA395BD760C1E8314514339 : D4ED3C6BCE36FA395BD760C1E8314514339
: 6E9BC7735789B55BD02AE16EEDF3F51CC43 : 6E9BC7735789B55BD02AE16EEDF3F51CC43
: 591CF793A8A314F946680F7EF1931310E44 : 591CF793A8A314F946680F7EF1931310E44
: 784146F33A398DBF54D3716E0C567C662E3 : 784146F33A398DBF54D3716E0C567C662E3
: F1A528B762709920F98111EE6553F5EFECA : F1A528B762709920F98111EE6553F5EFECA
: 8F316EB06337F05F1847AD64E3F40DA4A23 : 8F316EB06337F05F1847AD64E3F40DA4A23
: 5414BFBD7860A7DA510CE7B21186CC82EFD : 5414BFBD7860A7DA510CE7B21186CC82EFD
: 4D1880FADA9975F89237BEE6B08B698332B : 4D1880FADA9975F89237BEE6B08B698332B
: 9A4B8CF50154F6FFE444FF9CDAE0470EE38 : 9A4B8CF50154F6FFE444FF9CDAE0470EE38
: 6114512361174F29EFEC37BF1A656AD1965 : 6114512361174F29EFEC37BF1A656AD1965
: C7F5F988B0F05D9367F7C249FEAF0A2AAC4 : C7F5F988B0F05D9367F7C249FEAF0A2AAC4
: BA28CC23F6C2032954FCCD0330A840A3D8F : BA28CC23F6C2032954FCCD0330A840A3D8F
: 7D5461265D8B87EC7D15980C932AFFC14F9 : 7D5461265D8B87EC7D15980C932AFFC14F9
: FDEADBA8FA80A96EABF7354C2964CFFC2E2 : FDEADBA8FA80A96EABF7354C2964CFFC2E2
: E31AA04C7B58C3FF9F446D3F3FA5DA74D12 : E31AA04C7B58C3FF9F446D3F3FA5DA74D12
: 2208FD36237A72DF5475E300739526C55E0 : 2208FD36237A72DF5475E300739526C55E0
: AEFEDDC4B0C60741D74D0A1AC593F21CD8F : AEFEDDC4B0C60741D74D0A1AC593F21CD8F
: 74840EC81E3F7A7A56D2AACA7A049BC9936 : 74840EC81E3F7A7A56D2AACA7A049BC9936
: E175588E33978988F3D2FC753401524872E : E175588E33978988F3D2FC753401524872E
: 39C905D99430FC93512B61DB5D12C3EDCFF : 39C905D99430FC93512B61DB5D12C3EDCFF
: E33B92A5B9E6C021084683AE497B46B893F : E33B92A5B9E6C021084683AE497B46B893F
: EB5B71611744A336501822DEA063A67EC35 : EB5B71611744A336501822DEA063A67EC35
: 35F0CB6CAD133DA4375A765F264FF55F87D : 35F0CB6CAD133DA4375A765F264FF55F87D
: F81F1D641655C6042EEF494C3C419EC5B52 : F81F1D641655C6042EEF494C3C419EC5B52
: 4607B850829F28BD27457DD92B5B233125C : 4607B850829F28BD27457DD92B5B233125C
: 656B555E6E : 656B555E6E
871 453: SEQUENCE: 871 453: SEQUENCE:
875 9: OBJECT IDENTIFIER:data [1.2.840.113549.1.7.1] 875 9: OBJECT IDENTIFIER:data [1.2.840.113549.1.7.1]
886 438: CONTEXT SPECIFIC (0): 886 438: CONTEXT SPECIFIC (0):
890 434: OCTET STRING: 890 434: OCTET STRING:
894 430: SEQUENCE: 894 430: SEQUENCE:
898 426: SEQUENCE: 898 426: SEQUENCE:
902 11: OBJECT IDENTIFIER:pkcs-12-pkcs-8ShroudedKeyBag [1.2.840.113549.1.12.10.1.2] 902 11: OBJECT IDENTIFIER:
915 323: CONTEXT SPECIFIC (0): : pkcs-12-pkcs-8ShroudedKeyBag
919 319: SEQUENCE: : [1.2.840.113549.1.12.10.1.2]
923 85: SEQUENCE: 915 323: CONTEXT SPECIFIC (0):
925 9: OBJECT IDENTIFIER:[1.2.840.113549.1.5.13] 919 319: SEQUENCE:
936 72: SEQUENCE: 923 85: SEQUENCE:
938 41: SEQUENCE: 925 9: OBJECT IDENTIFIER:
940 9: OBJECT IDENTIFIER:[1.2.840.113549.1.5.12] : [1.2.840.113549.1.5.13]
951 28: SEQUENCE: 936 72: SEQUENCE:
953 8: OCTET STRING: 938 41: SEQUENCE:
: FD04424D0ED6DC2F 940 9: OBJECT IDENTIFIER:
963 2: INTEGER:2048 : [1.2.840.113549.1.5.12]
967 12: SEQUENCE: 951 28: SEQUENCE:
969 8: OBJECT IDENTIFIER:[1.2.643.7.1.1.4.2] 953 8: OCTET STRING:
979 0: NULL: : FD04424D0ED6DC2F
981 27: SEQUENCE: 963 2: INTEGER:2048
983 9: OBJECT IDENTIFIER:[1.2.643.7.1.1.5.1.1] 967 12: SEQUENCE:
994 14: SEQUENCE: 969 8: OBJECT IDENTIFIER:
996 12: OCTET STRING: : [1.2.643.7.1.1.4.2]
: F0C52AA00000000000000000 979 0: NULL:
981 27: SEQUENCE:
983 9: OBJECT IDENTIFIER:
: [1.2.643.7.1.1.5.1.1]
994 14: SEQUENCE:
996 12: OCTET STRING:
: F0C52AA00000000000000000
1010 229: OCTET STRING: 1010 229: OCTET STRING:
: 2A8FD988DD10DF2B984C77411E630B3B7E864AFF900DAF6C1484FE6A9C38C : 2A8FD988DD10DF2B984C77411E630B3B
: 06609FBEA513127EC2EBE59D2F4F0A17D656E82F765FFD5C9810BEFAFD0AE : 7E864AFF900DAF6C1484FE6A9C38C066
: E293A1E08097A65721732D1D1A4FCCCC8B474550B9C0ADA74F1C10E242939 : 09FBEA513127EC2EBE59D2F4F0A17D65
: 06F7184B173A03D7A761B6A5F4FBF75083D1BCA44E44CC20486115CB9B502 : 6E82F765FFD5C9810BEFAFD0AEE293A1
: B733F64ECA56C4C9B8D32316BAFB110BAE4EBF340134903ADB2AE74CE9172 : E08097A65721732D1D1A4FCCCC8B4745
: AE9CE754F182ACE7488E9CA667135DBF0E3C6D9C6A4ED4550F1098013386A : 50B9C0ADA74F1C10E24293906F7184B1
: B3D29C070A55942C70FD2C86A32CC0761A104AC90C3ABA322596D26CD13F9 : 73A03D7A761B6A5F4FBF75083D1BCA44
: 635D5FF013D852E2D4B1524B7F828FD : E44CC20486115CB9B502B733F64ECA56
: C4C9B8D32316BAFB110BAE4EBF340134
: 903ADB2AE74CE9172AE9CE754F182ACE
: 7488E9CA667135DBF0E3C6D9C6A4ED45
: 50F1098013386AB3D29C070A55942C70
: FD2C86A32CC0761A104AC90C3ABA3225
: 96D26CD13F9635D5FF013D852E2D4B15
: 24B7F828FD
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 : 795574F9D4B6E4C20224
: 286998673FF00A14C04D
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 : E9E1EDB62665DD9EF474C40F7DC90BB3
: 9AF66CA9BC9EC2CEB36ACF4FC8413A878066F388 : 42E27CA7105E3A9B0B9B675942AB7716
: 37B9CEA5B5BA4FFB54E71F579AF66CA9
: BC9EC2CEB36ACF4FC8413A878066F388
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 Potashnikov Alexander, Pianov Semen, and Smyslov
Valery for their careful readings and useful comments. Valery for their careful readings and useful comments, and Chelpanov
Alexander for his help with the registration of identifiers.
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. 123 change blocks. 
464 lines changed or deleted 464 lines changed or added

This html diff was produced by rfcdiff 1.48.