#include "capi.h" #include "library.h" #include #define LIBRARY_RESOLVE(fn, lib, fn_name) fn = lib->resolve(lib, fn_name); if (fn == NULL) return false bool capi_function_list_init(library_t *lib, capi_function_list_t *fl) { assert(lib != NULL); assert(fl != NULL); LIBRARY_RESOLVE(fl->CertCloseStore, lib, "CertCloseStore"); LIBRARY_RESOLVE(fl->CertFindCertificateInStore, lib, "CertFindCertificateInStore"); LIBRARY_RESOLVE(fl->CertFreeCertificateContext, lib, "CertFreeCertificateContext"); LIBRARY_RESOLVE(fl->CertGetCertificateContextProperty, lib, "CertGetCertificateContextProperty"); LIBRARY_RESOLVE(fl->CertOpenStore, lib, "CertOpenStore"); LIBRARY_RESOLVE(fl->CertSetCertificateContextProperty, lib, "CertSetCertificateContextProperty"); LIBRARY_RESOLVE(fl->CryptAcquireCertificatePrivateKey, lib, "CryptAcquireCertificatePrivateKey"); LIBRARY_RESOLVE(fl->CryptCreateHash, lib, "CryptCreateHash"); LIBRARY_RESOLVE(fl->CryptDestroyHash, lib, "CryptDestroyHash"); LIBRARY_RESOLVE(fl->CryptHashData, lib, "CryptHashData"); LIBRARY_RESOLVE(fl->CryptReleaseContext, lib, "CryptReleaseContext"); LIBRARY_RESOLVE(fl->CryptSignMessage, lib, "CryptSignMessage"); LIBRARY_RESOLVE(fl->GetLastError, lib, "GetLastError"); LIBRARY_RESOLVE(fl->CryptImportPublicKeyInfo, lib, "CryptImportPublicKeyInfo"); LIBRARY_RESOLVE(fl->CryptDestroyKey, lib, "CryptDestroyKey"); #ifdef UNICODE LIBRARY_RESOLVE(fl->CryptSignHash, lib, "CryptSignHashW"); LIBRARY_RESOLVE(fl->CryptVerifySignature, lib, "CryptVerifySignatureW"); LIBRARY_RESOLVE(fl->CryptAcquireContext, lib, "CryptAcquireContextW"); #else LIBRARY_RESOLVE(fl->CryptSignHash, lib, "CryptSignHashA"); LIBRARY_RESOLVE(fl->CryptVerifySignature, lib, "CryptVerifySignatureA"); LIBRARY_RESOLVE(fl->CryptAcquireContext, lib, "CryptAcquireContextA"); #endif // !UNICODE return true; }