Структуры CMS-сообщения
JC_NID_OBJECT
Заголовок раздела «JC_NID_OBJECT»Указатель на структуру JC_NID_OBJECT.
typedef JC_NID_OBJECT CK_PTR JC_NID_OBJECT_PTR;
JC_NID_OBJECT
Описатель объектов: OID алгоритма, OID набора параметров или RDN субъекта.
typedef struct JC_NID_OBJECT { CK_LONG nid; CK_CHAR_PTR shortName; CK_CHAR_PTR longName; CK_CHAR_PTR value; } JC_NID_OBJECT;
- CK_LONG
nid— идентификатор объекта. - CK_CHAR_PTR
shortName— короткое имя объекта. - CK_CHAR_PTR
longName— длинное имя объекта. - CK_CHAR_PTR
value— значение объекта в DER формате.
JC_CMS_RECIPIENT_MATERIAL
Заголовок раздела «JC_CMS_RECIPIENT_MATERIAL»JC_CMS_RECIPIENT_MATERIAL
typedef struct JC_CMS_RECIPIENT_MATERIAL{ CK_LONG recipientInfoType; CK_LONG recipientIdentity; CK_ULONG keyWrapAlgorithm; CK_BYTE_PTR certificate; CK_ULONG certificateLength; CK_BYTE_PTR keyTransport; CK_ULONG keyTransportLength;} JC_CMS_RECIPIENT_MATERIAL;
typedef JC_CMS_RECIPIENT_MATERIAL CK_PTR JC_CMS_RECIPIENT_MATERIAL_PTR;Ключевой материал получателя.
-
CK_LONG
recipientInfoType— способ формирования объекта ключевой информации получателя. Возможные значения:JC_CMS_KTRI_RECIPIENT_INFO(0) – по передаче (KTRI);JC_CMS_KARI_RECIPIENT_INFO(1) – по согласованию (KARI).
-
CK_LONG
recipientIdentity— способ идентификации получателя. Возможные значения:JC_CMS_ISSUER_SERIAL_ID(0) – по CN издателя и серийному номеру сертификата;JC_CMS_SUBJECT_KEY_ID(1) – по идентификатору ключа субъекта.
-
CK_ULONG
keyWrapAlgorithm— алгоритм шифрования ключа. Возможные значения:JC_CMS_GOST28147_89_NONE_KEYWRAP(0) — соответствует id-Gost28147-89-None-KeyWrap (1.2.643.2.2.13.0);JC_CMS_GOST28147_89_CRYPTOPRO_KEYWRAP(1) — соответствует id-Gost28147-89-CryptoPro-KeyWrap (1.2.643.2.2.13.1);JC_CMS_GOSTR3412_2015_MAGMA_WRAP_KEXP15(2) — соответствует id-tc26-wrap-gostr3412-2015-magma-kexp15 (1.2.643.7.1.1.7.1.1);JC_CMS_GOSTR3412_2015_KUZNYECHIK_WRAP_KEXP15(3) — соответствует id-tc26-wrap-gostr3412-2015-kuznyechik (1.2.643.7.1.1.7.1.2).
-
CK_BYTE_PTR
certificate— сертификат получателя в DER формате. -
CK_ULONG
certificateLength— длина сертификата. -
CK_BYTE_PTR
keyTransport— транспортное представление ключа шифрования содержимого CEK. Получено при помощи функцииC_WrapKey(). -
CK_ULONG
keyTransportLength— длина транспортного представления ключа шифрования.
JC_CMS_MATERIAL
Заголовок раздела «JC_CMS_MATERIAL»Материал формирования CMS контейнера.
typedef struct JC_CMS_MATERIAL{ CK_ULONG recipientCount; JC_CMS_RECIPIENT_MATERIAL_PTR recipients;
CK_BYTE_PTR senderCertificate; CK_ULONG senderCertificateLength;
JC_NID_OBJECT contentEncryptionAlgorithm;
JC_NID_OBJECT contentEncryptionParamSet;
CK_ULONG ivLength; CK_BYTE_PTR iv;
CK_BYTE_PTR cipherText; CK_ULONG cipherTextLength;
CK_BYTE_PTR contentMac; CK_ULONG contentMacLength;} JC_CMS_MATERIAL;
typedef JC_CMS_MATERIAL CK_PTR JC_CMS_MATERIAL_PTR;- CK_ULONG
recipientCount— число получателей в CMS контейнере. - JC_CMS_RECIPIENT_MATERIAL_PTR
recipients— ключевой материал получателей. - CK_BYTE_PTR
senderCertificate— сертификат отправителя. Используется, если есть получатель «по согласованию». - CK_ULONG
senderCertificateLength— длина сертификата отправителя. Не используется, если все получатели «по передаче». - JC_NID_OBJECT
contentEncryptionAlgorithm— алгоритм шифрования содержимого ГОСТ 28147 в режиме CFB, Магма или Кузнечик в режиме CTR-ACPKM. - JC_NID_OBJECT
contentEncryptionParamSet— набор параметров шифрования содержимого по алгоритму ГОСТ 28147–89. - CK_ULONG
ivLength— длина инициализационного вектора. - CK_BYTE_PTR
iv— инициализационный вектор для шифрования содержимого. - CK_BYTE_PTR
cipherText— зашифрованное содержимое. - CK_ULONG
cipherTextLength— длина зашифрованного содержимого. - CK_BYTE_PTR
contentMac— указатель на зашифрованное значение MAC открытого текста. Используется при шифровании алгоритмами «Магма», «Кузнечик» в режиме гаммирования CTR с механизмом преобразования ключа ACPKM с вычислением имитовставки (id-tc26-cipher-gostr3412-2015-magma-ctracpkm-omac, id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm-omac). - CK_ULONG
contentMacLength— размер зашифрованного значения MAC открытого текста.
Используется в:
JC_CERTIFICATE_TRAITS
Заголовок раздела «JC_CERTIFICATE_TRAITS»Указатель на структуру JC_CERTIFICATE_TRAITS.
typedef JC_CERTIFICATE_TRAITS CK_PTR JC_CERTIFICATE_TRAITS_PTR;JC_CERTIFICATE_TRAITS Признаки сертификата получателя.
typedef struct JC_CERTIFICATE_TRAITS { CK_BYTE_PTR keyID; CK_ULONG keyIDlength; CK_CHAR_PTR serialNumber; JC_NID_OBJECT_PTR issuerRecords; CK_ULONG issuerRecordCount;} JC_CERTIFICATE_TRAITS;- CK_BYTE_PTR
keyID— идентификатор ключа субъекта. - CK_ULONG
keyIDlength— длина идентификатора ключа субъекта. - CK_CHAR_PTR
serialNumber— серийный номер сертификата (null terminated). - JC_NID_OBJECT_PTR
issuerRecords— список RDN значений субъекта. - CK_ULONG
issuerRecordCount— количество RDN значений субъекта.
JC_CERTIFICATE_MATERIAL
Заголовок раздела «JC_CERTIFICATE_MATERIAL»Указатель на структуру JC_CERTIFICATE_MATERIAL.
typedef JC_CERTIFICATE_MATERIAL CK_PTR JC_CERTIFICATE_MATERIAL_PTR;JC_CERTIFICATE_MATERIAL Материал разбора сертификата.
typedef struct JC_CERTIFICATE_MATERIAL { CK_LONG publicKeyAlgorithmNid; CK_BYTE_PTR ellipticCurveParams; CK_ULONG ellipticCurveParamsLength; CK_BYTE_PTR hashParams; CK_ULONG hashParamsLength; CK_BYTE_PTR publicKey; CK_ULONG publicKeyLength;} JC_CERTIFICATE_MATERIAL;- CK_LONG
publicKeyAlgorithmNid— NID основного алгоритма. - CK_BYTE_PTR
ellipticCurveParams— составляющая параметра публичного ключа, соответствующая атрибутуCKA_GOSTR3410_PARAMS. - CK_ULONG
ellipticCurveParamsLength— длинаJC_CERTIFICATE_MATERIAL.ellipticCurveParams. - CK_BYTE_PTR
hashParams— составляющая параметра публичного ключа, соответствующая атрибутуCKA_GOSTR3411_PARAMS. - CK_ULONG
hashParamsLength— длинаJC_CERTIFICATE_MATERIAL.hashParams. - CK_BYTE_PTR
publicKey— публичный ключ. - CK_ULONG
publicKeyLength— длина публичного ключа. Используется в: JC_KeyParametersFromCert().
JC_CMS_RECIPIENT
Заголовок раздела «JC_CMS_RECIPIENT»Указатель на структуру JC_CMS_RECIPIENT.
typedef JC_CMS_RECIPIENT CK_PTR JC_CMS_RECIPIENT_PTR;
JC_CMS_RECIPIENT
Получатель CMS сообщения.
typedef struct JC_CMS_RECIPIENT { CK_LONG recipientInfoType; JC_CERTIFICATE_TRAITS recipientCertTraits; JC_NID_OBJECT keyWrapAlgorithm; CK_BYTE_PTR secretKeyOID; CK_ULONG secretKeyOIDlength; CK_BYTE_PTR keyTransport; CK_ULONG keyTransportLength; JC_CERTIFICATE_MATERIAL originator;} JC_CMS_RECIPIENT;- CK_LONG
recipientInfoType— способ формирования объекта ключевой информации получателя. Возможные значения:JC_CMS_KTRI_RECIPIENT_INFO(0) – по передаче (KTRI);JC_CMS_KARI_RECIPIENT_INFO(1) – по согласованию (KARI).
- JC_CERTIFICATE_TRAITS
recipientCertTraits— признаки сертификата получателя. - JC_NID_OBJECT
keyWrapAlgorithm— алгоритм шифрования ключа. - CK_BYTE_PTR
secretKeyOID— OID алгоритма шифрования содержимого в DER представлении. - CK_BYTE_PTR
secretKeyOIDlength— длина OID алгоритма шифрования. - CK_BYTE_PTR
keyTransport— транспортное представление ключа шифрования содержимого. - CK_BYTE_PTR
keyTransportLength— длина транспортного представления ключа шифрования содержимого. - JC_CERTIFICATE_MATERIAL
originator— описатель публичного ключа отправителя CMS. Присутствует только для формата «по согласованию» (KARI), т.е.JC_CMS_RECIPIENT.recipientInfoTypeравенJC_CMS_KARI_RECIPIENT_INFO.
JC_CMS_CONTAINER
Заголовок раздела «JC_CMS_CONTAINER»Разобранное CMS сообщение.
typedef struct JC_CMS_CONTAINER{ CK_ULONG recipientCount; JC_CMS_RECIPIENT* recipients; JC_NID_OBJECT contentEncryptionAlgorithm; JC_NID_OBJECT encryptionParamSet; CK_BYTE_PTR iv; CK_ULONG ivLength; CK_BYTE_PTR cipherText; CK_ULONG cipherTextLength; CK_BYTE_PTR contentMac; CK_ULONG contentMacLength;} JC_CMS_CONTAINER;
typedef JC_CMS_CONTAINER CK_PTR JC_CMS_CONTAINER_PTR;- CK_ULONG
recipientCount— число получателей CMS сообщения. - JC_CMS_RECIPIENT_PTR
recipients— получатели CMS сообщения. - JC_NID_OBJECT
contentEncryptionAlgorithm— описатель OID алгоритма шифрования содержимого. - JC_NID_OBJECT
encryptionParamSet— описатель OID набора параметров этого алгоритма. - CK_BYTE_PTR
iv— инициализационный вектор зашифрованного содержимого. - CK_ULONG
ivLength— длина инициализационного вектора. - CK_BYTE_PTR
cipherText— зашифрованное содержимое. - CK_ULONG
cipherTextLength— длина зашифрованного содержимого. - CK_BYTE_PTR
contentMac— указатель на зашифрованное значение MAC открытого текста. Используется при шифровании алгоритмами «Магма», «Кузнечик» в режиме гаммирования CTR с механизмом преобразования ключа ACPKM с вычислением имитовставки (id-tc26-cipher-gostr3412-2015-magma-ctracpkm-omac, id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm-omac). - CK_ULONG
contentMacLength— размер зашифрованного значения MAC. Используется в: JC_Decompose_CMS()

