X-Git-Url: http://git.samba.org/?p=samba.git;a=blobdiff_plain;f=source4%2Fheimdal%2Flib%2Fhcrypto%2Fevp-w32.c;fp=source4%2Fheimdal%2Flib%2Fhcrypto%2Fevp-w32.c;h=0000000000000000000000000000000000000000;hp=7d14d1f4f30979265ed64771ca28865d43b04894;hb=7055827b8ffd3823c1240ba3f0b619dd6068cd51;hpb=1954e50f266256c9e153c9613f49f9d9f5dbf67b diff --git a/source4/heimdal/lib/hcrypto/evp-w32.c b/source4/heimdal/lib/hcrypto/evp-w32.c deleted file mode 100644 index 7d14d1f4f30..00000000000 --- a/source4/heimdal/lib/hcrypto/evp-w32.c +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (c) 2015, Secure Endpoints Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * Windows fallback provider: decides whether to use hcrypto or - * wincng depending on whether bcrypt.dll is available (i.e. it - * is runtime compatible back to XP, but will use the native - * crypto APIs from Vista onwards). - */ - -#include -#include - -#include - -#include -#include -#include - -#include - -static LONG wincng_available = -1; - -static __inline int -wincng_check_availability(void) -{ - if (wincng_available == -1) { - char szBCryptDllPath[MAX_PATH]; - UINT cbBCryptDllPath; - - cbBCryptDllPath = GetSystemDirectory(szBCryptDllPath, - sizeof(szBCryptDllPath)); - if (cbBCryptDllPath > 0 && - cbBCryptDllPath < sizeof(szBCryptDllPath) && - strncat_s(szBCryptDllPath, - sizeof(szBCryptDllPath), "\\bcrypt.dll", 11) == 0) { - HANDLE hBCryptDll = LoadLibrary(szBCryptDllPath); - - InterlockedCompareExchangeRelease(&wincng_available, - !!hBCryptDll, -1); - if (hBCryptDll) - FreeLibrary(hBCryptDll); - } - } - - return wincng_available == 1; -} - -BOOL WINAPI -_hc_w32crypto_DllMain(HINSTANCE hinstDLL, - DWORD fdwReason, - LPVOID lpvReserved) -{ - if (fdwReason == DLL_PROCESS_DETACH) { - /* - * Don't bother cleaning up on process exit, only on - * FreeLibrary() (in which case lpvReserved will be NULL). - */ - if (lpvReserved == NULL) - _hc_wincng_cleanup(); - } - - return TRUE; -} - -#define EVP_W32CRYPTO_PROVIDER(type, name) \ - \ - const type *hc_EVP_w32crypto_ ##name (void) \ - { \ - if (wincng_check_availability()) \ - return hc_EVP_wincng_ ##name (); \ - else if (HCRYPTO_FALLBACK) \ - return hc_EVP_hcrypto_ ##name (); \ - else \ - return NULL; \ - } - -#define EVP_W32CRYPTO_PROVIDER_CNG_UNAVAILABLE(type, name) \ - \ - const type *hc_EVP_w32crypto_ ##name (void) \ - { \ - return hc_EVP_hcrypto_ ##name (); \ - } - -EVP_W32CRYPTO_PROVIDER(EVP_MD, md2) -EVP_W32CRYPTO_PROVIDER(EVP_MD, md4) -EVP_W32CRYPTO_PROVIDER(EVP_MD, md5) -EVP_W32CRYPTO_PROVIDER(EVP_MD, sha1) -EVP_W32CRYPTO_PROVIDER(EVP_MD, sha256) -EVP_W32CRYPTO_PROVIDER(EVP_MD, sha384) -EVP_W32CRYPTO_PROVIDER(EVP_MD, sha512) - -EVP_W32CRYPTO_PROVIDER(EVP_CIPHER, rc2_cbc) -EVP_W32CRYPTO_PROVIDER(EVP_CIPHER, rc2_40_cbc) -EVP_W32CRYPTO_PROVIDER(EVP_CIPHER, rc2_64_cbc) - -EVP_W32CRYPTO_PROVIDER(EVP_CIPHER, rc4) -EVP_W32CRYPTO_PROVIDER(EVP_CIPHER, rc4_40) - -EVP_W32CRYPTO_PROVIDER(EVP_CIPHER, des_cbc) -EVP_W32CRYPTO_PROVIDER(EVP_CIPHER, des_ede3_cbc) - -EVP_W32CRYPTO_PROVIDER(EVP_CIPHER, aes_128_cbc) -EVP_W32CRYPTO_PROVIDER(EVP_CIPHER, aes_192_cbc) -EVP_W32CRYPTO_PROVIDER(EVP_CIPHER, aes_256_cbc) - -EVP_W32CRYPTO_PROVIDER(EVP_CIPHER, aes_128_cfb8) -EVP_W32CRYPTO_PROVIDER(EVP_CIPHER, aes_192_cfb8) -EVP_W32CRYPTO_PROVIDER(EVP_CIPHER, aes_256_cfb8) - -EVP_W32CRYPTO_PROVIDER_CNG_UNAVAILABLE(EVP_CIPHER, camellia_128_cbc) -EVP_W32CRYPTO_PROVIDER_CNG_UNAVAILABLE(EVP_CIPHER, camellia_192_cbc) -EVP_W32CRYPTO_PROVIDER_CNG_UNAVAILABLE(EVP_CIPHER, camellia_256_cbc)