Extensions

public class Extensions

Содержит функции-расширения стандартной библиотеки PKCS#11

Поля

COMPRESSED

public static final long COMPRESSED

Дополнительный атрибут для PKI - использовать сжатие данных для значения атрибута CKA_VALUE - CK_BBOOL, по умолчанию CKA_FALSE

PKCS7_DETACHED_SIGNATURE

public static final long PKCS7_DETACHED_SIGNATURE

если этот флаг установлен, то исходные данные не сохраняются вместе с подписью (отсоединенная подпись). Иначе исходные данные сохраняются вместе с подписью (присоединенная подпись).

PKCS7_HARDWARE_HASH

public static final long PKCS7_HARDWARE_HASH

если этот флаг установлен, то хэширование будет осуществляться аппаратно устройством eToken ГОСТ или JaCarta ГОСТ. Иначе хэширование будет осуществляться программно.

Методы

DecryptModel

public static String DecryptModel(byte[] data)

Преобразовать код модели в маркетинговое название

Параметры:
  • data – данные
Результат:

строка описания модели

JC_CT1_DoTests

public static long JC_CT1_DoTests(long slotId)

Выполнить внутренние тесты в апплете Криптотокен. Требует аутентификации пользователем.

Параметры:
  • slotId – идентификатор слота
Результат:

CKR код завершения

JC_CT1_InitPrng

public static long JC_CT1_InitPrng(long slotId)

Инициализировать генератор псевдослучайных чисел в апплете Криптотокен. Требует аутентификации пользователем.

Параметры:
  • slotId – идентификатор слота
Результат:

CKR код завершения

JC_CT1_ReadPinCounters

public static long JC_CT1_ReadPinCounters(long slotId, JC_CT1_PIN_COUNTERS pPinCounters)

Получить счетчики ПИН-кодов для апплета Криптотокен

Параметры:
  • slotId – идентификатор слота
  • pPinCounters – информация о счетчиках ПИН-кодов
Результат:

CKR код завершения

JC_CT1_SetAttributeValue

public static long JC_CT1_SetAttributeValue(long session, long object, CKA[] template, long count)

Установить значение атрибута защищенного объекта. Требует аутентификации пользователем.

Параметры:
  • session – дескриптор сеанса
  • object – дескриптор объекта
  • template – набор атрибутов со значениями
  • count – количество атрибутов
Результат:

CKR код завершения

JC_CreateCertificateRenewal

public static long JC_CreateCertificateRenewal(long session, long oldPrivateKey, long oldCertificate, long newPrivateKey, String[] attributes, CK_BYTE_PTR cmc)

Создает запрос на переиздание сертификата в формате CMC. На токене должен присутствовать старый сертификат и новый открытый ключ. Функция предназначена только для работы с алгоритмами ГОСТ.

Параметры:
  • session – дескриптор сеанса
  • oldPrivateKey – дескриптор старого закрытого ключа
  • oldCertificate – дескриптор старого сертификата. Если указано C.INVALID_HANDLE, то старый сертификат ищется по CKA.ID от старого закрытого ключа
  • newPrivateKey – дескриптор нового закрытого ключа
  • attributes – в параметр должен передаваться массив строк. В первой строке должен располагаться идентификатор атрибута в текстовой форме: OID или его текстовый аналог из OpenSSL, например, “CN”. Во второй строке должно располагаться значение атрибута в UTF8. Значение формируется по правилам asn1parse из OpenSSL. Последующие поля передаются в следующих строках. Количество строк должно быть четным.
  • cmc – возвращаемый запроса на переиздание
Результат:

CKR код завершения

JC_CreateCertificateRenewal2

public static long JC_CreateCertificateRenewal2(long session, long oldPrivateKey, byte[] certificateBody, long newPrivateKey, String[] attributes, CK_BYTE_PTR cmc)

Создает запрос на переиздание сертификата в формате CMC. На токене должен присутствовать новый открытый ключ. Функция предназначена только для работы с алгоритмами ГОСТ.

