﻿unit Wincrypt;

interface

uses
  Windows;

const
  CERT_STORE_PROV_SYSTEM = PAnsiChar(10);
  CERT_SYSTEM_STORE_CURRENT_USER = (1 shl 16);
  CERT_SYSTEM_STORE_LOCAL_MACHINE = (2 shl 16);
  X509_ASN_ENCODING = $00000001;
  PKCS_7_ASN_ENCODING = $00010000;
  CERT_FIND_ANY = 0;
  CERT_KEY_PROV_INFO_PROP_ID = 2;
  CERT_NAME_FRIENDLY_DISPLAY_TYPE = 5;
  CERT_NAME_SIMPLE_DISPLAY_TYPE = 4;

// --- SECCIÓN AÑADIDA QUE FALTABA ---
type
  HCRYPTPROV = THandle; // Definición del tipo que faltaba
  HCERTSTORE = Pointer;
  PCCERT_CONTEXT = Pointer;
// --- FIN DE LA SECCIÓN AÑADIDA ---

function CertOpenSystemStore(hProv: HCRYPTPROV; szSubsystemProtocol: PAnsiChar): HCERTSTORE; stdcall; external 'crypt32.dll' name 'CertOpenSystemStoreA';
function CertCloseStore(hCertStore: HCERTSTORE; dwFlags: DWORD): BOOL; stdcall; external 'crypt32.dll';
function CertFindCertificateInStore(hCertStore: HCERTSTORE; dwCertEncodingType: DWORD; dwFindFlags: DWORD; dwFindType: DWORD; pvFindPara: Pointer; pPrevCertContext: PCCERT_CONTEXT): PCCERT_CONTEXT; stdcall; external 'crypt32.dll';
function CertGetCertificateContextProperty(pCertContext: PCCERT_CONTEXT; dwPropId: DWORD; pvData: Pointer; out pcbData: DWORD): BOOL; stdcall; external 'crypt32.dll';
function CertGetNameString(pCertContext: PCCERT_CONTEXT; dwType: DWORD; dwFlags: DWORD; pvTypePara: Pointer; pszNameString: LPWSTR; cchNameString: DWORD): DWORD; stdcall; external 'crypt32.dll' name 'CertGetNameStringW';
function CertDuplicateCertificateContext(pCertContext: PCCERT_CONTEXT): PCCERT_CONTEXT; stdcall; external 'crypt32.dll';
function CertFreeCertificateContext(pCertContext: PCCERT_CONTEXT): BOOL; stdcall; external 'crypt32.dll';

implementation

end.
