- pkcs7Sign
- pkcs7SignEx
- pkcs7Verify
- pkcs7VerifyHW
- pkcs7TrustedVerifyHW
- pkcs7Parse
- pkcs7ParseEx
- createCSR
- createCSREx
- JC_CreateCertificateRequest
- verifyReq
- verifyReqEx
- genCert
- genCertEx
- certVerify
- getCertificateInfo
- getCertificateInfoEx
- getCertificateAttribute
- checkCertSignature
- JC_Compose_CMS
- JC_Decompose_CMS
- JC_KeyParametersFromCert
- JC_CreateCertificateRenewal
- JC_CreateCertificateRenewal2
pkcs7Sign
CK_RV pkcs7Sign(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLength, CK_OBJECT_HANDLE hSignCertificate, CK_BYTE_PTR_PTR pEnvelope,
CK_ULONG_PTR oulEnvelopeSize, CK_OBJECT_HANDLE hPrivateKey, CK_OBJECT_HANDLE_PTR phCertificates, CK_ULONG ulCertificatesCount, CK_FLAGS flags)
Параметры:
- hSession (in) – дескриптор сеанса.
- pData (in) – указатель на байтовый массив типа CK_BYTE, содержащий данные для подписи.
- ulDataLength (in) – длина данных для подписи.
- hSignCertificate (in) – дескриптор сертификата создателя сообщения.
- pEnvelope (out) – указатель на указатель на массив байтов (буфер), в который передается подпись или подписанное сообщение. Память для буфера выделяется самой функцией pkcs7Sign. После окончания работы с ним необходимо освободить его, вызвав функцию freeBuffer().
- pulEnvelopeSize (out) – указатель на переменную, в которую записывается длина буфера, на который указывает envelope.
- hPrivateKey (in) – дескриптор закрытого ключа создателя сообщения. Может принимать значение 0, при котором поиск закрытого ключа будет осуществляться по идентификатору ключевой пары (CKA_ID из сертификата).
- phCertificates (in) – указатель на массив дескрипторов сертификатов, которые следует добавить в сообщение.
- ulCertificatesCount(in) – количество дескрипторов сертификатов в массиве, на который указывает certificates.
- flags (in) – флаги.
Поле flags принимает следующие флаги:
- PKCS7_DETACHED_SIGNATURE– если этот флаг установлен, то исходные данные не сохраняются вместе с подписью (отсоединенная подпись). В обратном случае исходные данные сохраняются вместе с подписью (присоединенная подпись).
- PKCS7_HARDWARE_HASH1– если этот флаг установлен, то хэширование будет осуществляться аппаратно устройством JaCarta-2 ГОСТ. В обратном случае хэширование будет осуществляться программно.
Функция pkcs7Sign используется для подписи объектов данных в формате, определённом стандартом PKCS #7 версии 1.5. Сертификат, используемый при формировании подписи, должен располагаться в памяти устройства.
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
pkcs7SignEx
CK_RV pkcs7SignEx(CK_SESSION_HANDLE session, CK_BYTE_PTR data, CK_ULONG dataLength, CK_BYTE_PTR signCertificate, CK_ULONG signCertificateLength, CK_BYTE_PTR* envelope,
CK_ULONG_PTR envelopeLength, CK_OBJECT_HANDLE privateKey, CK_OBJECT_HANDLE_PTR certificates, CK_ULONG certificatesLength, CK_ULONG flags)
Параметры:
- session (in) – дескриптор сеанса.
- data (in) – указатель на байтовый массив типа CK_BYTE, содержащий данные для подписи.
- dataLength (in) – длина данных для подписи.
- signCertificate (in) – массив байт, содержащий сертификат создателя сообщения в DER-кодировке.
- signCertificateLength(in) – длина сертификата создателя сообщения.
- envelope (out) – указатель на указатель на массив байтов (буфер), в который передается подпись или подписанное сообщение. Память для буфера выделяется самой функцией pkcs7SignEx. После окончания работы с ним необходимо освободить его, вызвав функцию freeBuffer().
- envelopeLength (out) – указатель на переменную, в которую записывается длина буфера, на который указывает envelope.
- privateKey (in) – дескриптор закрытого ключа создателя сообщения.
- certificates (in) – указатель на массив дескрипторов сертификатов, которые следует добавить в сообщение.
- certificatesLength (in) – количество дескрипторов сертификатов в массиве, на который указывает certificates.
- flags (in) – флаги.
Поле flags принимает следующие флаги:
- PKCS7_DETACHED_SIGNATURE– если этот флаг установлен, то исходные данные не сохраняются вместе с подписью (отсоединенная подпись). В обратном случае исходные данные сохраняются вместе с подписью (присоединенная подпись).
- PKCS7_HARDWARE_HASH1– если этот флаг установлен, то хэширование будет осуществляться аппаратно устройством JaCarta-2 ГОСТ. В обратном случае хэширование будет осуществляться программно.
Функция pkcs7SignEx используется для подписи объектов данных в формате, определённом стандартом PKCS #7 версии 1.5 с расширенным набором параметров. В отличие от функции pkcs7Sign, сертификат должен быть указан явно, а параметр privateKey не должен принимать значение 0.
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
pkcs7Verify
CK_RV pkcs7Verify(CK_BYTE_PTR pEnvelope, CK_ULONG ulEnvelopeSize, CK_BYTE_PTR pData, CK_ULONG ulDataSize)
Параметры:
- pEnvelope (in) – указатель на массив типа CK_BYTE, содержащий объект данных (сообщение), подписанный в формате, соответствующем стандарту PKCS #7.
- ulEnvelopeSize (in) – размер объекта данных, на который ссылается envelope.
- pData (in) – указатель на массив типа CK_BYTE, содержащий данные, если таковые отсутствуют в сообщении.
- ulDataSize (in) – размер данных в массиве, на который указывает data.
Примечание: Если данные передаются в сообщении, pData и ulDataSize должны равняться нулю. |
Функция pkcs7Verify используется для проверки ЭП в сообщениях, формат которых соответствует стандарту PKCS #7. Возвращаемое значение определяет результат проверки:
- CKR_OK– подпись действительна,
- CKR_SIGNATURE_INVALID– подпись недействительна.
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
pkcs7VerifyHW
CK_RV pkcs7VerifyHW(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEnvelope, CK_ULONG pEnvelopeSize, CK_BYTE_PTR pData, CK_ULONG pDataSize, CK_FLAGS flags)
Параметры:
- hSession (in) – дескриптор сеанса.
- pEnvelope (in) – указатель на массив типа CK_BYTE, содержащий объект данных (сообщение), подписанный в формате, соответствующем стандарту PKCS #7.
- pEnvelopeSize (in) – размер объекта данных, на который ссылается envelope.
- pData (in) – указатель на массив типа CK_BYTE, содержащий данные, если таковые отсутствуют в сообщении.
- pDataSize (in) – размер данных в массиве, на который указывает pData.
Примечание: Если данные передаются в сообщении, pData и pDataSize должны равняться нулю. |
- flags– флаги. Может принимать значение 0 или PKCS7_HARDWARE_HASH.
Проверка подписи в PKCS#7 сообщении типа signed data. Используется аппаратная реализация проверки подписи.
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
pkcs7TrustedVerifyHW
CK_RV pkcs7TrustedVerifyHW(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEnvelope, CK_ULONG pEnvelopeSize, CK_BYTE_PTR pData, CK_ULONG pDataSize, CK_BYTE_PTR pTrustedSigner,
CK_ULONG pTrustedSignerSize, CK_FLAGS flags)
Параметры:
- hSession (in) – дескриптор сеанса.
- pEnvelope (in) – указатель на массив типа CK_BYTE,содержащий объект данных (сообщение), подписанный в формате, соответствующем стандарту PKCS #7.
- pEnvelopeSize (in) – размер объекта данных, на который ссылается pEnvelope.
- pData (in) – указатель на массив типа CK_BYTE,содержащий данные, если таковые отсутствуют в сообщении.
- pDataSize (in) – размер данных в массиве, на который указывает pData.
Примечание: Если данные передаются в сообщении, pData и pDataSize должны равняться нулю. |
- pTrustedSigner (in) – буфер с доверенным сертификатом в DER-формате.
- pTrustedSignerSize (in) – длина буфера с доверенным сертификатом.
- flags (in) – флаги. Может принимать значение 0 или PKCS7_HARDWARE_HASH.
Проверка подписи в PKCS#7 сообщении типа signed data с дополнительной проверкой на доверие к сертификату подписанта. Используется аппаратная реализация проверки подписи.
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
pkcs7Parse
CK_RV pkcs7Parse(CK_BYTE_PTR pEnvelope, CK_ULONG ulEnvelopeSize, CK_BYTE_PTR* pSignerCertificate, CK_ULONG_PTR pulSignerCertificate, CK_BYTE_PTR* pAttachedData,
CK_ULONG_PTR ulAttachedDataSize)
Параметры:
- pEnvelope (in) – указатель на массив типа CK_BYTE,содержащий объект данных (сообщение), подписанный в формате, соответствующем стандарту PKCS #7.
- ulEnvelopeSize (in) – размер объекта данных, на который ссылается pEnvelope.
- pSignerCertificate (out) – буфер для записи сертификата.
- pulSignerCertificate (out) – размер сертификата.
- pAttachedData (out) – буфер для записи данных.
- ulAttachedDataSize (out) – размер данных.
Извлечение данных и сертификата подписанта из PKCS #7 контейнера.
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
pkcs7ParseEx
CK_RV pkcs7ParseEx(CK_BYTE_PTR pEnvelope, CK_ULONG ulEnvelopeSize, CK_BYTE_PTR* ppSignerCert, CK_ULONG_PTR pulSignerCertLen, CK_BYTE_PTR* ppAttachedData,
CK_ULONG_PTR pulAttachedDataLength, CK_BYTE_PTR* ppSignature, CK_ULONG_PTR pulSignatureLength)
Параметры:
- pEnvelope (in) – указатель на массив типа CK_BYTE,содержащий объект данных (сообщение), подписанный в формате, соответствующем стандарту PKCS #7.
- ulEnvelopeSize (in) – размер объекта данных, на который ссылается pEnvelope.
- ppSignerCert (out) – буфер для записи сертификата.
- pulSignerCertLen (out) – размер сертификата.
- ppAttachedData (out) – буфер для записи данных.
- pulAttachedDataLength (out) – размер данных.
- ppSignature (out) – буфер для записи подписи.
- pulSignatureLength (out) – размер подписи.
Извлечение данных, подписи и сертификата подписанта из PKCS#7 контейнера.
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
createCSR
CK_RV createCSR(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE publicKey, CK_CHAR_PTR* dn, CK_ULONG dnLength, CK_BYTE_PTR* csr, CK_ULONG_PTR csrLength,
CK_OBJECT_HANDLE privateKey, CK_CHAR_PTR* attributes, CK_ULONG attributesLength, CK_CHAR_PTR* extensions, CK_ULONG extensionsLength)
Параметры:
- session (in) – дескриптор сеанса.
- publicKey (in) – дескриптор открытого ключа для создания сертификата.
- dn (in) – указатель на массив типа CK_BYTE,задающий отличительное имя (distinguished name). Должен состоять из пар строк:
- Первая строка должна содержать тип или идентификатор поля (OID), например: CN или 2.5.4.3.
- Вторая строка – значение поля, например: Andrey Borisov в кодировке UTF-8.
- dnLength (in) – количество строк в массиве, на который указывает dn.
- csr(out) – указатель на массив байтов, в который будет записан созданный запрос на сертификат. Память для массива выделяется самой функцией createCSR. После окончания работы с массивом выделенную для него память необходимо освободить, вызвав функцию freeBuffer().
- csrLength (out) – указатель на переменную, в которой сохраняется размер массива, на который указывает csr.
- privatekey (in) – дескриптор закрытого ключа, соответствующего открытому ключу, на который ссылается publicKey. Если privateKey принимает значение 0, то поиск закрытого ключа будет осуществляться по идентификатору ключевой пары (CKA_ID открытого ключа).
- attributes (in) – указатель на массив типа CK_BYTE,задающий дополнительные атрибуты. Должен состоять из пар строк:
- Первая строка должна содержать тип или идентификатор поля (OID).
- Вторая строка – значение поля.
- attributeslength (in) – количество строк в массиве, на который указывает attributes.
- extensions (in) – указатель на массив типа CK_BYTE,задающий расширения. Должен состоять из пар строк:
- Первая строка должна содержать тип или идентификатор поля (OID).
- Вторая строка – значение поля.
- extensionsLength (in) – количество строк в массиве, на который указывает extensions.
Функция формирует запрос на выпуск сертификата в формате PKCS #10.
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
Пример использования
Пример запроса на выпуск сертификата на языке C:
// дескриптор сессииCK_SESSION_HANDLE session = 0; // дескриптор открытого ключаCK_OBJECT_HANDLE publicKey; // distinguished name для запроса на сертификатCK_CHAR_PTR dn[] ={ (CK_CHAR_PTR)"CN", (CK_CHAR_PTR)"Ivan Ivanov", (CK_CHAR_PTR)"C", (CK_CHAR_PTR)"RU"}; // extensions для запроса на сертификатCK_CHAR_PTR exts[] ={ //(CK_CHAR_PTR)"1.2.3.5", //(CK_CHAR_PTR)"DER:01020304", //(CK_CHAR_PTR)"2.5.29.16", //(CK_CHAR_PTR)"ASN1:SEQUENCE:privateKeyUsagePeriod\n[privateKeyUsagePeriod]\nnotAfter=IMPLICIT:1,GENERALIZEDTIME:20150101000000Z", //(CK_CHAR_PTR)"subjectKeyIdentifier", //(CK_CHAR_PTR)"1234567890abcdef", //(CK_CHAR_PTR)"1.2.3.4", //(CK_CHAR_PTR)"ASN1:IA5STRING:This is a string", (CK_CHAR_PTR)"keyUsage", (CK_CHAR_PTR)"digitalSignature,keyEncipherment"}; // запрос на сертификатCK_BYTE_PTR csr = NULL;CK_ULONG csrLength = 0; rv = createCSR(session, publicKey, dn, sizeof(dn)/sizeof(CK_CHAR_PTR), &csr, &csrLength, 0, NULL, 0, exts, sizeof(exts)/sizeof(CK_CHAR_PTR));if (rv != CKR_OK){ PrintError("createCSR", rv); return;} printf("Create CSR: OK\n");createCSREx
CK_RV createCSREx(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE publicKey, CK_CHAR_PTR* dn, CK_ULONG dnLength, CK_BYTE_PTR* csr, CK_ULONG_PTR csrLength,
CK_OBJECT_HANDLE privateKey, CK_CHAR_PTR* attributes, CK_ULONG attributesLength, CK_CHAR_PTR* extensions, CK_ULONG extensionsLength, CK_MECHANISM_PTR signatureMech)
Параметры:
- session (in) – дескриптор сеанса.
- publicKey (in) – дескриптор открытого ключа для создания сертификата.
- dn (in) – указатель на массив типа CK_BYTE,задающий отличительное имя (distinguished name). Должен состоять из пар строк:
- Первая строка должна содержать тип или идентификатор поля (OID), например: CN или 2.5.4.3.
- Вторая строка – значение поля, например: Andrey Borisov в кодировке UTF-8.
- dnLength (in) – количество строк в массиве, на который указывает dn.
- csr (out) – указатель на массив байтов, в который будет записан созданный запрос на сертификат. Память для массива выделяется самой функцией createCSR. После окончания работы с массивом выделенную для него память необходимо освободить, вызвав функцию freeBuffer().
- csrLength (out) – указатель на переменную, в которой сохраняется размер массива, на который указывает csr.
- privatekey (in) – дескриптор закрытого ключа, соответствующего открытому ключу, на который ссылается publicKey. Если privateKey принимает значение 0, то поиск закрытого ключа будет осуществляться по идентификатору ключевой пары (CKA_ID открытого ключа).
- attributes (in) – указатель на массив типа CK_BYTE,задающий дополнительные атрибуты. Должен состоять из пар строк:
- Первая строка должна содержать тип или идентификатор поля (OID).
- Вторая строка – значение поля.
- attributeslength (in) – количество строк в массиве, на который указывает attributes.
- extensions (in) – указатель на массив типа CK_BYTE,задающий расширения. Должен состоять из пар строк:
- Первая строка должна содержать тип или идентификатор поля (OID).
- Вторая строка – значение поля.
- extensionsLength (in) – количество строк в массиве, на который указывает extensions.
- signatureMech (in) – указатель на механизм подписи.
Расширенный вариант функции createCSR(). Формирует запрос на выпуск сертификата.
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
JC_CreateCertificateRequest
CK_RV JC_CreateCertificateRequest(CK_FUNCTION_LIST_PTR pFunctionList, CK_SESSION_HANDLE session, CK_OBJECT_HANDLE publicKey, CK_CHAR_PTR* dn, CK_ULONG dnLength,
CK_BYTE_PTR* csr, CK_ULONG_PTR csrLength, CK_OBJECT_HANDLE privateKey, CK_CHAR_PTR* attributes, CK_ULONG attributesLength, CK_CHAR_PTR* extensions, CK_ULONG extensionsLength,
CK_MECHANISM_PTR signatureMech)
Параметры:
- pFunctionList (in) – функции PKCS#11.
- session (in) – PKCS#11 сеанс.
- publicKey (in) – открытый ключ для создания сертификата.
- dn (in) – distinguished name. В параметр должен передаваться массив строк. В первой строке должен располагаться тип поля в текстовой форме, или OID, например, “CN”. Во второй строке должно располагаться значение поля в UTF8. Последующие поля передаются в следующих строках. Количество строк должно быть четным.
- dnLength (in) – количество строк в массиве строк dn.
- csr (out) – указатель на указатель на буфер, в который будет записан запрос на сертификат. Буфер создается внутри функции. После окончания работы с ним необходимо освободить его, вызвав функцию freeBuffer().
- csrLength (out) – длина буфера, который будет записан запрос на сертификат.
- privateKey (in) – закрытый ключ, парный publicKey (см. параметр выше). Если значение установлено в 0, то поиск закрытого ключа будет осуществляться по значению CKA_ID открытого ключа.
- attributes (in) – дополнительные атрибуты для включения в запрос. Формат аналогичен параметру dn (см. выше).
- attributesLength (in) – количество строк в массиве attributes.
- extensions (in) – расширения для включения в запрос. Формат аналогичен параметру dn (см. выше).
- extensionsLength (in) – количество строк в массиве extensions.
- signatureMech (in) – указатель на механизм подписи.
Расширенное формирование запроса на сертификат при помощи сторонних реализаций PKCS#11.
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
verifyReq
CK_RV verifyReq(CK_BYTE_PTR pRequest, CK_ULONG ulRequestSize)
Параметры:
- pRequest (in) – указатель на массив байтов, содержащий запрос на сертификат.
- ulRequestSize (in) – размер массива, на который указывает csr.
Функция позволяет проверить подпись в запросе на сертификат в формате PKCS #10. Возвращаемое значение определяет результат проверки:
- CKR_OK– подпись действительна,
- CKR_SIGNATURE_INVALID– подпись недействительна.
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
verifyReqEx
CK_RV verifyReqEx(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE publicKey, CK_BYTE_PTR csr, CK_ULONG csrLength, CK_MECHANISM_PTR mech)
Параметры:
- session (in) – дескриптор сеанса.
- publicKey (in) – дескриптор открытого ключа для создания сертификата.
- csr (in) – указатель на массив байтов, содержащий запрос на сертификат.
- csrLength(in) – размер массива, на который указывает csr.
- mech (in) – механизм проверки подписи.
Расширенный вариант функции verifyReq(). Позволяет проверить подпись в запросе на сертификат. Возвращаемое значение определяет результат проверки:
- CKR_OK– подпись действительна,
- CKR_SIGNATURE_INVALID– подпись недействительна.
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
genCert
CK_RV genCert(CK_SESSION_HANDLE session, CK_BYTE_PTR csr, CK_ULONG csrLength, CK_OBJECT_HANDLE privateKey, CK_CHAR_PTR serial, CK_CHAR_PTR* issuerDN,
CK_ULONG issuerDNLength, CK_ULONG days, CK_BYTE_PTR* certificate, CK_ULONG_PTR certificateLength)
Параметры:
- session (in) – дескриптор сеанса.
- csr (in) – указатель на массив байтов, содержащий запрос на сертификат.
- csrLength (in) – размер массива, на который указывает csr.
- privateKey (in) – дескриптор закрытого ключа издателя сертификата.
- serial (in) – указатель на строку, содержащую серийный номер сертификата.
- issuerDN (in) – указатель на массив типа CK_BYTE, задающий отличительное имя (distinguished name). Должен состоять из пар строк:
- Первая строка должна содержать тип или идентификатор поля (OID), например: CN или 2.5.4.3.
- Вторая строка – значение поля, например: Andrey Borisov в кодировке UTF-8.
Если issuerDN принимает значение NULL_PTR, отличительное имя издателя сертификата будет совпадать с отличительным именем субъекта.
- issuerDNLength (in) – количество элементов-строк в массиве, на который указывает issuerDN.
- days (in) – срок действия сертификата в днях.
- сertificate (out) – указатель на указатель на массив байтов (буфер), в который будет записан сертификат. Память для буфера выделяется самой функцией genCert. После окончания работы с ним необходимо освободить его, вызвав функцию freeBuffer().
- сertificateLength (out) – указатель на переменную, которая при выполнении функции genCert примет значение, равное длине сгенерированного сертификата в байтах.
Функция создает сертификат из запроса на сертификат в формате PKCS #10.
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
genCertEx
CK_RV genCertEx(CK_SESSION_HANDLE session, CK_BYTE_PTR csr, CK_ULONG csrLength, CK_OBJECT_HANDLE privateKey, CK_OBJECT_HANDLE publicKey, CK_CHAR_PTR serial,
CK_CHAR_PTR* issuerDN, CK_ULONG issuerDNLength, CK_ULONG days, CK_BYTE_PTR* certificate, CK_ULONG_PTR certificateLength, CK_MECHANISM_PTR mech)
Параметры:
- session (in) – дескриптор сеанса.
- csr (in) – указатель на массив байтов, содержащий запрос на сертификат.
- csrLength (in) – размер массива, на который указывает csr.
- privateKey (in) – дескриптор закрытого ключа издателя сертификата.
- publicKey (in) – открытый ключ издателя сертификата.
- serial (in) – указатель на строку, содержащую серийный номер сертификата.
- issuerDN (in) – указатель на массив типа CK_BYTE,задающий отличительное имя (distinguished name). Должен состоять из пар строк:
- Первая строка должна содержать тип или идентификатор поля (OID), например: CN или 2.5.4.3.
- Вторая строка – значение поля, например: Andrey Borisov в кодировке UTF-8.
Если issuerDN принимает значение NULL_PTR, отличительное имя издателя сертификата будет совпадать с отличительным именем субъекта.
- issuerDNLength (in) – количество элементов-строк в массиве, на который указывает issuerDN.
- days (in) – срок действия сертификата в днях.
- сertificate (out) – указатель на указатель на массив байтов (буфер), в который будет записан сертификат. Память для буфера выделяется самой функцией genCert. После окончания работы с ним необходимо освободить его, вызвав функцию freeBuffer().
- сertificateLength (out) – указатель на переменную, которая при выполнении функции genCert примет значение, равное длине сгенерированного сертификата в байтах.
- mech (in) – механизм подписи.
Расширенный вариант функции genCert(). Позволяет создать сертификат из запроса на сертификат.
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
certVerify
CK_RV certVerify(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE certificateToVerify, CK_OBJECT_HANDLE_PTR trustedCertificates, CK_ULONG trustedCertificatesLength,
CK_OBJECT_HANDLE_PTR certificateChain, CK_ULONG certificateChainLength, CK_BYTE_PTR* crls, CK_ULONG_PTR crlsLengths, CK_ULONG crlsLength)
Параметры:
- session (in) – дескриптор сеанса.
- certificateToVerify (in) – дескриптор сертификата, который необходимо проверить.
- trustedCertificates (in) – указатель на массив, содержащий доверенные сертификаты.
- trustedCertificatesLength (in) – количество сертификатов в массиве, на который указывает trustedCertificates.
- certificateChain (in) – указатель на массив, содержащий дескрипторы промежуточных сертификатов (имеет значение 0, если промежуточные сертификаты отсутствуют).
- certificateChainLength (in) – количество дескрипторов объектов-сертификатов, в массиве, на который указывает certificateChain. Этот аргумент должен иметь значение 0, если certificateChain принимает такое значение.
- crls (in) – указатель на массив указателей на списки отозванных сертификатов.
- crlsLengths (in) – указатель на массив с длиной списка на который указывает crls.
- crlsLength (in) – количество списков отозванных сертификатов в массиве clrs.
Функция используется для проверки подписи сертификатов формата X.509 по всей цепочке сертификации.
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
getCertificateInfo
CK_RV getCertificateInfo(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE certificate, CK_CHAR_PTR* certificateInfo, CK_ULONG* certificateInfoLength)
Параметры:
- session (in) – дескриптор сеанса.
- certificate (in) – дескриптор объекта-сертификата.
- certificateInfo (out) – указатель на массив байтов, в который будет записана информация о сертификате. Память для массива выделяется самой функцией getCertificateInfo. После окончания работы с массивом выделенную для него память необходимо освободить, вызвав функцию freeBuffer().
- certificateInfoLength (out) – размер массива, в который возвращается информация о сертификате.
Функция используется для получения сведений о сертификате, записанном на токен, и возвращает эти данные в текстовом формате.
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
getCertificateInfoEx
CK_RV getCertificateInfoEx(CK_BYTE_PTR certificate, CK_ULONG certificateLength, CK_CHAR_PTR* certificateInfo, CK_ULONG* certificateInfoLength)
Параметры:
- certificate (in) – указатель на массив байтов, содержащий сертификат в DER-кодировке.
- certificateLength (in) – длина массива байтов, на который указывает certificate.
- certificateInfo (out) – указатель на указатель на массив байтов (буфер), в который будет записана информация о сертификате. Память для массива выделяется самой функцией getCertificateInfoEx. После окончания работы с массивом выделенную для него память необходимо освободить, вызвав функцию freeBuffer().
- certificateInfoLength (out) – размер массива, в который возвращается информация о сертификате.
Функция используется для получения сведений о сертификате. В отличие от функции getCertificateInfo сертификат не определяется дескриптором, а задаётся явно в виде массива байт. Результат возвращается в текстовом формате.
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
getCertificateAttribute
CK_RV getCertificateAttribute(CK_BYTE_PTR pX509data, CK_ULONG ulX509dataSize, JC_EX_X509_DATA_TYPE dataType, CK_BYTE_PTR* pOutputdata, CK_ULONG_PTR pulOutputdataSize)
Параметры:
- pX509data (in) – сертификат в формате x509.
- ulX509dataSize (in) – размер сертификата.
- dataType (in) – тип получаемых данных:
- X509_SUBJECT (0x01) – владелец сертификата,
- X509_ISSUER (0x02) – издатель сертификата,
- X509_SERIAL (0x03) – серийный номер сертификата.
- pOutputdata (out) – выходные данные.
- pulOutputdataSize (out) – размер выходных данных.
Получить параметры сертификата.
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
checkCertSignature
CK_RV checkCertSignature(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pCertificate, CK_ULONG ulCertificateSize, CK_BYTE_PTR pTrustedSignerCertificate, CK_ULONG ulTrustedSignerCertificateSize)
Параметры:
- hSession (in) – дескриптор сеанса.
- pCertificate (in) – указатель на сертификат на проверку в DER-формате.
- ulCertificateSize (in) – длина сертификата на проверку.
- pTrustedSignerCertificate (in) – указатель на сертификат подписанта.
- ulTrustedSignerCertificateSize (in) – длина сертификата подписанта.
Проверка подписи в сертификате на соответствие ключу его подписанта. Проверка подписи выполняется аппаратно. Хеширование выполняется аппаратно, если была вызвана функция useHardwareHash(CK_TRUE).
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
JC_Compose_CMS
CK_RV JC_Compose_CMS(JC_CMS_MATERIAL_PTR CMSmaterial, CK_BYTE_PTR_PTR cmsMessage, CK_ULONG_PTR cmsMessageSize)
Параметры:
- CMSmaterial (in) – определение составных частей CMS сообщения.
- cmsMessage (out) – указатель куда будет помещен адрес сформированного CMS сообщения.
- cmsMessageSize (out) – указатель на длину сформированного CMS сообщения.
Формирует CMS сообщение.
Примечание: Функция предназначена только для работы с алгоритмами ГОСТ. |
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
JC_Decompose_CMS
CK_RV JC_Decompose_CMS(CK_BYTE_PTR cms, CK_ULONG cmsSize, JC_CMS_CONTAINER_PTR* ppCMScontainer)
Параметры:
- cms (in) – CMS сообщение.
- cmsSize (in) – длина CMS сообщения.
- ppCMScontainer (out) – указатель на описатель разобранного CMS, его буфер создается внутри функции. После окончания работы с ним необходимо освободить его, вызвав функцию freeBuffer().
Разбирает CMS сообщение.
Примечание: Функция предназначена только для работы с алгоритмами ГОСТ. |
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
JC_KeyParametersFromCert
CK_RV JC_KeyParametersFromCert(CK_BYTE_PTR certificate, CK_ULONG certificateSize, JC_CERTIFICATE_MATERIAL_PTR* certificateMaterial, CK_ULONG_PTR certificateMaterialSize)
Параметры:
- certificate (in) – указатель на DER представление X509 сертификата, поддерживаются только ГОСТовые сертификаты.
- certificateSize (in) – длина представления сертификата.
- certificateMaterial (out) – адрес указателя куда будет записан адрес описателя публичного ключа сертификата.
- certificateMaterialSize (out) – указатель куда будет записана длина описателя публичного ключа сертификата.
Получить публичный ключ и параметры из X509 сертификата.
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
JC_CreateCertificateRenewal
CK_RV JC_CreateCertificateRenewal(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hOldPrivateKey, CK_OBJECT_HANDLE hOldCertificate, CK_OBJECT_HANDLE hNewPrivateKey,
CK_UTF8CHAR_PTR_PTR ppAttributes, CK_ULONG ulAttributesLen, CK_BYTE_PTR_PTR ppCMC, CK_ULONG_PTR pulCMCSize)
Параметры:
- hSession(in) – дескриптор сессии.
- hOldPrivateKey (in) – дескриптор старого закрытого ключа.
- hOldCertificate (in) – дескриптор старого сертификата. Если указано CK_INVALID_HANDLE, то старый сертификат ищется по CKA_ID от старого закрытого ключа.
- hNewPrivateKey (in) – дескриптор нового закрытого ключа.
- ppAttributes (in) – в параметр должен передаваться массив строк.
- В первой строке должен располагаться идентификатор атрибута в текстовой форме: OID или его текстовый аналог из OpenSSL, например, “CN”.
- Во второй строке должно располагаться значение атрибута в UTF8. Значение формируется по правилам asn1parse из OpenSSL.
- Последующие поля передаются в следующих строках.
- Количество строк должно быть четным.
- ulAttributesLen (in) – размер списка атрибутов.
- ppCMC (out) – указатель на буфер для запроса на переиздание. После окончания работы с ним необходимо освободить его, вызвав функцию freeBuffer().
- pulCMCSize (out) – указатель на размер буфера в байтах.
Создает запрос на переиздание сертификата в формате CMC. На токене должен присутствовать старый сертификат и новый открытый ключ.
Примечание: Функция предназначена только для работы с алгоритмами ГОСТ. |
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |
JC_CreateCertificateRenewal2
CK_RV JC_CreateCertificateRenewal2(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hOldPrivateKey, CK_BYTE_PTR pCertificateBody, CK_ULONG ulCertificateBodySize,
CK_OBJECT_HANDLE hNewPrivateKey, CK_UTF8CHAR_PTR_PTR ppAttributes, CK_ULONG ulAttributesLen, CK_BYTE_PTR_PTR ppCMC, CK_ULONG_PTR pulCMCSize)
Параметры:
- hSession (in) – дескриптор сессии.
- hOldPrivateKey (in) – дескриптор старого закрытого ключа.
- pCertificateBody (in) – тело старого сертификата в DER формате. Если указано NULL, то старый сертификат ищется по CKA_ID от старого закрытого ключа.
- ulCertificateBodySize (in) – размер тела старого сертификата в байтах. Если указано 0, то старый сертификат ищется по CKA_ID от старого закрытого ключа.
- hNewPrivateKey (in) – дескриптор нового закрытого ключа.
- ppAttributes (in) – в параметр должен передаваться массив строк.
- В первой строке должен располагаться идентификатор атрибута в текстовой форме: OID или его текстовый аналог из OpenSSL, например, “CN”.
- Во второй строке должно располагаться значение атрибута в UTF8. Значение формируется по правилам asn1parse из OpenSSL.
- Последующие поля передаются в следующих строках.
- Количество строк должно быть четным.
- ulAttributesLen (in) – размер списка атрибутов.
- ppCMC (out) – указатель на буфер для запроса на переиздание. После окончания работы с ним необходимо освободить его, вызвав функцию freeBuffer().
- pulCMCSize (out) – указатель на размер буфера в байтах.
Создает запрос на переиздание сертификата в формате CMC. На токене должен присутствовать новый открытый ключ.
Примечание: Функция предназначена только для работы с алгоритмами ГОСТ. |
Запускается в режимах: |
Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.
Совет: Полный список ошибок см. в приложении. |