HEIMDAL: move code from source4/heimdal* to third_party/heimdal*
[samba.git] / source4 / heimdal / lib / hcrypto / evp-w32.c
diff --git a/source4/heimdal/lib/hcrypto/evp-w32.c b/source4/heimdal/lib/hcrypto/evp-w32.c
deleted file mode 100644 (file)
index 7d14d1f..0000000
+++ /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 <config.h>
-#include <roken.h>
-
-#include <assert.h>
-
-#include <evp.h>
-#include <evp-w32.h>
-#include <evp-hcrypto.h>
-
-#include <evp-wincng.h>
-
-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)