Selaa lähdekoodia

Merge branch 'main'

Conflicts:
	Sources/CryptoSwift/RSA.swift
	Tests/CryptoSwiftTests/RSATests.swift
Brandon Toms 3 vuotta sitten
vanhempi
commit
4a84abcc3d
8 muutettua tiedostoa jossa 41 lisäystä ja 14 poistoa
  1. 1 0
      .gitignore
  2. 2 1
      .mailmap
  3. 4 0
      .spi.yml
  4. 2 0
      CONTRIBUTORS.txt
  5. 7 0
      Package.swift
  6. 1 1
      README.md
  7. 15 7
      Sources/CryptoSwift/Blowfish.swift
  8. 9 5
      Tests/CryptoSwiftTests/RSATests.swift

+ 1 - 0
.gitignore

@@ -16,6 +16,7 @@ DerivedData
 *.xcuserstate
 *.xcuserstate
 timeline.xctimeline
 timeline.xctimeline
 .swiftpm/xcode
 .swiftpm/xcode
+Package.resolved
 CryptoSwift.xcframework
 CryptoSwift.xcframework
 
 
 /Framework
 /Framework

+ 2 - 1
.mailmap

@@ -2,4 +2,5 @@ Marcin Krzyzanowski <marcin.krzyzanowski@gmail.com> <758033+krzyzanowskim@users.
 Marcin Krzyzanowski <marcin.krzyzanowski@gmail.com> <krzyzanowskim@users.noreply.github.com>
 Marcin Krzyzanowski <marcin.krzyzanowski@gmail.com> <krzyzanowskim@users.noreply.github.com>
 Marcin Krzyzanowski <marcin.krzyzanowski@gmail.com> <marcin@krzyzanowskim.com>
 Marcin Krzyzanowski <marcin.krzyzanowski@gmail.com> <marcin@krzyzanowskim.com>
 Marcin Krzyzanowski <marcin.krzyzanowski@gmail.com> <marcin.krzyzanowski@gmail.com>
 Marcin Krzyzanowski <marcin.krzyzanowski@gmail.com> <marcin.krzyzanowski@gmail.com>
-Luis Reisewitz <reisewitz@me.com> <zweigraf@users.noreply.github.com>
+Luis Reisewitz <reisewitz@me.com> <zweigraf@users.noreply.github.com>
+Nathan Fallet <contact@nathanfallet.me> <nathan.fallet@gmail.com>

+ 4 - 0
.spi.yml

@@ -0,0 +1,4 @@
+version: 1
+builder:
+  configs:
+    - documentation_targets: [CryptoSwift]

+ 2 - 0
CONTRIBUTORS.txt

@@ -18,6 +18,7 @@ organizations who have contributed source code to CryptoSwift.
 - Bart Cone <cone.bart@gmail.com>
 - Bart Cone <cone.bart@gmail.com>
 - Bing Cheung <32565605+eungch@users.noreply.github.com>
 - Bing Cheung <32565605+eungch@users.noreply.github.com>
 - Bogdan Bystritskiy <q80061@gmail.com>
 - Bogdan Bystritskiy <q80061@gmail.com>
+- Brandon Toms <btoms.20@gmail.com>
 - Brice Cesarin <bc@dejamobile.com>
 - Brice Cesarin <bc@dejamobile.com>
 - Bruce Geerdes <bruce@vdub.software>
 - Bruce Geerdes <bruce@vdub.software>
 - Bryan Chen <xlchen1291@gmail.com>
 - Bryan Chen <xlchen1291@gmail.com>
@@ -32,6 +33,7 @@ organizations who have contributed source code to CryptoSwift.
 - Dave Wood <dave@cerebralgardens.com>
 - Dave Wood <dave@cerebralgardens.com>
 - Dima Kalachov <dima.kalachov@gmail.com>
 - Dima Kalachov <dima.kalachov@gmail.com>
 - Dusan Klinec <dusan.klinec@gmail.com>
 - Dusan Klinec <dusan.klinec@gmail.com>
+- Elaine Lyons <e.lyons@fetchrewards.com>
 - Eneko Alonso <eneko.alonso@gmail.com>
 - Eneko Alonso <eneko.alonso@gmail.com>
 - Eugene Berdnikov <eberdnikov@outlook.com>
 - Eugene Berdnikov <eberdnikov@outlook.com>
 - Evan Maloney <emaloney@gilt.com>
 - Evan Maloney <emaloney@gilt.com>

+ 7 - 0
Package.swift

@@ -20,3 +20,10 @@ let package = Package(
   ],
   ],
   swiftLanguageVersions: [.v5]
   swiftLanguageVersions: [.v5]
 )
 )
+
+#if swift(>=5.6)
+  // Add the documentation compiler plugin if possible
+  package.dependencies.append(
+    .package(url: "https://github.com/apple/swift-docc-plugin", from: "1.0.0")
+  )
+#endif

+ 1 - 1
README.md