Параметры:
  • session – дескриптор сеанса
  • oldPrivateKey – дескриптор старого закрытого ключа
  • certificateBody – тело старого сертификата в DER формате. Если указано null, то старый сертификат ищется по CKA.ID от старого закрытого ключа
  • newPrivateKey – дескриптор нового закрытого ключа
  • attributes – в параметр должен передаваться массив строк. В первой строке должен располагаться идентификатор атрибута в текстовой форме: OID или его текстовый аналог из OpenSSL, например, “CN”. Во второй строке должно располагаться значение атрибута в UTF8. Значение формируется по правилам asn1parse из OpenSSL. Последующие поля передаются в следующих строках. Количество строк должно быть четным.
  • cmc – указатель на буфер для запроса на переиздание
Результат:

CKR код завершения

JC_GetISD

public static long JC_GetISD(long slotId, JC_ISD_DATA pISD)

Получить информацию о ридере

Параметры:
  • slotId – идентификатор слота
  • pISD – информация о ридере
Результат:

CKR код завершения

JC_GetVersionInfo

public static long JC_GetVersionInfo(JC_VERSION_INFO pVersionInfo)

Получить полный номер версии библиотеки

Параметры:
  • pVersionInfo – информация о полном номере версии библиотеки
Результат:

CKR код завершения

JC_KT2_CalcCheckSum

public static long JC_KT2_CalcCheckSum(long slotId, CK_BYTE_PTR pCheckSum)

Рассчитать контрольную сумму Криптотокен 2 ЭП.

Параметры:
  • slotId – идентификатор слота
  • pCheckSum – буфер для контрольной суммы
Результат:

CKR код завершения

JC_KT2_ChangeSignaturePIN

public static long JC_KT2_ChangeSignaturePIN(long slotId, String oldPin, String newPin)

Установить ПИН-код подписи для Криптотокен 2 ЭП. Требуется аутентификация пользователем.

Параметры:
  • slotId – идентификатор слота
  • oldPin – старый ПИН-код подписи
  • oldPin – новый ПИН-код подписи
Результат:

CKR код завершения

JC_KT2_CreateUnlockChallenge

public static long JC_KT2_CreateUnlockChallenge(long slotId, CK_BYTE_PTR pChallenge)

Создать запрос для разблокировки

Параметры:
  • slotId – идентификатор слота
  • pChallenge – буфер для данных запроса разблокировки
Результат:

CKR код завершения

JC_KT2_InitToken

public static long JC_KT2_InitToken(long slotId, String pin, String label)

Инициализация токена после АРМ администратора безопасности JaCarta. Все сессии д.б. закрыты перед вызовом этой функции

Параметры:
  • slotId – идентификатор слота
  • pin – ПИН-код пользователя
  • label – метка - строка выровненная пробелам справа до размера 32х байт
Результат:

CKR код завершения

JC_KT2_ReadExtInfo

public static long JC_KT2_ReadExtInfo(long slotId, JC_KT2_EXTENDED_INFO pExtInfo)

Получить дополнительную информацию о Криптотокен 2 ЭП.

Параметры:
  • slotId – идентификатор слота
  • pExtInfo – дополнительная информацию о Криптотокен 2 ЭП
Результат:

CKR код завершения

JC_KT2_SetSignaturePIN

public static long JC_KT2_SetSignaturePIN(long slotId, String pin)

Установить ПИН-код подписи для Криптотокен 2 ЭП. Требуется аутентификация пользователем

Параметры:
  • slotId – идентификатор слота
  • pin – ПИН-код подписи
Результат:

CKR код завершения

JC_KT2_UnlockWithResponse

public static long JC_KT2_UnlockWithResponse(long slotId, byte[] pResponse)

Разблокировать ПИН-код пользователя ответом на запрос от администратора

Параметры:
  • slotID – идентификатор слота
  • pResponse – ответ на запрос от администратора
Результат:

