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Постоянное имя ключа, распознаваемое провайдером
UseMachineKeytrue или ненулевое — открыть ключ из области машины
AllowUItrue или ненулевое — разрешить провайдеру показывать интерфейсы 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