43 lines
1.9 KiB
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;
|
|
}
|