pkcs7Sign¶pkcs7Sign(CK_SESSION_HANDLE session, CK_BYTE_PTR data, CK_ULONG dataLength, CK_OBJECT_HANDLE signCertificate, CK_BYTE_PTR* envelope, CK_ULONG_PTR envelopeLength, CK_OBJECT_HANDLE privateKey, CK_OBJECT_HANDLE_PTR certificates, CK_ULONG certificatesLength, CK_ULONG flags)¶| Параметры: |
|
|---|
Поле 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)¶| Параметры: |
|
|---|
Поле flags принимает следующие значения:
PKCS7_DETACHED_SIGNATURE – если этот флаг установлен, то исходные данные не сохраняются вместе с подписью
(отсоединенная подпись). В обратном случае исходные данные сохраняются вместе с подписью (присоединенная подпись);PKCS7_HARDWARE_HASH1 – если этот флаг установлен, то хэширование будет осуществляться аппаратно устройством
eToken ГОСТ или JaCarta ГОСТ. В обратном случае хэширование будет осуществляться программно.Функция pkcs7SignEx используется для подписи объектов данных в формате, определённом стандартом PKCS #7 версии 1.5 с расширенным набором параметров. В отличие от функции pkcs7Sign, сертификат должен быть указан явно, а параметр privateKey не должен
принимать значение 0.
Запускается в режимах
| Результат: | Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11. Совет Полный список ошибок см. в приложении. |
|---|
pkcs7Verify¶pkcs7Verify(CK_BYTE_PTR envelope, CK_ULONG enlevopeLength, CK_BYTE_PTR data, CK_ULONG dataLength)¶| Параметры: |
|
|---|
Функция pkcs7Verify используется для проверки ЭП в сообщениях, формат которых
соответствует стандарту PKCS #7. Возвращаемое значение определяет результат проверки:
CKR_OK – подпись действительна;CKR_SIGNATURE_INVALID – подпись недействительна.Запускается в режимах
| Результат: | Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11. Совет Полный список ошибок см. в приложении. |
|---|
pkcs7VerifyHW¶pkcs7VerifyHW(CK_SESSION_HANDLE session, CK_BYTE_PTR envelope, CK_ULONG envelopeLength, CK_BYTE_PTR data, CK_ULONG dataLength, CK_ULONG flags)¶| Параметры: |
|
|---|
Проверка подписи в PKCS#7 сообщении типа signed data. Используется аппаратная реализация проверки подписи.
Запускается в режимах
| Результат: | Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11. Совет Полный список ошибок см. в приложении. |
|---|
pkcs7TrustedVerifyHW¶pkcs7TrustedVerifyHW(CK_SESSION_HANDLE session, CK_BYTE_PTR envelope, CK_ULONG envelopeLength, CK_BYTE_PTR data, CK_ULONG dataLength, CK_BYTE_PTR trustedSigner, CK_ULONG trustedSignerLen, CK_ULONG flags)¶| Параметры: |
|
|---|
Проверка подписи в PKCS#7 сообщении типа signed data с дополнительной проверкой на доверие к сертификату
подписанта. Используется аппаратная реализация проверки подписи.
Запускается в режимах
| Результат: | Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11. Совет Полный список ошибок см. в приложении. |
|---|
pkcs7Parse¶pkcs7Parse(CK_BYTE_PTR envelope, CK_ULONG envelopeLength, CK_BYTE_PTR* signerCert, CK_ULONG_PTR signerCertLen, CK_BYTE_PTR* attachedData, CK_ULONG_PTR dataLength)¶| Параметры: |
|
|---|
Извлечение данных и сертификата подписанта из PKCS #7 контейнера.
Запускается в режимах
| Результат: | Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11. Совет Полный список ошибок см. в приложении. |
|---|
pkcs7ParseEx¶pkcs7ParseEx(CK_BYTE_PTR envelope, CK_ULONG envelopeLength, CK_BYTE_PTR* signerCert, CK_ULONG_PTR signerCertLen, CK_BYTE_PTR* attachedData, CK_ULONG_PTR dataLength, CK_BYTE_PTR* signature, CK_ULONG_PTR signatureLength)¶| Параметры: |
|
|---|
Извлечение данных, подписи и сертификата подписанта из 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)¶| Параметры: |
|
|---|
Функция формирует запрос на выпуск сертификата в формате 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)¶| Параметры: |
|
|---|
Расширенный вариант функции createCSR(). Формирует запрос на выпуск сертификата.
Запускается в режимах
| Результат: | Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11. Совет Полный список ошибок см. в приложении. |
|---|
verifyReq¶verifyReq(CK_BYTE_PTR csr, CK_ULONG csrLength)¶| Параметры: |
|
|---|
Функция позволяет проверить подпись в запросе на сертификат в формате 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)¶| Параметры: |
|
|---|
Расширенный вариант функции 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)¶| Параметры: |
|
|---|
Функция создает сертификат из запроса на сертификат в формате PKCS #10.
Запускается в режимах
| Результат: | Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11. Совет Полный список ошибок см. в приложении. |
|---|
genCertEx¶genCertEx(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, CK_MECHANISM_PTR mech)¶| Параметры: |
|
|---|
Расширенный вариант функции 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)¶| Параметры: |
|
|---|
Функция используется для проверки подписи сертификатов формата X.509 по всей цепочке сертификации.
Запускается в режимах
| Результат: | Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11. Совет Полный список ошибок см. в приложении. |
|---|
getCertificateInfo¶getCertificateInfo(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE certificate, CK_CHAR_PTR* certificateInfo, CK_ULONG* certificateInfoLength)¶| Параметры: |
|
|---|
Функция используется для получения сведений о сертификате, записанном на токен, и возвращает эти данные в текстовом формате.
Запускается в режимах
| Результат: | Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11. Совет Полный список ошибок см. в приложении. |
|---|
getCertificateInfoEx¶getCertificateInfoEx(CK_BYTE_PTR certificate, CK_ULONG certificateLength, CK_CHAR_PTR* certificateInfo, CK_ULONG* certificateInfoLength)¶| Параметры: |
|
|---|
Функция используется для получения сведений о сертификате. В отличие от
функции getCertificateInfo сертификат не определяется дескриптором, а задаётся явно в виде массива байт. Результат возвращается в текстовом формате.
Запускается в режимах
| Результат: | Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11. Совет Полный список ошибок см. в приложении. |
|---|
getCertificateAttribute¶getCertificateAttribute(CK_BYTE_PTR x509data, CK_ULONG dataLength, CK_BYTE dataId, CK_BYTE_PTR* outputdata, CK_ULONG_PTR outputdatalength)¶| Параметры: |
|
|---|
Получить параметры сертификата.
Запускается в режимах
| Результат: | Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11. Совет Полный список ошибок см. в приложении. |
|---|
checkCertSignature¶checkCertSignature(CK_SESSION_HANDLE session, CK_BYTE_PTR certToCheck, CK_ULONG certToCheckLength, CK_BYTE_PTR trustedSignerCert, CK_ULONG trustedSignerCertLength)¶| Параметры: |
|
|---|
Проверка подписи в сертификате на соответствие ключу его подписанта. Проверка подписи выполняется аппаратно.
Хеширование выполняется аппаратно, если была вызвана функция useHardwareHash(CK_TRUE).
Запускается в режимах
| Результат: | Функция возвращает стандартные ошибки, предусмотренные спецификацией PKCS #11. Совет Полный список ошибок см. в приложении. |
|---|