CKR код завершения

JC_PKI_GetComplexity

public static long JC_PKI_GetComplexity(long slotId, JC_PKI_PERSONALIZATION_INFO pPersonalizationInfo)

Получение параметров персонализации для PKI апплета.

Параметры:
  • slotID – идентификатор слота
  • pInfo – параметры персонализации
Результат:

CKR код завершения

JC_PKI_GetPINInfo

public static long JC_PKI_GetPINInfo(long slotId, JC_PKI_PIN_INFO pPinInfo)

Получить информацию о количестве оставшихся попыток ПИН-кодов для Laser.

Параметры:
  • slotId – идентификатор слота
  • pPinInfo – счетчики попыток ПИН-кодов
Результат:

CKR код завершения

JC_PKI_ReadPinCounters

public static long JC_PKI_ReadPinCounters(long slotId, long userType, JC_PKI_PIN_COUNTERS pPinCounters)

Получить счетчики ПИН-кода для Laser

Параметры:
  • slotId – идентификатор слота
  • userType – тип пользователя
  • pPinCounters – информация о счетчика ПИН-кода
Результат:

CKR код завершения

JC_PKI_SetComplexity

public static long JC_PKI_SetComplexity(long slotId, JC_PKI_PERSONALIZATION_INFO pPersonalizationInfo)

Установка параметров персонализации для PKI апплета. Параметры персонализации применяются только при инициализации апплета

Параметры:
  • slotId – идентификатор слота
  • pPersonalizationInfo – параметры персонализации
Результат:

CKR код завершения

JC_PKI_UnlockUserPIN

public static long JC_PKI_UnlockUserPIN(long slotId)

Функция разблокирует ПИН-код пользователя для апплета Laser или возвращает ошибку CKR.CANNOT_UNLOCK, если разблокировка невозможна.

Параметры:
  • slotId – идентификатор слота
Результат:

CKR код завершения

JC_PKI_WipeCard

public static long JC_PKI_WipeCard(long slotId)

Очистка содержимого карты Laser. Метод требует аутентификации администратором.

Параметры:
  • slotId – идентификатор слота
Результат:

CKR код завершения

certVerify

public long certVerify(long session, long certificateToVerify, long[] trustedCertificates, long[] certificateChain, CK_BYTE_PTR crls, long[] crlsLengths)

Проверка подписи сертификатов формата X.509 по всей цепочке сертификации.

Параметры:
  • session – дескриптор сеанса
  • certificateToVerify – дескриптор сертификата, который необходимо проверить
  • trustedCertificates – массив дескрипторов доверенных сертификатов
  • certificateChain – массив дескрипторов промежуточных сертификатов (null - промежуточные сертификаты отсутствуют)
  • crls – массив указателей на списки отозванных сертификатов
  • crlsLengths – массив с длиной списка на который указывает crls
Результат:

CKR код завершения

checkCertSignature

public long checkCertSignature(long session, byte[] certificate, byte[] trustedSignerCertificate)

Проверка подписи сертификата на соответствие ключу его подписанта. Для Криптотокен 2 ЭП ключ для проверки подписи д.б. предварительно импортирован на токен. Проверка подписи выполняется аппаратно. Хеширование выполняется аппаратно, если была вызвана функция Extensions.useHardwareHash(true).

Параметры:
  • session – дескриптор сеанса
  • certificate – сертификат в DER формате
  • trustedSignerCertificate – сертификат доверенного подписанта в DER формате.
Результат:

CKR код завершения

createCSR

public long createCSR(long session, long publicKey, String[] dn, CK_BYTE_PTR csr, long privateKey, String[] attributes, String[] extensions)

Формирование запроса на сертификат.

