В 6.4.1 [1] определены открытые ключи:
PublicKeyType ::= CHOICE {
publicRSAKey PublicKeyObject {PublicRSAKeyAttributes}, publicECKey [0] PublicKeyObject {PublicECKeyAttributes}, publicDHKey [1] PublicKeyObject {PublicDHKeyAttributes}, publicDSAKey [2] PublicKeyObject {PublicDSAKeyAttributes}, publicKEAKey [3] PublicKeyObject {PublicKEAKeyAttributes}, … -- For future extensions |
}
PublicKeyObject {KeyAttributes} ::= PKCS15Object {
CommonKeyAttributes, CommonPublicKeyAttributes, KeyAttributes}
Для хранения открытого ключа, выработанного по алгоритму ГОСТ Р 34.10, в структуру PublicKeyType введен следующий тип:
publicGostR3410-2012Key [27] PublicKeyObject {
PublicGostR3410-2012KeyAttributes} |
PublicGostR3410-2012KeyAttributes ::= SEQUENCE {
value ObjectValue {GostR3410-2012PublicKeyChoice}, keyInfo KeyInfo {GostPrivateKeyParameters, PublicKeyOperations} | |||||
OPTIONAL, | |||||
... -- For future extensions |
}
GostR3410-2012PublicKeyChoice ::= CHOICE {
raw GostR3410-2012Point, spki SubjectPublicKeyInfo, ... |
}
При использовании SubjectPublicKeyInfo открытый ключ и его параметры должны быть представлены в соответствии с 4.3 [3]. Поле SubjectPublicKeyInfo.algorithm.parameters не должно быть NULL.
При использовании GostR3410-2012Point открытый ключ должен иметь представление, описанное в Р 50.1.112-2016.
GostR3410-2012Point ::= GostR3410-2012-PublicKey.
Если структура keyInfo отсутствует, то предполагается значение параметров по умолчанию:
KeyInfo.paramsAndOps.parameters = id-tc26-gost-3410-12-512-paramSetA