@@ -546,7 +546,7 @@ do {
 RSA key generation
 RSA key generation
 
 
 ```swift
 ```swift
-let rsa = RSA(keySize: 2048) // This generates a modulus, public exponent and private exponent with the given size
+let rsa = try RSA(keySize: 2048) // This generates a modulus, public exponent and private exponent with the given size
 ```
 ```
 
 
 ## Author
 ## Author

+ 15 - 7
Sources/CryptoSwift/Blowfish.swift

@@ -329,12 +329,20 @@ public final class Blowfish {
   }
   }
 
 
   private func setupBlockModeWorkers() throws {
   private func setupBlockModeWorkers() throws {
-    self.encryptWorker = try self.blockMode.worker(blockSize: Blowfish.blockSize, cipherOperation: self.encrypt, encryptionOperation: self.encrypt)
+    let decryptBlock = { [weak self] (block: ArraySlice<UInt8>) -> Array<UInt8>? in
+      self?.decrypt(block: block)
+    }
+
+    let encryptBlock = { [weak self] (block: ArraySlice<UInt8>) -> Array<UInt8>? in
+      self?.encrypt(block: block)
+    }
+
+    self.encryptWorker = try self.blockMode.worker(blockSize: Blowfish.blockSize, cipherOperation: encryptBlock, encryptionOperation: encryptBlock)
 
 
     if self.blockMode.options.contains(.useEncryptToDecrypt) {
     if self.blockMode.options.contains(.useEncryptToDecrypt) {
-      self.decryptWorker = try self.blockMode.worker(blockSize: Blowfish.blockSize, cipherOperation: self.encrypt, encryptionOperation: self.encrypt)
+      self.decryptWorker = try self.blockMode.worker(blockSize: Blowfish.blockSize, cipherOperation: encryptBlock, encryptionOperation: encryptBlock)
     } else {
     } else {
-      self.decryptWorker = try self.blockMode.worker(blockSize: Blowfish.blockSize, cipherOperation: self.decrypt, encryptionOperation: self.encrypt)
+      self.decryptWorker = try self.blockMode.worker(blockSize: Blowfish.blockSize, cipherOperation: decryptBlock, encryptionOperation: encryptBlock)
     }
     }
   }
   }
 
 
@@ -376,13 +384,13 @@ public final class Blowfish {
     }
     }
   }
   }
 
 
-  fileprivate func encrypt(block: ArraySlice<UInt8>) -> Array<UInt8>? {
+  private func encrypt(block: ArraySlice<UInt8>) -> Array<UInt8>? {
     var result = Array<UInt8>()
     var result = Array<UInt8>()
 
 
     var l = UInt32(bytes: block[block.startIndex..<block.startIndex.advanced(by: 4)])
     var l = UInt32(bytes: block[block.startIndex..<block.startIndex.advanced(by: 4)])
     var r = UInt32(bytes: block[block.startIndex.advanced(by: 4)..<block.startIndex.advanced(by: 8)])
     var r = UInt32(bytes: block[block.startIndex.advanced(by: 4)..<block.startIndex.advanced(by: 8)])
 
 
-    encryptBlowfishBlock(l: &l, r: &r)
+    self.encryptBlowfishBlock(l: &l, r: &r)
 
 
     // because everything is too complex to be solved in reasonable time o_O
     // because everything is too complex to be solved in reasonable time o_O
     result += [
     result += [
@@ -405,13 +413,13 @@ public final class Blowfish {
     return result
     return result
   }
   }
 
 
-  fileprivate func decrypt(block: ArraySlice<UInt8>) -> Array<UInt8>? {
+  private func decrypt(block: ArraySlice<UInt8>) -> Array<UInt8>? {
     var result = Array<UInt8>()
     var result = Array<UInt8>()
 
 
     var l = UInt32(bytes: block[block.startIndex..<block.startIndex.advanced(by: 4)])
     var l = UInt32(bytes: block[block.startIndex..<block.startIndex.advanced(by: 4)])
     var r = UInt32(bytes: block[block.startIndex.advanced(by: 4)..<block.startIndex.advanced(by: 8)])
     var r = UInt32(bytes: block[block.startIndex.advanced(by: 4)..<block.startIndex.advanced(by: 8)])
 
 
-    decryptBlowfishBlock(l: &l, r: &r)
+    self.decryptBlowfishBlock(l: &l, r: &r)
 
 
     // because everything is too complex to be solved in reasonable time o_O
     // because everything is too complex to be solved in reasonable time o_O
     result += [
     result += [

+ 9 - 5
Tests/CryptoSwiftTests/RSATests.swift

@@ -182,12 +182,16 @@ final class RSATests: XCTestCase {
       0x11, 0x22, 0x33, 0x44
       0x11, 0x22, 0x33, 0x44
     ]
     ]
 
 
-    let rsa = try! RSA(keySize: 2048)
-    // Sometimes the modulus size is 2047 bits, but it's okay (with two 1024 bits primes)
-    //XCTAssertEqual(rsa.keySize, 2048, "key size is not correct")
+    do {
+      let rsa = try RSA(keySize: 2048)
+      // Sometimes the modulus size is 2047 bits, but it's okay (with two 1024 bits primes)
+      //XCTAssertEqual(rsa.keySize, 2048, "key size is not correct")
 
 
-    let decrypted = try! rsa.decrypt(try! rsa.encrypt(message))
-    XCTAssertEqual(decrypted, message, "encrypt+decrypt failed")
+      let decrypted = try rsa.decrypt(rsa.encrypt(message))
+      XCTAssertEqual(decrypted, message, "encrypt+decrypt failed")
+    } catch {
+      XCTFail(error.localizedDescription)
+    }
   }
   }
 
 
   func testRSAKeys() {
   func testRSAKeys() {