libidav/crypto.h

changeset 688
d405d2ac78e6
parent 520
da2b0cc44e4f
child 689
b1f7d83f6e69
--- 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>
 

mercurial