|
@@ -294,8 +294,23 @@ final class AESTests: XCTestCase {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- func testAES_encrypt_performance() {
|
|
|
|
- #if !CI
|
|
|
|
|
|
+ func testAESWithWrongKey() {
|
|
|
|
+ let key:Array<UInt8> = [0x2b,0x7e,0x15,0x16,0x28,0xae,0xd2,0xa6,0xab,0xf7,0x15,0x88,0x09,0xcf,0x4f,0x3c];
|
|
|
|
+ let key2:Array<UInt8> = [0x22,0x7e,0x15,0x16,0x28,0xae,0xd2,0xa6,0xab,0xf7,0x15,0x88,0x09,0xcf,0x4f,0x33];
|
|
|
|
+ let iv:Array<UInt8> = [0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F]
|
|
|
|
+ let plaintext:Array<UInt8> = [49, 46, 50, 50, 50, 51, 51, 51, 51]
|
|
|
|
+
|
|
|
|
+ let aes = try! AES(key: key, iv:iv, blockMode: .CBC, padding: PKCS7())
|
|
|
|
+ let aes2 = try! AES(key: key2, iv:iv, blockMode: .CBC, padding: PKCS7())
|
|
|
|
+ let encrypted = try! aes.encrypt(plaintext)
|
|
|
|
+ let decrypted = try? aes2.decrypt(encrypted)
|
|
|
|
+ XCTAssertTrue(decrypted! != plaintext, "failed")
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+#if !CI
|
|
|
|
+extension AESTests {
|
|
|
|
+ func testAESEncryptPerformance() {
|
|
let key:Array<UInt8> = [0x2b,0x7e,0x15,0x16,0x28,0xae,0xd2,0xa6,0xab,0xf7,0x15,0x88,0x09,0xcf,0x4f,0x3c];
|
|
let key:Array<UInt8> = [0x2b,0x7e,0x15,0x16,0x28,0xae,0xd2,0xa6,0xab,0xf7,0x15,0x88,0x09,0xcf,0x4f,0x3c];
|
|
let iv:Array<UInt8> = [0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F]
|
|
let iv:Array<UInt8> = [0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F]
|
|
let message = Array<UInt8>(repeating: 7, count: 1024 * 1024)
|
|
let message = Array<UInt8>(repeating: 7, count: 1024 * 1024)
|
|
@@ -303,11 +318,9 @@ final class AESTests: XCTestCase {
|
|
measureMetrics([XCTPerformanceMetric_WallClockTime], automaticallyStartMeasuring: true, for: { () -> Void in
|
|
measureMetrics([XCTPerformanceMetric_WallClockTime], automaticallyStartMeasuring: true, for: { () -> Void in
|
|
_ = try! aes.encrypt(message)
|
|
_ = try! aes.encrypt(message)
|
|
})
|
|
})
|
|
- #endif
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- func testAES_decrypt_performance() {
|
|
|
|
- #if !CI
|
|
|
|
|
|
+ func testAESDecryptPerformance() {
|
|
let key:Array<UInt8> = [0x2b,0x7e,0x15,0x16,0x28,0xae,0xd2,0xa6,0xab,0xf7,0x15,0x88,0x09,0xcf,0x4f,0x3c];
|
|
let key:Array<UInt8> = [0x2b,0x7e,0x15,0x16,0x28,0xae,0xd2,0xa6,0xab,0xf7,0x15,0x88,0x09,0xcf,0x4f,0x3c];
|
|
let iv:Array<UInt8> = [0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F]
|
|
let iv:Array<UInt8> = [0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F]
|
|
let message = Array<UInt8>(repeating: 7, count: 1024 * 1024)
|
|
let message = Array<UInt8>(repeating: 7, count: 1024 * 1024)
|
|
@@ -315,41 +328,41 @@ final class AESTests: XCTestCase {
|
|
measureMetrics([XCTPerformanceMetric_WallClockTime], automaticallyStartMeasuring: true, for: { () -> Void in
|
|
measureMetrics([XCTPerformanceMetric_WallClockTime], automaticallyStartMeasuring: true, for: { () -> Void in
|
|
_ = try! aes.decrypt(message)
|
|
_ = try! aes.decrypt(message)
|
|
})
|
|
})
|
|
- #endif
|
|
|
|
}
|
|
}
|
|
|
|
+}
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+extension AESTests {
|
|
|
|
+ static func allTests() -> [(String, (AESTests) -> () -> Void)] {
|
|
|
|
+ var tests = [
|
|
|
|
+ ("testAESEncrypt2", testAESEncrypt2),
|
|
|
|
+ ("testAESEncrypt3", testAESEncrypt3),
|
|
|
|
+ ("testAESEncrypt", testAESEncrypt),
|
|
|
|
+ ("testAESEncryptCBCNoPadding", testAESEncryptCBCNoPadding),
|
|
|
|
+ ("testAESEncryptCBCWithPadding", testAESEncryptCBCWithPadding),
|
|
|
|
+ ("testAESEncryptCBCWithPaddingPartial", testAESEncryptCBCWithPaddingPartial),
|
|
|
|
+ ("testAESEncryptIncremental", testAESEncryptIncremental),
|
|
|
|
+ ("testAESDecryptCBCWithPaddingPartial", testAESDecryptCBCWithPaddingPartial),
|
|
|
|
+ ("testAESEncryptCFB", testAESEncryptCFB),
|
|
|
|
+ ("testAESEncryptCFBLong", testAESEncryptCFBLong),
|
|
|
|
+ ("testAESEncryptOFB128", testAESEncryptOFB128),
|
|
|
|
+ ("testAESEncryptOFB256", testAESEncryptOFB256),
|
|
|
|
+ ("testAESEncryptPCBC256", testAESEncryptPCBC256),
|
|
|
|
+ ("testAESEncryptCTR", testAESEncryptCTR),
|
|
|
|
+ ("testAESEncryptCTRIrregularLength", testAESEncryptCTRIrregularLength),
|
|
|
|
+ ("testAESDecryptCTRSeek", testAESDecryptCTRSeek),
|
|
|
|
+ ("testAESEncryptCTRIrregularLengthIncrementalUpdate", testAESEncryptCTRIrregularLengthIncrementalUpdate),
|
|
|
|
+ ("testIssue298", testIssue298),
|
|
|
|
+ ("testAESWithWrongKey", testAESWithWrongKey)
|
|
|
|
+ ]
|
|
|
|
|
|
- func testAESWithWrongKey() {
|
|
|
|
- let key:Array<UInt8> = [0x2b,0x7e,0x15,0x16,0x28,0xae,0xd2,0xa6,0xab,0xf7,0x15,0x88,0x09,0xcf,0x4f,0x3c];
|
|
|
|
- let key2:Array<UInt8> = [0x22,0x7e,0x15,0x16,0x28,0xae,0xd2,0xa6,0xab,0xf7,0x15,0x88,0x09,0xcf,0x4f,0x33];
|
|
|
|
- let iv:Array<UInt8> = [0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F]
|
|
|
|
- let plaintext:Array<UInt8> = [49, 46, 50, 50, 50, 51, 51, 51, 51]
|
|
|
|
-
|
|
|
|
- let aes = try! AES(key: key, iv:iv, blockMode: .CBC, padding: PKCS7())
|
|
|
|
- let aes2 = try! AES(key: key2, iv:iv, blockMode: .CBC, padding: PKCS7())
|
|
|
|
- let encrypted = try! aes.encrypt(plaintext)
|
|
|
|
- let decrypted = try? aes2.decrypt(encrypted)
|
|
|
|
- XCTAssertTrue(decrypted! != plaintext, "failed")
|
|
|
|
|
|
+ #if !CI
|
|
|
|
+ tests += [
|
|
|
|
+ ("testAESEncryptPerformance", testAESEncryptPerformance),
|
|
|
|
+ ("testAESDecryptPerformance", testAESDecryptPerformance)
|
|
|
|
+ ]
|
|
|
|
+ #endif
|
|
|
|
+ return tests
|
|
}
|
|
}
|
|
-
|
|
|
|
- static let allTests = [
|
|
|
|
- ("testAESEncrypt2", testAESEncrypt2),
|
|
|
|
- ("testAESEncrypt3", testAESEncrypt3),
|
|
|
|
- ("testAESEncrypt", testAESEncrypt),
|
|
|
|
- ("testAESEncryptCBCNoPadding", testAESEncryptCBCNoPadding),
|
|
|
|
- ("testAESEncryptCBCWithPadding", testAESEncryptCBCWithPadding),
|
|
|
|
- ("testAESEncryptCBCWithPaddingPartial", testAESEncryptCBCWithPaddingPartial),
|
|
|
|
- ("testAESEncryptIncremental", testAESEncryptIncremental),
|
|
|
|
- ("testAESDecryptCBCWithPaddingPartial", testAESDecryptCBCWithPaddingPartial),
|
|
|
|
- ("testAESEncryptCFB", testAESEncryptCFB),
|
|
|
|
- ("testAESEncryptCFBLong", testAESEncryptCFBLong),
|
|
|
|
- ("testAESEncryptOFB128", testAESEncryptOFB128),
|
|
|
|
- ("testAESEncryptOFB256", testAESEncryptOFB256),
|
|
|
|
- ("testAESEncryptPCBC256", testAESEncryptPCBC256),
|
|
|
|
- ("testAESEncryptCTR", testAESEncryptCTR),
|
|
|
|
- ("testAESEncryptCTRIrregularLength", testAESEncryptCTRIrregularLength),
|
|
|
|
- ("testAESDecryptCTRSeek", testAESDecryptCTRSeek),
|
|
|
|
- ("testAESEncryptCTRIrregularLengthIncrementalUpdate", testAESEncryptCTRIrregularLengthIncrementalUpdate),
|
|
|
|
- ("testIssue298", testIssue298),
|
|
|
|
- ("testAESWithWrongKey", testAESWithWrongKey)
|
|
|
|
- ]
|
|
|
|
}
|
|
}
|