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. Совет Полный список ошибок см. в приложении. |
---|