Параметры:
  • session – дескриптор сеанса
  • publicKey – дескриптор открытого ключа для создания сертификата
  • dn – distinguished name. В параметр должен передаваться массив строк. В первой строке должен располагаться тип поля в текстовой форме, или OID, например, “CN”. Во второй строке должно располагаться значение поля. Последующие поля передаются в следующих строках. Количество строк должно быть четным
  • csr – возвращаемый буфер, в который будет записан запрос на сертификат
  • privateKey – дескриптор закрытого ключа, парный publicKey. Если значение установленно в C.INVALID_HANDLE, то поиск закрытого ключа будет осуществляться по CKA_ID CKA.ID открытого ключа
  • attributes – дополнительные атрибуты для включения в запрос. Формат аналогичен dn
  • extensions – расширения для включения в запрос. Формат аналогичен dn
Результат:

CKR код завершения

createCSREx

public long createCSREx(long session, long publicKey, String[] dn, CK_BYTE_PTR csr, long privateKey, String[] attributes, String[] extensions, CKM signMechanism)

Расширенное формирование запроса на сертификат.

Параметры:
  • session – дескриптор сеанса
  • publicKey – дескриптор открытого ключа для создания сертификата
  • dn – distinguished name. В параметр должен передаваться массив строк. В первой строке должен располагаться тип поля в текстовой форме, или OID, например, “CN”. Во второй строке должно располагаться значение поля. Последующие поля передаются в следующих строках. Количество строк должно быть четным
  • csr – возвращаемый буфер, в который будет записан запрос на сертификат
  • privateKey – дескриптор закрытого ключа, парный publicKey. Если значение установленно в C.INVALID_HANDLE, то поиск закрытого ключа будет осуществляться по CKA_ID CKA.ID открытого ключа
  • attributes – дополнительные атрибуты для включения в запрос. Формат аналогичен dn
  • extensions – расширения для включения в запрос. Формат аналогичен dn
  • signMechanism – механизм подписи
Результат:

CKR код завершения

genCert

public long genCert(long session, byte[] csr, long privateKey, String serial, String[] issuerDN, long days, CK_BYTE_PTR certificate)

Создание сертификата из запроса.

Параметры:
  • session – дескриптор сеанса
  • csr – запрос на сертификат
  • privateKey – дескриптор закрытого ключ издателя сертификата
  • serial – серийный номер сертификата в строковом представлении
  • issuerDN – distinguished name издателя сертификата. В параметр должен передаваться массив строк. В первой строке должен располагаться тип поля в текстовой форме, или OID, например, “CN”. Во второй строке должно располагаться значение поля. Если issuerDN равно нулю, distinguished name издателя устанавливается равным distinguished namе субъекта
  • days – срок действия сертификата в днях
  • certificate – возвращаемый буфер, в который будет записан сертификат
Результат:

CKR код завершения

genCertEx

public long genCertEx(long session, byte[] csr, long privateKey, long publicKey, String serial, String[] issuerDN, long days, CK_BYTE_PTR certificate, CKM signMechanism)

Расширенное создание сертификата из запроса.

Параметры:
  • session – дескриптор сеанса
  • csr – запрос на сертификат
  • privateKey – закрытый ключ издателя сертификата
  • publicKey – открытый ключ издателя сертификата
  • serial – серийный номер сертификата в строковом представлении
  • issuerDN – distinguished name издателя сертификата. В параметр должен передаваться массив строк. В первой строке должен располагаться тип поля в текстовой форме, или OID, например, “CN”. Во второй строке должно располагаться значение поля. Если issuerDN равно нулю, distinguished name издателя устанавливается равным distinguished namе субъекта.
  • days – срок действия сертификата в днях.
  • certificate – возвращаемый буфер, в который будет записан сертификат
  • signMechanism – механизм подписи
Результат:

CKR код завершения

getCertificateAttribute

public long getCertificateAttribute(byte[] x509data, CertificateAttributeType dataId, StringRef outputData)

Получить значение определенного атрибута из x509 сертификата.

Параметры:
  • x509data – сертификат в DER формате
  • dataId – тип получаемого атрибута (CertificateAttributeType)
  • outputData – возвращаемое значение запрошенного атрибута
