Нестандартные функции PKI-расширения
pkcs7Sign
Заголовок раздела «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
Заголовок раздела «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
Заголовок раздела «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
Заголовок раздела «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
Заголовок раздела «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
Заголовок раздела «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
Заголовок раздела «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
Заголовок раздела «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
Заголовок раздела «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
Заголовок раздела «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
Заголовок раздела «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
Заголовок раздела «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
Заголовок раздела «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
Заголовок раздела «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
Заголовок раздела «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
Заголовок раздела «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
Заголовок раздела «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
Заголовок раздела «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) – серийный номер сертификата.
- pOutputdat* (out) – выходные данные.
- pulOutputdataSize (out) – размер выходных данных. Получить параметры сертификата. Запускается в режимах:
- Администратор;
- Пользователь;
- Гость. Результат: Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11. Совет: Полный список ошибок см. в приложении.
checkCertSignature
Заголовок раздела «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
Заголовок раздела «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
Заголовок раздела «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
Заголовок раздела «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
Заголовок раздела «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
Заголовок раздела «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. Совет: Полный список ошибок см. в приложении.

