浏览代码

Build on Windows

Marcin Krzyzanowski 4 年之前
父节点
当前提交
24551cd888

+ 2 - 0
CHANGELOG

@@ -1,3 +1,5 @@
+- Windows support
+
 1.3.5
 - Re-release binary framework due to codesign issue
 

+ 5 - 3
Sources/CryptoSwift/BlockMode/CCM.swift

@@ -17,9 +17,11 @@
 // https://csrc.nist.gov/publications/detail/sp/800-38c/final
 
 #if canImport(Darwin)
-  import Darwin
-#else
-  import Glibc
+import Darwin
+#elseif canImport(Glibc)
+import Glibc
+#elseif canImport(ucrt)
+import ucrt
 #endif
 
 /// Counter with Cipher Block Chaining-Message Authentication Code

+ 5 - 3
Sources/CryptoSwift/Cryptors.swift

@@ -14,9 +14,11 @@
 //
 
 #if canImport(Darwin)
-  import Darwin
-#else
-  import Glibc
+import Darwin
+#elseif canImport(Glibc)
+import Glibc
+#elseif canImport(ucrt)
+import ucrt
 #endif
 
 /// Worker cryptor/decryptor of `Updatable` types

+ 5 - 3
Sources/CryptoSwift/HKDF.swift

@@ -17,9 +17,11 @@
 //
 
 #if canImport(Darwin)
-  import Darwin
-#else
-  import Glibc
+import Darwin
+#elseif canImport(Glibc)
+import Glibc
+#elseif canImport(ucrt)
+import ucrt
 #endif
 
 /// A key derivation function.

+ 5 - 3
Sources/CryptoSwift/Int+Extension.swift

@@ -15,9 +15,11 @@
 //
 
 #if canImport(Darwin)
-  import Darwin
-#else
-  import Glibc
+import Darwin
+#elseif canImport(Glibc)
+import Glibc
+#elseif canImport(ucrt)
+import ucrt
 #endif
 
 extension FixedWidthInteger {

+ 5 - 3
Sources/CryptoSwift/PKCS/PBKDF2.swift

@@ -17,9 +17,11 @@
 //
 
 #if canImport(Darwin)
-  import Darwin
-#else
-  import Glibc
+import Darwin
+#elseif canImport(Glibc)
+import Glibc
+#elseif canImport(ucrt)
+import ucrt
 #endif
 
 public extension PKCS5 {

+ 5 - 3
Sources/CryptoSwift/SHA3.swift

@@ -18,9 +18,11 @@
 //
 
 #if canImport(Darwin)
-  import Darwin
-#else
-  import Glibc
+import Darwin
+#elseif canImport(Glibc)
+import Glibc
+#elseif canImport(ucrt)
+import ucrt
 #endif
 
 public final class SHA3: DigestType {

+ 15 - 5
Sources/CryptoSwift/SecureBytes.swift

@@ -14,9 +14,11 @@
 //
 
 #if canImport(Darwin)
-  import Darwin
-#else
-  import Glibc
+import Darwin
+#elseif canImport(Glibc)
+import Glibc
+#elseif canImport(WinSDK)
+import WinSDK
 #endif
 
 typealias Key = SecureBytes
@@ -31,13 +33,21 @@ final class SecureBytes {
     self.bytes = bytes
     self.count = bytes.count
     self.bytes.withUnsafeBufferPointer { (pointer) -> Void in
-      mlock(pointer.baseAddress, pointer.count)
+      #if os(Windows)
+        VirtualLock(UnsafeMutableRawPointer(mutating: pointer.baseAddress), SIZE_T(pointer.count))
+      #else
+        mlock(pointer.baseAddress, pointer.count)
+      #endif
     }
   }
 
   deinit {
     self.bytes.withUnsafeBufferPointer { (pointer) -> Void in
-      munlock(pointer.baseAddress, pointer.count)
+      #if os(Windows)
+        VirtualUnlock(UnsafeMutableRawPointer(mutating: pointer.baseAddress), SIZE_T(pointer.count))
+      #else
+        munlock(pointer.baseAddress, pointer.count)
+      #endif
     }
   }
 }

+ 5 - 3
Sources/CryptoSwift/UInt32+Extension.swift

@@ -14,9 +14,11 @@
 //
 
 #if canImport(Darwin)
-  import Darwin
-#else
-  import Glibc
+import Darwin
+#elseif canImport(Glibc)
+import Glibc
+#elseif canImport(ucrt)
+import ucrt
 #endif
 
 protocol _UInt32Type {}

+ 5 - 3
Sources/CryptoSwift/UInt8+Extension.swift

@@ -14,9 +14,11 @@
 //
 
 #if canImport(Darwin)
-  import Darwin
-#else
-  import Glibc
+import Darwin
+#elseif canImport(Glibc)
+import Glibc
+#elseif canImport(ucrt)
+import ucrt
 #endif
 
 public protocol _UInt8Type {}