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
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)

Примечание: Используется только для получателя “по согласованию” (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

Материал формирования 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.

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.

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.

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

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;

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

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

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