11. Криптография¶
Наш API по криптографии базируется на Windows CryptoAPI.
See also
11.1. Cryptor¶
-
class
Cryptor
¶ Статический класс, содержит криптографические методы.
See also
-
CreateHashByCert
(ACert: TbtkCryptorCertificate; AAlgID: String = ''): TbtkCryptorHash¶ Создать экземпляр объекта хеширования в соответствии с указанным сертификатом. Если сертификат обладает закрытым ключём - хешер будет ассоциирован с ним (можно подписать хеш закрытым ключём сертификата -
TbtkCryptorHash.Sign()
)Parameters: - ACert (TbtkCryptorCertificate) -- Сертификат на основании которого будет создан объект хеширования. По умолчанию из сертификата берутся и алгоритм хеширования - согласно указанному в нём алгоритму подписи.
- AAlgID (String) -- Опциональный параметр. Позволяет указать алгоритм хеширования отличный от того что соответствует алгоритму подписи указанному в сертификате.
Return type: New in version 5.5.0.3950.
-
CreateProvByType
(AType: Integer): TbtkCryptorProvider¶ Создать новый экземпляр криптопровайдеда, с указанием поддерживаемого функционала.
Parameters: Return type: New in version 5.5.8.4460.
-
CreateCertBySign
(ASign: blob): TbtkCryptorCertificate¶ Создаёт экземпляр сертификата по подписи (подпись возвращаемая методом
Cryptor.SignMessage()
)Parameters: ASign (blob) -- блоб, содержащий подпись Return type: TbtkCryptorCertificate New in version 5.5.0.3950.
-
CreateCertByID
(AID: String): TbtkCryptorCertificate¶ Создаёт экземпляр сертификата с указанным AID -
TbtkCryptorCertificate.ID
.Parameters: AID (String) -- ID сертификата Return type: TbtkCryptorCertificate Note
- в случае если такой сертификат не существует - возбуждается исключение.
- ID может быть получен методом
TbtkCryptorCertificate.OpenCertificateDlg()
, или у другого экземпляра сертификата через свойствоTbtkCryptorCertificate.ID
.
New in version 5.5.0.3950.
-
CreateCertByBlob
(AData: blob): TbtkCryptorCertificate¶ Создаёт экземпляр сертификата безопасности по его бинарному представлению (значение
TbtkCryptorCertificate.RawData
).Parameters: AData (blob) -- Описание отсутствует Return type: TbtkCryptorCertificate New in version 5.5.0.3950.
-
CreateCertByDialog
(): TbtkCryptorCertificate¶ Создаёт экземпляр сертификата выбранного пользователем с помощью UI.
Return type: TbtkCryptorCertificate Note
- в случае отмены возбуждается исключение EbtkUserCancel.
- данный способ идеологически заменяет вызов "устаревшего"
TbtkCryptorCertificate.OpenCertificateDlg()
- результат возвращаемый
TbtkCryptorCertificate.OpenCertificateDlg()
можно получить через свойствоTbtkCryptorCertificate.ID
New in version 5.5.0.3950.
-
EncryptSessionKey
(AKey: TbtkCryptorCertificate; ARecipientKey: blob): blob;¶ Зашифровать сессионный ключ (ключ симметричного шифрования) и закодировать в транспортную ASN1-структуру GostR3410-KeyTransport, см. RFC4490
Parameters: - AKey (TbtkCryptorKey) -- Выгружаемый/шифруемый ключ симметричного шифрования
- ARecipientKey (blob) -- Блоб публичного ключа получателя, в формате выгрузки CSP, см
TbtkCryptorKey.Export()
New in version 5.5.8.4460.
-
DecryptSessionKey
(ATransport: blob; APrivateKey: TbtkCryptorKey): TbtkCryptorKey;¶ Декодировать и расшифровать сессионный ключ из структуры GostR3410-KeyTransport, см. RFC4490
Метод обратный к
EncryptSessionKey()
.Parameters: - ATransport (blob) -- Транспортный блоб, структура GostR3410-KeyTransport
- APrivateKey (TbtkCryptorKey) -- Приватный ключ для расшифровки декодированного сессионного ключа.
Return type: New in version 5.5.8.4460.
-
GetRawDataByCertID
(CertID: String): Variant¶ Массив данных сертификата. Возвращается в воде массива байт.
Parameters: CertID (String) -- Идентификатор сертификата. Полученный, например, с помощью OpenCertificateDlg
.Return type: Variant Пример использования¶<pascal> CertID := Cryptor.OpenCertificateDlg; rawData := Cryptor.GetRawDataByCertID(CertID); // красивый вывод на экран strRawData := 'RawData = ' + #13#10; for i := 0 to length(rawData)-1 do begin strRawData := strRawData + IntToStr(rawData[i]) + ', '; if (i mod 20 = 0) and (i <> 0) then strRawData := strRawData + #13#10; end; ShowMessage(strRawData); </pascal>
Deprecated since version 5.5.0.3950: Следует использовать
TbtkCryptorCertificate.RawData
.
-
CertInfoByCertID
(СertID: String; out Issuer: String; out Subject: String; out NotBefore: TDateTime; out NotAfter: TDateTime; out SignatureAlgorithm: String): boolean¶ Получить данные сертификата по ID
Parameters: - CertID (String) -- ID сертификата.
- Issuer (String) -- out параметр. Наименование организации выдавшей сертификат.
- Subject (String) -- out параметр. Наименование субъекта которому выдан сертификат.
- NotBefore (TDateTime) -- out параметр. Дата с которой сертификат считается валидным.
- NotAfter (TDateTime) -- out параметр. Дата с которой сертификат считается невалидным.
- SignatureAlgorithm (String) -- out параметр. OID алгоритма подписи сертификата.
Return type: boolean
-
CertInfoBySign
(Sign: Blob; out Issuer: String; out Subject: String; out NotBefore: TDateTime; out NotAfter: TDateTime; out SignatureAlgorithm: String): boolean¶ - Получить данные сертификата из подписи.
Parameters: - Sign (Blob) -- Подпись.
- Issuer (String) -- out параметр. Наименование организации выдавшей сертификат.
- Subject (String) -- out параметр. Наименование субъекта которому выдан сертификат.
- NotBefore (TDateTime) -- out параметр. Дата с которой сертификат считается валидным.
- NotAfter (TDateTime) -- out параметр. Дата с которой сертификат считается невалидным.
- SignatureAlgorithm (String) -- out параметр. OID алгоритма подписи сертификата.
Return type: boolean
-
CertInfoByBlob
(Data: Blob; out Issuer: String; out Subject: String; out NotBefore: TDateTime; out NotAfter: TDateTime; out SignatureAlgorithm: String): boolean¶ Получить данные сертификата из его бинарного представления (
TbtkCryptorCertificate.RawData
).Parameters: - Data (Blob) -- Бинарное представление сертификата.
- Issuer (String) -- out параметр. Наименование организации выдавшей сертификат.
- Subject (String) -- out параметр. Наименование субъекта которому выдан сертификат.
- NotBefore (TDateTime) -- out параметр. Дата с которой сертификат считается валидным.
- NotAfter (TDateTime) -- out параметр. Дата с которой сертификат считается невалидным.
- SignatureAlgorithm (String) -- out параметр. OID алгоритма подписи сертификата.
Return type: boolean
-
GetThumbprintHexStringByCertID
(CertID: String): String¶ Отпечаток сертификата в виде строки шестнадцитиричных цифр без пробелов.
Например:
ca28201a69d921711ba37eac4676028647b5fb12
Parameters: CertID (String) -- Идентификатор сертификата. Полученный, например, с помощью OpenCertificateDlg
.Return type: String Пример использования¶<PASCAL> CertID := Cryptor.OpenCertificateDlg; thumbPrint := Cryptor.GetThumbprintHexStringByCertID(CertID); ShowMessage('Отпечаток выбранного сертификата = ' + thumbPrint); </PASCAL>
Deprecated since version 5.5.0.3950: Следует использовать
TbtkCryptorCertificate.Thumbprint
.
-
VerifyCertFromSignInCRL
(sign: String): Boolean¶ Проверяет наличие сертификата из подписи в списках отозванных.
Parameters: sign (String) -- Описание отсутствует Return type: Boolean Пример использования¶<pascal> if VerifyCertFromSignInCRL(sign) then ShowMessage('Сертификату, которым была создана данная подпись, можно доверять') else ShowMessage('Сертификат, которым создали данну подпись, был отозван'); </pascal>
-
VerifyCertInCRL
(CertID: String): Boolean¶ Проверяет наличие сертификата в списках отозванных по идентификатору сертификата.
Parameters: CertID (String) -- Описание отсутствует Return type: Boolean Пример использования¶<pascal> CertID := Cryptor.OpenCertificateDlg; if VerifyCertFromSignInCRL(CertID) then ShowMessage('Сертификату можно доверять') else ShowMessage('Сертификат отозван'); </pascal>
-
RefreshCRL
(ASign, ALog, AForce: String): Boolean¶ Обновляет списки отозванных сертификатов и обновляет их по необходимости
Если установлен флаг AForce в False, то функция проверяет действие CRL списков и обновляет только по необходимости. Иначе обновляет в любом случае.
Parameters: - ASign (String) -- Описание отсутствует
- ALog (String) -- Описание отсутствует
- AForce (String) --
Return type: Boolean
Пример использования¶<pascal> var spLog: string; begin if RefreshCRL(sign, spLog, true) then ShowMessage('Списки были удачно обновлены') else ShowMessage(spLog); end; </pascal>
-
IsCRLOutOfDate
(sign: String): Boolean¶ Проверка по дате подписи актуальность списков CRL
Parameters: sign (String) -- Описание отсутствует Return type: Boolean Returns: - True
- если есть список и дата удовлетворяет
- False
- нет списка или нужно обновить CRL
Пример использования¶<pascal> if IsCRLOutOfDate(sign) then ShowMessage('Список есть и дата удовлетворяет') else ShowMessage('Нет списка или он устарел'); </pascal>
-
LoadCRLByURL
(url, crl: String): Boolean¶ Функция загружает по заданному адресу CRL список.
Parameters: - url (String) -- Описание отсутствует
- crl (String) -- Описание отсутствует
Return type: Boolean
Пример использования¶<pascal> var crl: string; Begin if LoadCRLByURL('http://test.ru/my.crl', crl) then ShowMessage('Список отозванных сертификатов загружен') else ShowMessage('Ошибка загрузки'); end. </pascal>
-
AddCRLToRoot
(ACrl: blob): Boolean¶ Добавление списка отозванных в хранилище (по умолчанию в Доверительные корневые центры сертификации) списка отозванных сертификтов.
Parameters: ACrl (blob) -- Описание отсутствует Return type: Boolean Пример использования¶<pascal> var crl: text; begin if LoadCRLByURL('http://aaaaa.ru/new.crl', crl) then ShowMessage('crl загружен'); if AddCRLToRoot(crl) then ShowMessage('crl установлен'); end; </pascal>
-
SignMessage
(AData, ACertID, ARslt: String): Boolean¶ Метод создаёт ЭЦП подпись к тексту AData и возвращает её в ARslt. ACertID - серийный номер сертификата, с помощью которого будет создана подпись. Если ACertID будет не указан или не найден, то отобразится диалоговое окно выбора сертификата.
Parameters: - Adata (String) -- Описание отсутствует
- ACertID (String) -- Описание отсутствует
- ARslt (String) -- Описание отсутствует
Return type: Boolean
Returns: - True
если подпись создана успешно
- False
если при создании произошла ошибка.
Пример использования¶<pascal> var Text, certID, sign: string; begin Text := 'Hello'; if cryptor.SignMessage(Text, certID, sign) then ShowMessage('Текст подписан.') else ShowMessage('Не удалось создать подпись.'); end; </pascal>
-
GetDateFromSign
(Sign: String; Date: TDateTime): Boolean¶ Получение даты подписи. По умолчанию при подписании данных ставится дата UTC
Parameters: - Sign (String) -- Описание отсутствует
- Date (TDateTime) -- Описание отсутствует
Return type: Boolean
Пример использования¶<pascal> var d: TDateTime; Begin if GetDateFromSign(sign, d) then ShowMessage(DateTimeToStr(d)); end. </pascal>
-
VerifyCertificate
(ACertID, AMessageError: String): Integer¶ Проверка сертификата на возможность его использовать, а именно: даты действия, построение цепочки сертификатов и т.д.
Parameters: - ACertID (String) -- серийный номер сертификата
- AMessageError (String) -- возвращаемое текстовое сообщение в результате не прохождения проверки сертификата
Return type: Integer
Returns: 0 - в результате успешного прохождения проверки сертификата или код ошибки.
Пример использования¶<pascal> if Cryptor.VerifyCertificate(VerifyCertID, messageError) = 0 then ShowMessage('Сертификат подтверждён') else ShowMessage('Сертификат не подтверждён: ' + messageError); </pascal>
-
VerifyMessage
(AData, ASign, ALog: String): Boolean¶ Метод проверяет на соответствие подписи ASign к сообщению AData.
Parameters: - AData (String) -- проверяемое сообщение
- ASign (String) -- проверяемая ЭЦП к AData
- ALog (String) -- возвращаемый серийный номер сертификата, с помощью которого была создана ЭЦП
Return type: Boolean
Returns: - True
результате соответствия ЭЦП к сообщению AData
- False
если подпись не подтверждена.
Пример использования¶<pascal> if Cryptor.VerifyMessage('text', sign, spLog) then ShowMessage('Подпись подтверждена!') else ShowMessage('Подпись не подтверждена! Причина:' + spLog ); </pascal>
-
11.2. TbtkCryptorKey¶
-
class
TbtkCryptorKey
¶ Объект высокоуровневого взаимодействия с "MS CryptoAPI". Реализует сущность "Ключ шифрования". Служит для шифрования и расшифровывания данных.
New in version 5.5.8.4460.
11.2.1. Все ключи¶
-
EncryptData
(AData: blob; AHash: TbtkCryptorHash = nil): blob¶ Зашифровать данные
Parameters: - AData (blob) -- Данные для зашифрования
- AHash = nil (TbtkCryptorHash) -- Хеш данных до зашифрования
-
DecryptData
(AData: blob; AHash: TbtkCryptorHash = nil): blob¶ Зашифровать данные. Метод обратный к
EncryptData()
Parameters: - AData (blob) -- Данные для расшифровки
- AHash = nil (TbtkCryptorHash) -- Хеш расшифрованных данных
-
Export
(ABlobType: Integer; AEncKey: TbtkCryptorKey = nil; AFlags: Integer = 0): blob¶ Сериализовать (выгрузить) ключ шифрования в указанном формате CSP
Parameters: - ABlobType (Integer) --
Формат предусмотренный CSP для сериализации ключей.
Доступные варианты:
`SIMPLEBLOB` = $1;
- сессионный ключ`PUBLICKEYBLOB` = $6;
- публичный ключ`PRIVATEKEYBLOB` = $7;
- секретный ключ`PLAINTEXTKEYBLOB` $8;
- ключ в открытом формате- Также, некоторые CSP могут определять свои форматы.
- AEncKey = nil (TbtkCryptorKey) -- Ключ которым будет шифроваться сериализованный ключ. Параметр применим, среди стандартных способов сериализации, для выгрузки сессионных ключей.
- AFlags = 0 (Integer) -- Определяет дополнительные опции выгрузки, см. MSDN , параметр
dwFlags
- ABlobType (Integer) --
-
DuplicateKey
(): TbtkCryptorKey¶ Метод создаёт дубликат ключа. Может быть полезно, если ожидается модификация ключа, но в будущем потребуется ключ с изначальными параметрами.
Return type: TbtkCryptorKey
-
AlgID
: string¶ Алгоритм ключа в представлении OID-идентификатора
-
AlgID
: Integer Алгоритм ключа в числовом представлении. Не каждому алгоритму ключа будет соответствовать международный стандартизированный идентификатор (Object ID), в связи с чем реализована возможность задать его значение специфичным для CSP.
Например, смешанным (mixture) ключам по алгоритму Диффи-Хеллмана присущ алгоритм выгрузки сессионных ключей, но такие алгоритмы локальной значимости не стандартизируются.
В CSP CryptoPro реализованы два таких алгоритма выгрузки:
CALG_PRO_EXPORT = 661F
CALG_SIMPLE_EXPORT = 6620
-
BlockLen
: Integer¶ Свойство присущее ключам блочного шифрования - размер блока шифра, исчисляется в битах.
Может зависеть от
CypherMode
Атрибут только для чтения
-
KeyLen
: Integer¶ Действительная (без учёта выравниваний) длина ключа, в битах.
Атрибут только для чтения
-
Salt
: blob¶ Значение соли ключа шифрования
-
11.2.2. Блочные ключи¶
-
CypherMode
: Integer¶ Режим шифрования
CBC = 1
ECB = 2
OFB = 3
CFB = 4
CTS = 5
- Могут дополняться (и запрещаться) реализацией используемого CSP
-
CypherModeBits
: Integer¶ Дополнительный параметр для режимов шифрования
CFB
иOFB
. Количество передаваемых от блока к блоку бит.
-
Padding
: Integer¶ Способ дополнения блоков блочного шифра
Доступные варианты:
PKCS5_PADDING = 1
RANDOM_PADDING = 2
ZERO_PADDING = 3
-
Vector
: blob¶ Вектор инициализации (IV) алгоритма блочного шифра
-
11.2.3. Разрешения ключа¶
-
AllowArchive
: Boolean¶ Свойство сообщает, что данный ключ доступен для выгрузки. Но только до момента закрытия объекта ключа. Выставляется флагами при генерации ключа и сбрасывается CSP после (открыв ключ в слелующи раз - будет невыгружаемым)
Атрибут только для чтения
-
AllowDecrypt
: Boolean¶ Ключ можно использовать в методах дешифрации
Атрибут только для чтения
-
AllowEncrypt
: Boolean¶ Ключ можно использовать в методах шифрования
Атрибут только для чтения
-
AllowExport
: Boolean¶ Ключ можно выгрузить в открытом виде.
Атрибут только для чтения
-
AllowExportKey
: Boolean¶ ключ может использоваться для шифрования экспортируемых ключей
Атрибут только для чтения
-
AllowImportKey
: Boolean¶ ключ может использоваться для расшифровки импортируемых ключей
Атрибут только для чтения
-
AllowRead
: Boolean¶ Значение CRYPT_READ бита в параметре KP_PERMISSIONS.
Атрибут только для чтения
-
AllowWrite
: Boolean¶ Значение CRYPT_WRITE бита в параметре KP_PERMISSIONS.
Атрибут только для чтения
-
11.3. TbtkCryptorHash¶
-
class
TbtkCryptorHash
¶ Объект высокоуровневого взаимодействия с "MS CryptoAPI". Реализует сущность "Хешер".
Время жизни управляется счётчиком ссылок :
- освобождается простым занулением переменной где он хранится
- можно смело передавать его между операциями и выборками, даже асинхронными
New in version 5.5.0.3950.
-
Value
(): blob¶ Получить рассчитанный хеш данных.
Return type: blob Attention
после вызова - хеш изменить будет невозможно
TbtkCryptorHash.HashData()
-
Sign
(): blob¶ Подписать рассчитанный хеш (
TbtkCryptorHash.Value
) данных ассоциированным с хешером набором ключей шифрования(TbtkCryptorHash.Keyset
)Return type: blob Raises: Если ключи не ассоциированы с хешером ( Keyset
=TbtkCryptKeyset.ckNone
).Attention
после вызова - хеш изменить будет невозможно
TbtkCryptorHash.HashData()
-
VerifySign
(ASign: blob; APubKey: TbtkCryptorKey; AFlags = 0): Boolean¶ Проверить подпись на соответствие хешу. Результат True - фактическое подтверждение, что держатель сертификата (которому принадлежит публичный ключ) подтверждает целостность (неизменённость) данных, по которым рассчитан хеш.
Parameters: - ASign (blob) -- Значение цифровой подписи.
- APubKey (TbtkCryptorKey) -- Публичный ключ сертификата, которым подписаны данные.
- AFlags (Integer) -- Управляющие флаги, необязательный параметр. Использование флагов регламентируется конкретной реализацией CSP. В подавляющем большинстве случаев их передача не требуется.
Пример использования¶<PASCAL> cert := Cryptor.CreateCertByDialog; hash := Cryptor.CreateHashByCert(cert); hash.HashData([1,2,3,4,5,6]); sig := hash.Sign; hash := nil; newOneHash := Cryptor.CreateHashByCert(cert); newOneHash.HashData([1,2,3,4,5,6]); ok := newOneHash.VerifySign(sig, cert.Provider.CreateKeyByPublic(cert)); </PASCAL>
-
Keyset
(): TbtkCryptKeyset¶ Набор ключей который будет использован для подписания (
TbtkCryptorHash.Sign
) хеша.Return type: TbtkCryptKeyset Note
если ключи не ассоциированы с хешером (
TbtkCryptKeyset.ckNone
) - методTbtkCryptorHash.Sign
возбудит исключение.
-
HashData
(AData: blob)¶ Метод хеширует указанные данные.
Поддерживается итеративное хеширование - можно последовательно вызвать метод для добавления в хеш новых пакетов данных, что равносильно тому как если бы все пакеты данных были последовательно помещены в один большой блоб и метод был бы вызван один раз. Такой подход позволяет парциально хешировать сколь угодно большой объём данных.
Parameters: AData (blob) -- Очередной блоб данных для хеширования. Note
добавлять порции в хеш можно до тех пор пока не будет вызван метод получения хеша (
TbtkCryptorHash.Value
илиTbtkCryptorHash.Sign
).
-
HashSessionKey
(AKey: TbtkCryptorKey)¶ Добавить к значению хеша данные ключа шифрования.
Param: TbtkCryptorKey AKey
Ключ симметричного шифрования
New in version 5.5.8.4460.
11.4. TbtkCryptorProvider¶
-
class
TbtkCryptorProvider
¶ Объект высокоуровневого взаимодействия с "MS CryptoAPI". Объект доступа к хранилищу секретных ключей с использованием выбранного (по типу реализуемого функционала, или иным признакам) CSP(алгоритмов).
New in version 5.5.8.4460.
-
CreateHash
(AAlgID: string): TbtkCryptorHash¶ Создать новый объект хеширования
Parameters: AAlgID (string) -- OID алгоритма хеширования.
Примеры:
- szOID_RSA_MD5 = "1.2.840.113549.2.5"
- szOID_RSA_SHA1RSA = "1.2.840.113549.1.1.5"
- szOID_CP_GOST_R3411 = "1.2.643.2.2.9"
Return type: TbtkCryptorHash
-
CreateKeyByPrivate
(AKeySet: TbtkCryptKeyset = ckKeyExchange): TbtkCryptorKey¶ Создать объект секретного ключа из контейнера с которым ассоциирован провайдер
Parameters: AKeySpec = ckKeyExchange (TbtkCryptKeyset) -- Указывает из какой пары ключ. Ключ обмена данными, или подписания данных. По умолчанию, как наиболее востребованный,- ключ обмена данными. Raises: Если ключ запрошенного типа отсутствует в провайдере. Return type: TbtkCryptorKey
-
CreateKeyByPublic
(ACert: TbtkCryptorCertificate): TbtkCryptorKey¶ Создать объект публичного ключа из сертификата безопасности разместив ключ в провайдере
Parameters: ACert (TbtkCryptorCertificate) -- Сертификат, из которого будет загружен публичный ключ Return type: TbtkCryptorKey
-
CreateKeyByImport
(AKeyBlob: blob; AEncKey: TbtkCryptorKey = nil; AFlags: Integer = CRYPT_EXPORTABLE): TbtkCryptorKey¶ Загрузить ключевой блоб в криптопровайдер. Тип ключа и параметры определяются самим блобом. Метод комплементарен
TbtkCryptorKey.Export()
.Parameters: - AKeyBlob (blob) -- Сериализованный CSP ключ шифрования
- AEncKey = nil (TbtkCryptorKey) -- Ключ которым зашифрован AKeyBlob. Необходимость в ключе шифрования определяется типом загружаемого ключа и алгоритмами CSP. Для загрузки блобов публичных ключей ключ шифрования не требуется.
- AFlags = CRYPT_EXPORTABLE (integer) -- Флаги создания ключа, см. MSDN , параметр
dwFlags
.
Return type:
-
CreateKeyByGenKey
(AAlgID: string; AFlags: integer = CRYPT_EXPORTABLE): TbtkCryptorKey¶ Сгенерировать новый ключ со случайными параметрами по указанному алгоритму.
Parameters: - AAlgID (string) -- Алгоритм ключа. Например,
1.2.643.2.2.21
- ключ симметричного шифрования, ГОСТ 28147. - AFlags = CRYPT_EXPORTABLE (integer) -- Флаги создания ключа, см. MSDN , параметр
dwFlags
.
Return type: - AAlgID (string) -- Алгоритм ключа. Например,
-
CreateKeyByHash
(AAlgID: string; AHash: TbtkCryptorHash; AFlags: Integer = CRYPT_EXPORTABLE): TbtkCryptorKey¶ Создать новый ключ шифрования по данным хеша
Parameters: - AAlgID (string) -- Алгоритм ключа. Например,
1.2.643.2.2.21
- ключ симметричного шифрования, ГОСТ 28147. - AHash (TbtkCryptorHash) -- Хеш-объект из значения которого будет сконструирован ключ. Для одинаковых хешей будут сконкструированы одинаковые ключи.
- AFlags = CRYPT_EXPORTABLE (integer) -- Флаги создания ключа, см. MSDN , параметр
dwFlags
.
Return type: - AAlgID (string) -- Алгоритм ключа. Например,
-
KeyExchangeKeySetExists
: Boolean¶ Содержатся ли в контейнере ключи обмена данными.
Атрибут только для чтения
-
SignatureKeySetExists
: Boolean¶ Содержатся ли в контейнере ключи подписания данных.
Атрибут только для чтения
-
11.5. TbtkCryptorCertificate¶
-
class
TbtkCryptorCertificate
¶ Объект высокоуровневого взаимодействия с "MS CryptoAPI". Реализует сущность "Сертификат безопасности".
Время жизни управляется счётчиком ссылок :
- освобождается простым занулением переменной где он хранится
- можно смело передавать его между операциями и выборками, даже асинхронными
See also
-
Thumbprint
: blob¶ Хеш бинарного представления сертификата (
TbtkCryptorCertificate.RawData
) рассчитанный алгоритмом SHA1.Return type: blob
-
SerialNumber
: blob¶ Пордяковый номер сертификата присвоенный ему издателем. Integer неограниченной длинны (в нотации BigEndian).
Return type: blob
-
RawData
: blob¶ Бинарное представление сертификата.
Return type: blob
-
SignatureAlgorithm
: String¶ OID алгоритма подписи сертификата.
Return type: String
-
PublicKeyAlgorithm
: String¶ OID алгоритма хеширования публичного ключа.
Return type: String
-
NotBefore
: date¶ Дата с которой сертификат считается валидным.
Return type: date
-
NotAfter
: date¶ Дата с которой сертификат считается невалидным.
Return type: date
-
KeepLoggedIn
: Boolean¶ - True
- Не перезапрашивать пароль на доступ к хранилищу закрытого ключа.
- False
- При каждом обращении к закрытому ключу сертификата будет запрашиваться пароль от хранилища.
Return type: Boolean
-
ID
: String¶ Строка используемая для идентификации сертификата в методах
Cryptor
. Свойство добавлено для обратной совместимости с ранее реализованным процедурным подходом.Return type: String
-
SubjectName
(AFormat: TbtkCertNameFormat = cnfX500; AFlags: Variant = null): String¶ Наименование субъекта которому выдан сертификат.
Parameters: - AFormat (TbtkCertNameFormat) -- Представление в котором будет возвращено имя.
- AFlags (Variant) -- Зарезервировано. Не используется. Управляющие флаги, могут использоваться различные значения в зависимости от используемого представления.
Return type: String
-
IssuerName
(AFormat: TbtkCertNameFormat = cnfX500; AFlags: Variant = null): String¶ Наименование организации выдавшей сертификат.
Parameters: - AFormat (TbtkCertNameFormat) -- Представление в котором будет возвращено имя.
- AFlags (Variant) -- Зарезервировано. Не используется. Управляющие флаги, могут использоваться различные значения в зависимости от используемого представления.
Return type: String
-
Provider
: TbtkCryptorProvider¶ Хранилище приватных ключей сертификата. Если с сертификатом не ассоциированно такого хранилища - генерируется исключение.
Атрибут только для чтения
Return type: TbtkCryptorProvider
11.6. TbtkCertNameFormat¶
-
class
TbtkCertNameFormat
¶ Перечисление. Формат в котором представлено наименование сертификата.
-
cnfX500
¶ Имя формируется по правилам определённым Microssoft в CryptoAPI. При формировании используются заголовки (буквенные обозначения) параметров имени.
-
cnfOid
¶ Имя формируется по правилам определённым Microssoft в CryptoAPI. При формировании используются OID параметров имени.
-
cnfSimple
¶ Имя формируется по правилам определённым Microssoft в CryptoAPI. Формируется из одних только значений параметров, без заголовков.
-
cnfRFC1779
¶ Имя формируется в точном соответствии RFC1779, без лирических отступлений Microsoft от стандарта.
-
11.7. TbtkCryptKeyset¶
-
class
TbtkCryptKeyset
¶ Перечисление. Набор ключей шифрования.
See also
TbtkCryptorHash.Keyset
-
ckKeyExchange
¶ Набор ключей для обмена данными. Также подходит и для подписывания данных (более широкий чем
TbtkCryptKeyset.ckSignature
)
-
ckSignature
¶ Набор ключей для подписывания данных. Вместо него также может использоваться набор ключей
TbtkCryptKeyset.ckKeyExchange
-
ckNone
¶ Набор ключей шифрования отсутствует.