SetSignProcessCNGKey
Безопасность и подписи
Описание
Присоединяет именованный приватный ключ NCrypt и его DER-кодированный сертификат X.509 к процессу подписания PDF
Ключ открывается напрямую из запрошенного провайдера хранения ключей, что открывает TPM-идентичности, аппаратные токены, облачные KSP и прочие CNG-only идентичности для подписания без экспорта приватного ключа
Синтаксис
Delphi
Function TPDFlib.SetSignProcessCNGKey(SignProcessID: Integer; Const CertificateDER: AnsiString; Const ProviderName, KeyName: WideString; UseMachineKey, AllowUI: Boolean): Integer;
ActiveX
Function PDFlib::SetSignProcessCNGKey(SignProcessID As Long, CertificateDER As Variant, ProviderName As String, KeyName As String, UseMachineKey As Long, AllowUI As Long) As Long
DLL
int DLSetSignProcessCNGKey(int InstanceID, int SignProcessID, const char* CertificateDER, int CertificateLength, const wchar_t* ProviderName, const wchar_t* KeyName, int UseMachineKey, int AllowUI);
Параметры
| SignProcessID | Значение, возвращенное функцией NewSignProcessFrom* |
|---|---|
| CertificateDER | Полный DER-кодированный сертификат X.509 (RSA или ECDSA), соответствующий приватному ключу |
| ProviderName | Имя провайдера хранения ключей Windows или пустая строка для Microsoft Software Key Storage Provider |
| KeyName | Постоянное имя ключа, распознаваемое провайдером |
| UseMachineKey | true или ненулевое — открыть ключ из области машины |
| AllowUI | true или ненулевое — разрешить провайдеру показывать интерфейсы PIN, согласия или облачного подтверждения |
Возвращаемые значения
| 1 | Конфигурация идентичности присоединена к процессу |
|---|---|
| 0 | Недопустимы ID процесса, сертификат или имя ключа |
Примечания
Ключ открывается при исполнении процесса подписи, и байты приватного ключа не попадают в память библиотеки
When AllowUI is false, NCRYPT_SILENT_FLAG is applied to key opening and signingThe generated CMS signature is verified against
CertificateDER до принятия; ключ с тем же алгоритмом, но другим соответствием отвергаетсяActiveX принимает вариант с массивом байтов, а DLL использует явную длину сертификата, поэтому внедренные нулевые байты сохраняются
ActiveX принимает вариант с массивом байтов, а DLL использует явную длину сертификата, поэтому встроенные нулевые байты сохраняются
См. также
SetSignProcessCNGKeyFromFile, SetSignProcessCNGKeyByHandle, SetSignProcessPrivateKeyUI