Бросает исключение:
 
  • UnsupportedEncodingException – исключение, которое бросается функцией в случае, если используется некорректная кодировка
Результат:

CKR код завершения

getCertificateInfo

public long getCertificateInfo(long session, long handle, StringRef info)

Получить информацию о сертификате в текстовом виде. Сертификат должен быть расположен в памяти устройства.

Параметры:
  • session – дескриптор сеанса
  • handle – дескриптор сертификата
  • info – возвращаемая информация о сертификате
Бросает исключение:
 
  • UnsupportedEncodingException – исключение, которое бросается функцией в случае, если используется некорректная кодировка
Результат:

CKR код завершения

getCertificateInfoEx

public long getCertificateInfoEx(byte[] certificate, StringRef info)

Получить информацию о сертификате в текстовом виде. Сертификат передается непосредственно в ф-цию и может не храниться на устройстве.

Параметры:
  • certificate – сертификат в DER формате
  • info – возвращаемая информация о сертификате
Бросает исключение:
 
  • UnsupportedEncodingException – исключение, которое бросается функцией в случае, если используется некорректная кодировка
Результат:

CKR код завершения

pkcs7Parse

public long pkcs7Parse(byte[] envelope, CK_BYTE_PTR signerCert, CK_BYTE_PTR attachedData)

Извлечение данных и сертификата подписанта из PKCS#7 контейнера.

Параметры:
  • envelope – сообщение, подписанное в формате PKCS#7
  • signerCert – возвращаемый сертификат
  • attachedData – возвращаемые данные
Результат:

CKR код завершения

pkcs7ParseEx

public long pkcs7ParseEx(byte[] envelope, CK_BYTE_PTR signerCert, CK_BYTE_PTR attachedData, CK_BYTE_PTR signature)

Извлечение данных, подписи и сертификата подписанта из PKCS#7 контейнера.

Параметры:
  • envelope – сообщение, подписанное в формате PKCS#7
  • signerCert – возвращаемый сертификат
  • attachedData – возвращаемые данные
  • signature – возвращаемая подпись
Результат:

CKR код завершения

pkcs7Sign

public long pkcs7Sign(long session, byte[] data, long signCertificate, CK_BYTE_PTR envelope, long privateKey, long[] certificates, long flags)

Формирование PKCS#7 сообщения типа signed data. Сертификат, используемый при формировании подписи, должен располагаться в памяти устройства. Допустимые значения flags: - Extensions.PKCS7_DETACHED_SIGNATURE – если этот флаг установлен, то исходные данные не сохраняются вместе с подписью (отсоединенная подпись). Иначе исходные данные сохраняются вместе с подписью (присоединенная подпись). - Extensions.PKCS7_HARDWARE_HASH – если этот флаг установлен, то хэширование будет осуществляться аппаратно устройством eToken ГОСТ или JaCarta ГОСТ. Иначе хэширование будет осуществляться программно.

Параметры:
  • session – дескриптор сеанса
  • data – данные для подписи
  • signCertificate – дескриптор сертификата создателя сообщения
  • envelope – возвращаемая подпись
  • privateKey – дескриптор закрытого ключа создателя сообщения
  • certificates – массив дескрипторов сертификатов, которые следует добавить в сообщение
  • flags – флаги
Результат:

CKR код завершения

pkcs7SignEx

public long pkcs7SignEx(long session, byte[] data, byte[] signCertificate, CK_BYTE_PTR envelope, long privateKey, long[] certificates, long flags)

Расширенное формирование PKCS#7 сообщения типа signed data. Сертификат, используемый при формировании подписи, передается непосредственно в ф-цию и может не храниться на устройстве. Допустимые значения flags: - Extensions.PKCS7_DETACHED_SIGNATURE – если этот флаг установлен, то исходные данные не сохраняются вместе с подписью (отсоединенная подпись). Иначе исходные данные сохраняются вместе с подписью (присоединенная подпись). - Extensions.PKCS7_HARDWARE_HASH – если этот флаг установлен, то хэширование будет осуществляться аппаратно устройством eToken ГОСТ или JaCarta ГОСТ. Иначе хэширование будет осуществляться программно.

