Функции PKI-расширения

pkcs7Sign

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 – если этот флаг установлен, то хэширование будет осуществляться аппаратно устройством eToken ГОСТ или JaCarta ГОСТ. В обратном случае хэширование будет осуществляться программно.

Функция pkcs7Sign используется для подписи объектов данных в формате, определённом стандартом PKCS #7 версии 1.5. Сертификат, используемый при формировании подписи, должен располагаться в памяти устройства.

Запускается в режимах

Результат:Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.

Совет

Полный список ошибок см. в приложении.

pkcs7SignEx

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 – если этот флаг установлен, то хэширование будет осуществляться аппаратно устройством eToken ГОСТ или JaCarta ГОСТ. В обратном случае хэширование будет осуществляться программно.

Функция pkcs7SignEx используется для подписи объектов данных в формате, определённом стандартом PKCS #7 версии 1.5 с расширенным набором параметров. В отличие от функции pkcs7Sign, сертификат должен быть указан явно, а параметр privateKey не должен принимать значение 0.

Запускается в режимах

Результат:Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.

Совет

Полный список ошибок см. в приложении.

pkcs7Verify

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_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_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_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_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_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.

Совет

Полный список ошибок см. в приложении.

Пример использования

Пример запроса на выпуск сетификата на языке С:

// дескриптор сессии
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);
  goto end;
}

printf("Create CSR: OK\n");

Пример запроса на выпуск сетификата на языке Java:

// дескриптор сессии
LongRef session = new LongRef();
// дескриптор открытого ключа
LongRef pubKeyHandle = new LongRef();
// distinguished name для запроса на сертификат
byte[][] dn = {
  (CK_CHAR_PTR)"CN",
  (CK_CHAR_PTR)"Ivan Ivanov",
  (CK_CHAR_PTR)"C",
  (CK_CHAR_PTR)"RU"
};
// extensions для запроса на сертификат
byte[][] 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 = new CK_BYTE_PTR();

// генерация запроса на сертификат
rv = C.EXTENSIONS.createCSR(session.value, pubKeyHandle.value, dn, dn.length, csr, 0, null, 0, exts, exts.length);
if (rv != CKR.OK)
{
   throw new CKRException("createCSR", rv);
}

createCSREx

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_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_BYTE_PTR pRequest, CK_ULONG ulRequestSize)
Параметры:
  • pRequest (in) – указатель на массив байтов, содержащий запрос на сертификат.
  • ulRequestSize (in) – размер массива, на который указывает csr.

Функция позволяет проверить подпись в запросе на сертификат в формате PKCS #10. Возвращаемое значение определяет результат проверки:

  • CKR_OK – подпись действительна,
  • CKR_SIGNATURE_INVALID – подпись недействительна.

Запускается в режимах

Результат:Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11.

Совет

Полный список ошибок см. в приложении.

verifyReqEx

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

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.

Совет

Полный список ошибок см. в приложении.

Оглавление