Я пытаюсь автоматизировать выбор сертификата в веб-браузере.
Я реализовал интерфейс IHttpNegotiate3 и перехватил метод GetSerializedClientCertContext: https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/platform-apis/dd433051 (v% 3Dvs.85)
Но я не могу понять, какой формат интерфейса ожидается.
Я попытался передать структуру CERT_CONTEXT, необработанные данные X509 (CERT_CONTEXT.pbCertEncoded data), но безуспешно.
Используемый код (Delphi):
CERT_CONTEXT
function TCheckLPGC.SelCertificado(Sender: TObject; out ppbCert: PByte; var pcbCert: DWORD): HResult;
var
pCert: PCCERT_CONTEXT;
begin
pCert := CertIdToCertContext('0000000000000000000000000000000000000000');
pcbCert := SizeOf(CCERT_CONTEXT);
ppbCert := AllocMem(pcbCert);
CopyMemory(ppbCert, pCert, pcbCert);
Result := S_OK;
end;
X509 необработанные данные
function TCheckLPGC.SelCertificado(Sender: TObject; out ppbCert: PByte; var pcbCert: DWORD): HResult;
var
pCert: PCCERT_CONTEXT;
begin
pCert := CertIdToCertContext('0000000000000000000000000000000000000000');
pcbCert := pCert.cbCertEncoded;
ppbCert := AllocMem(pcbCert);
CopyMemory(ppbCert, pCert.pbCertEncoded, pcbCert);
Result := S_OK;
end;
TIA