Параметры:
  • session – дескриптор сеанса
  • data – данные для подписи
  • signCertificate – сертификат создателя сообщения в DER формате
  • envelope – возвращаемая подпись
  • privateKey – дескриптор закрытого ключа создателя сообщения
  • certificates – массив дескрипторов сертификатов, которые следует добавить в сообщение
  • flags – флаги
Результат:

CKR код завершения

pkcs7TrustedVerifyHW

public long pkcs7TrustedVerifyHW(long session, byte[] envelope, byte[] data, byte[] trustedSigner, long flags)

Проверка подписи в PKCS#7 сообщении типа signed data с дополнительной проверкой на соответствие подписи ключа проверки ЭП открытому ключу доверенного сертификата. Используется аппаратная реализация проверки подписи. Для Криптотокен 2 ЭП ключ для проверки подписи д.б. предварительно импортирован на токен.

Параметры:
  • session – дескриптор сеанса
  • envelope – сообщение, подписанное в формате PKCS#7
  • data – данные. Если сообщение не содержит данных (используется отсоединенная подпись), то необходимо передать их в этот параметр
  • trustedSigner – доверенный сертификат в DER формате
  • flags – флаги. Может принимать значение 0 или Extensions.PKCS7_HARDWARE_HASH
Результат:

CKR код завершения

pkcs7Verify

public long pkcs7Verify(byte[] envelope, byte[] data)

Проверка подписи в PKCS#7 сообщении типа signed data. Используются программные реализации методов проверки подписи и хеширования.

Параметры:
  • envelope – сообщение, подписанное в формате PKCS#7
  • data – данные. Если сообщение не содержит данных (используется отсоединенная подпись), то необходимо передать их в этот параметр
Результат:

CKR код завершения

pkcs7VerifyHW

public long pkcs7VerifyHW(long session, byte[] envelope, byte[] data, long flags)

Проверка подписи в PKCS#7 сообщении типа signed data. Используется аппаратная реализация проверки подписи. Для Криптотокен 2 ЭП ключ для проверки подписи д.б. предварительно импортирован на токен.

Параметры:
  • session – дескриптор сеанса
  • envelope – сообщение, подписанное в формате PKCS#7
  • data – данные. Если сообщение не содержит данных (используется отсоединенная подпись), то необходимо передать их в этот параметр
  • flags – флаги. Может принимать значение 0 или Extensions.PKCS7_HARDWARE_HASH
Результат:

CKR код завершения

useHardwareHash

public long useHardwareHash(boolean hardware)

Установка способа хэширования для функций, не входящих в стандарт PKCS #11.

Параметры:
  • hardware – способ хэширования: true - аппаратное (на токене), false - программное
Результат:

CKR код завершения

verifyReq

public long verifyReq(byte[] csr)

Проверка подписи в запросе на сертификат. Подпись проверяется программно.

Параметры:
  • csr – запрос на сертификат
Результат:

CKR.OK – подпись действительна, CKR.SIGNATURE_INVALID – подпись недействительна

verifyReqEx

public long verifyReqEx(long session, long publicKey, byte[] csr, CKM mechanism)

Расширенная проверка подписи в запросе на сертификат. Поддерживается программная и аппаратная проверка: - для программной проверки параметры session и publicKey должны равняться C.INVALID_HANDLE; - для аппаратной проверки необходимо передать валидные параметры session и publicKey.

Параметры:
  • session – дескриптор сеанса
  • publicKey – дескриптор открытого ключа из ключевой пары, использованной при создании запроса на сертификат
  • csr – запрос на сертификат
  • mechanism – механизм проверки подписи. Должен совпадать с механизмом, используемом при создании запроса на сертификат
Результат:

CKR код завершения

Оглавление