Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #25  
Antiguo 04-10-2023
Garada Garada is offline
Miembro
 
Registrado: jul 2004
Posts: 66
Poder: 20
Garada Va por buen camino
Y esta es la modificación para leer varios PFX y pasarlos al THttpClient
Si hay alguna función que no tengas declarada avisa.

Código Delphi [-]
function CertAddCertificateContextToStore(hCertStore: HCERTSTORE;
                                          pCertContext: PCCERT_CONTEXT;
                                          dwAddDisposition: DWORD;
                                          ppStoreContext: PCCERT_CONTEXT): BOOL; stdcall; external 'Crypt32.dll';

class function TWinHttpLib.GetCertStore: HCERTSTORE;

  procedure AddPFX(f: string);
  const
    CERT_STORE_ADD_USE_EXISTING = 2;
    Pass = 'LaContraseña';
  var
    pTmpStore: HCERTSTORE;
    pCert: PCERT_CONTEXT;
    DataBlob: CRYPT_DATA_BLOB;
    PFX: TBytes;
  begin
    PFX := TFile.ReadAllBytes(f);

    DataBlob.cbData := Length(PFX);
    DataBlob.pbData := @PFX[0];

    // se lee el pfx en un almacen en memoria
    pTmpStore := PFXImportCertStore(@DataBlob, PWideChar(Pass), 0);

    // se copian los certificados al almacen que usa el HttpClient
    pCert := CertEnumCertificatesInStore(pTmpStore, nil);
    while pCert <> nil do
    begin
      if not CertAddCertificateContextToStore(FStore, pCert, CERT_STORE_ADD_USE_EXISTING, nil) then
        RaiseLastOSError;

      pCert := CertEnumCertificatesInStore(pTmpStore, pCert);
    end;

    CertCloseStore(pTmpStore, 0);
  end;

begin
  FLock.Enter;
  try
    if FStore = nil then
    begin
      // almacen temporal en memoria para el HttpClient
      FStore := CertOpenStore(sz_CERT_STORE_PROV_MEMORY, 0, 0, 0, nil);

      AddPFX('certificado1.pfx');
      AddPFX('certificado2.pfx');
    end;

    Result := FStore;
  finally
    FLock.Leave;
  end;
end;
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
acceder a Webservice con certificado de cliente iMia Internet 8 13-09-2022 11:20:58
Conectar Webservice con httpRio+Certificado gasal Internet 2 20-07-2018 17:11:08
Como leer un TRemotable que proviene de un webservice apicito Internet 17 02-09-2011 22:48:41
SOAP POST - Webservice con Certificado y SSL JXJ Varios 5 09-05-2011 20:11:08


La franja horaria es GMT +2. Ahora son las 04:07:31.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi