ervu-sign-module/src/utils/capi.c

43 lines
1.9 KiB
C

#include "capi.h"
#include "library.h"
#include <assert.h>
#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;
}