В соответствии с 6.3.1 [1]:
PrivateKeyType ::= CHOICE {
privateRSAKeyPrivateKeyObject {PrivateRSAKeyAttributes}, privateECKey [0] PrivateKeyObject {PrivateECKeyAttributes}, privateDHKey [1] PrivateKeyObject {PrivateDHKeyAttributes}, privateDSAKey[2] PrivateKeyObject {PrivateDSAKeyAttributes}, privateKEAKey[3] PrivateKeyObject {PrivateKEAKeyAttributes}, ... -- For future extensions |
}
PrivateKeyObject {KeyAttributes} ::= PKCS15Object {
CommonKeyAttributes, CommonPrivateKeyAttributes, KeyAttributes} |
Для хранения ключей, выработанных по алгоритму ГОСТ Р 34.10, в структуру PrivateKeyType введен следующий тип ключа:
privateGostR3410-2012Key [27] PrivateKeyObject {
PrivateGostR3410-2012KeyAttributes} |
PrivateGostR3410-2012KeyAttributes ::= SEQUENCE {
value ObjectValue {GostR3410-2012PrivateKey}, keyInfo KeyInfo {GostPrivateKeyParameters, PublicKeyOperations} | |||||
OPTIONAL, | |||||
... -- For future extensions |
}
GostR3410-2012PrivateKey ::= GostR3410-2012-KeyValueMask
GostPrivateKeyParameters ::= CHOICE {
gostR3410-2012ParamSet OBJECT IDENTIFIER, privateKeyParamSet [0] GostR3410-2001-ParamSetParameters, ... |
}
,
где gostR3410-2012ParamSet - идентификатор параметров алгоритма, который выбран в соответствии с "Идентификаторы объектов (OID) технического комитета по стандартизации" [2]. Рекомендуется использовать значение id-tc26-gost-3410-12-512-paramSetA.
Если структура keyInfo отсутствует, то предполагается значение параметров по умолчанию:
KeyInfo.paramsAndOps.parameters = id-tc26-gost-3410-12-512-paramSetA