CMS сообщения

JC_NID_OBJECT

JC_NID_OBJECT_PTR

Указатель на структуру 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_PTR

Указатель на структуру JC_CMS_RECIPIENT_MATERIAL.

typedef JC_CMS_RECIPIENT_MATERIAL CK_PTR JC_CMS_RECIPIENT_MATERIAL_PTR;
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;
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).

Примечание

Используется только для получателя “по согласованию” (KARI), т.е. JC_CMS_RECIPIENT_MATERIAL.recipientInfoType равен JC_CMS_KARI_RECIPIENT_INFO.

CK_BYTE_PTR certificate

Сертификат получателя в DER формате.

CK_ULONG certificateLength

Длина сертификата.

CK_BYTE_PTR keyTransport

Транспортное представление ключа шифрования содержимого CEK. Получено при помощи функции C_WrapKey().

CK_ULONG keyTransportLength

Длина транспортного представления ключа шифрования.

JC_CMS_MATERIAL

Используется в:
JC_CMS_MATERIAL_PTR

Указатель на структуру JC_CMS_MATERIAL.

typedef JC_CMS_MATERIAL CK_PTR JC_CMS_MATERIAL_PTR;
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                  contentEncryptionParamSet;
  CK_ULONG                       ivLength;
  CK_BYTE_PTR                    iv;
  CK_BYTE_PTR                    cipherText;
  CK_ULONG                       cipherTextLength;
} JC_CMS_MATERIAL;
CK_ULONG recipientCount

Число получателей в CMS контейнере.

JC_CMS_RECIPIENT_MATERIAL_PTR recipients

Ключевой материал получателей.

CK_BYTE_PTR senderCertificate

Сертификат отправителя.

Примечание

Используется если есть получатель “по согласованию”.

CK_ULONG senderCertificateLength

Длина сертификата отправителя.

Примечание

Не используется если все получатели “по передаче”.

JC_NID_OBJECT contentEncryptionParamSet

Набор параметров шифрования содержимого по алгоритму ГОСТ 28147–89.

CK_ULONG ivLength

Длина инициализационного вектора.

CK_BYTE_PTR iv

Инициализационный вектор для шифрования содержимого.

CK_BYTE_PTR cipherText

Зашифрованное содержимое.

CK_ULONG cipherTextLength

Длина зашифрованного содержимого.

JC_CERTIFICATE_TRAITS

JC_CERTIFICATE_TRAITS_PTR

Указатель на структуру 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_PTR

Указатель на структуру 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_CMS_RECIPIENT

JC_CMS_RECIPIENT_PTR

Указатель на структуру 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_PTR

Указатель на структуру JC_CMS_CONTAINER.

typedef JC_CMS_CONTAINER CK_PTR JC_CMS_CONTAINER_PTR;
JC_CMS_CONTAINER

Разобранное CMS сообщение.

typedef struct JC_CMS_CONTAINER {
  CK_ULONG               recipientCount;
  JC_CMS_RECIPIENT_PTR   recipients;
  JC_NID_OBJECT          contentEncryptionAlgorithm;
  JC_NID_OBJECT          encryptionParamSet;
  CK_BYTE_PTR            iv;
  CK_ULONG               ivLength;
  CK_BYTE_PTR            cipherText;
  CK_ULONG               cipherTextLength;
} JC_CMS_CONTAINER;
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

Длина зашифрованного содержимого.