SetSignProcessCNGKey
Zabezpieczenia i podpisy
Opis
Dołącza nazwany klucz prywatny NCrypt i odpowiadający mu certyfikat X.509 zakodowany w DER do procesu podpisywania PDF
Klucz jest otwierany bezpośrednio u wskazanego dostawcy magazynu kluczy, co pozwala używać tożsamości podpisujących opartych na TPM, tokenach sprzętowych, chmurowych dostawcach KSP i innych mechanizmach dostępnych wyłącznie przez CNG bez eksportowania klucza prywatnego
Składnia
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);
Parametry
| SignProcessID | Wartość zwrócona przez funkcję NewSignProcessFrom* |
|---|---|
| CertificateDER | Kompletny certyfikat X.509 RSA lub ECDSA zakodowany w DER, odpowiadający kluczowi prywatnemu |
| ProviderName | Nazwa dostawcy magazynu kluczy Windows albo pusty ciąg dla Microsoft Software Key Storage Provider |
| KeyName | Trwała nazwa klucza rozpoznawana przez dostawcę |
| UseMachineKey | True lub wartość niezerowa otwiera klucz z zakresu komputera |
| AllowUI | True lub wartość niezerowa zezwala dostawcy na wyświetlanie interfejsu użytkownika dla kodu PIN, zgody lub zatwierdzenia chmurowego |
Wartości zwracane
| 1 | Konfiguracja tożsamości została dołączona do procesu |
|---|---|
| 0 | Identyfikator procesu, certyfikat lub nazwa klucza były nieprawidłowe |
Uwagi
Klucz jest otwierany podczas wykonywania procesu podpisywania, a bajty klucza prywatnego nigdy nie trafiają do pamięci biblioteki
Gdy AllowUI ma wartość false, przy otwieraniu klucza i podpisywaniu stosowana jest flaga NCRYPT_SILENT_FLAG
Wygenerowany podpis CMS jest przed zaakceptowaniem weryfikowany przy użyciu CertificateDER, dlatego klucz o tym samym algorytmie, lecz niepasujący do certyfikatu, zostanie odrzucony
ActiveX przyjmuje wariant tablicy bajtów, a biblioteka DLL używa jawnej długości certyfikatu, dzięki czemu zachowywane są osadzone bajty zerowe
Zobacz również
SetSignProcessCNGKeyFromFile, SetSignProcessCNGKeyByHandle, SetSignProcessPrivateKeyUI