--- a/libidav/crypto.h Mon Dec 02 13:29:36 2019 +0100 +++ b/libidav/crypto.h Wed Dec 04 11:47:51 2019 +0100 @@ -34,6 +34,9 @@ #ifdef __APPLE__ /* macos */ + +#define DAV_CRYPTO_COMMON_CRYPTO + #define DAV_AES_CTX CCCryptorRef #define DAV_SHA_CTX CC_SHA256_CTX #define DAV_SHA256_DIGEST_LENGTH 32 @@ -41,14 +44,42 @@ #include <CommonCrypto/CommonCrypto.h> #include <CommonCrypto/CommonDigest.h> +#elif defined(_WIN32) + +#define DAV_CRYPTO_CNG + +#include <windows.h> +#include <bcrypt.h> + +typedef struct WinBCryptCTX { + BCRYPT_ALG_HANDLE hAlg; + BCRYPT_KEY_HANDLE hKey; + void *pbKeyObject; + unsigned char pbIV[16]; + + char buf[16]; + size_t buflen; +} WinBCryptCTX; + +typedef struct WinBCryptSHACTX { + BCRYPT_ALG_HANDLE hAlg; + BCRYPT_HASH_HANDLE hHash; + void *pbHashObject; +} WinBCryptSHACTX; + +#define DAV_AES_CTX WinBCryptCTX +#define DAV_SHA_CTX WinBCryptSHACTX +#define DAV_SHA256_DIGEST_LENGTH 32 + #else -/* unix/linux and still windows */ +/* unix/linux */ + +#define DAV_USE_OPENSSL + #define DAV_AES_CTX EVP_CIPHER_CTX* #define DAV_SHA_CTX SHA256_CTX #define DAV_SHA256_DIGEST_LENGTH 32 -#define DAV_USE_OPENSSL - #include <openssl/evp.h> #include <openssl/rand.h>