Ver Mensaje Individual
  #6  
Antiguo 14-11-2024
javipes javipes is offline
Miembro
 
Registrado: jul 2007
Posts: 25
Reputación: 0
javipes Va por buen camino
me vais a matar, hace falta la funcion para obtener el numero de serie del certificado




Código Delphi [-]
function SerialNum_Certificado(Nombre_Certificado: String): String;
var
  hStore: HCERTSTORE;
  PrevContext, CurContext: PCERT_CONTEXT;
  cbSize: DWORD;
  sNombre: String;
begin
  // Devuelve el Serial Number del certificado indicado
  Result := '';

  hStore := CertOpenSystemStore(0, PChar('MY'));
  if Assigned(hStore) then
  begin
    PrevContext := nil;
    CurContext := CertEnumCertificatesInStore(hStore, PrevContext);
    while Assigned(CurContext) do
    begin
      sNombre := '';
      cbSize := CertGetNameString(CurContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0,
        nil, nil, 0);
      if cbSize > 0 then
      begin
        SetLength(sNombre, cbSize - 1);
        CertGetNameString(CurContext, CERT_NAME_SIMPLE_DISPLAY_TYPE, 0, nil,
          PChar(sNombre), cbSize);
        if SameText(Nombre_Certificado, sNombre) then
        begin
          Result := GetCertSerialNumber(@CurContext^.pCertInfo^.SerialNumber);
          break;
        end;
      end;

      PrevContext := CurContext;
      CurContext := CertEnumCertificatesInStore(hStore, PrevContext);
    end;
  end;
end;


ahora ya creo que esta todo. SI echarais algo en falta me lo decis. Esto me ha funcionado en Delphi Berlin y en Delphi Alexandria
Responder Con Cita