Skip to content
This repository was archived by the owner on Dec 10, 2025. It is now read-only.

Commit fa4a05b

Browse files
author
Fernando Fernandes
committed
AESError is now AES.Error
1 parent f13a092 commit fa4a05b

5 files changed

Lines changed: 36 additions & 38 deletions

File tree

Sources/AESCryptable/AES.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public struct AES {
4343
public init(keyString: String) throws {
4444

4545
guard keyString.count == kCCKeySizeAES256 else {
46-
throw AESError.invalidKeySize
46+
throw AES.Error.invalidKeySize
4747
}
4848

4949
self.key = Data(keyString.utf8)

Sources/AESCryptable/AESCryptable.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ extension AES: Cryptable {
3333
guard let keyBytesBaseAddress = keyBytes.baseAddress,
3434
let dataToEncryptBytesBaseAddress = dataToEncryptBytes.baseAddress,
3535
let bufferBytesBaseAddress = bufferBytes.baseAddress else {
36-
throw AESError.encryptionFailed
36+
throw Error.encryptionFailed
3737
}
3838

3939
let cryptStatus: CCCryptorStatus = CCCrypt( // Stateless, one-shot encrypt operation
@@ -51,13 +51,13 @@ extension AES: Cryptable {
5151
)
5252

5353
guard cryptStatus == CCCryptorStatus(kCCSuccess) else {
54-
throw AESError.encryptionFailed
54+
throw Error.encryptionFailed
5555
}
5656
}
5757
}
5858
}
5959
} catch {
60-
throw AESError.encryptionFailed
60+
throw Error.encryptionFailed
6161
}
6262

6363
let encryptedData: Data = buffer[..<(numberBytesEncrypted + ivSize)]
@@ -81,7 +81,7 @@ extension AES: Cryptable {
8181
guard let keyBytesBaseAddress = keyBytes.baseAddress,
8282
let dataToDecryptBytesBaseAddress = dataToDecryptBytes.baseAddress,
8383
let bufferBytesBaseAddress = bufferBytes.baseAddress else {
84-
throw AESError.encryptionFailed
84+
throw Error.encryptionFailed
8585
}
8686

8787
let cryptStatus: CCCryptorStatus = CCCrypt( // Stateless, one-shot encrypt operation
@@ -99,19 +99,19 @@ extension AES: Cryptable {
9999
)
100100

101101
guard cryptStatus == CCCryptorStatus(kCCSuccess) else {
102-
throw AESError.decryptionFailed
102+
throw Error.decryptionFailed
103103
}
104104
}
105105
}
106106
}
107107
} catch {
108-
throw AESError.encryptionFailed
108+
throw Error.encryptionFailed
109109
}
110110

111111
let decryptedData: Data = buffer[..<numberBytesDecrypted]
112112

113113
guard let decryptedString = String(data: decryptedData, encoding: .utf8) else {
114-
throw AESError.dataToStringFailed
114+
throw Error.dataToStringFailed
115115
}
116116

117117
return decryptedString

Sources/AESCryptable/AESError.swift

Lines changed: 0 additions & 25 deletions
This file was deleted.

Sources/AESCryptable/AESExtension.swift

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,29 @@
99
import Foundation
1010
import CommonCrypto
1111

12+
// MARK: - Public Extension
13+
14+
public extension AES {
15+
16+
/// Encapsulates errors that may occur during AES encrypt / decrypt operations.
17+
///
18+
/// - invalidKeySize: The given key `String` count isn't equal to `kCCKeySizeAES256`.
19+
/// - emptyStringToEncrypt: The given `String` to encrypt is empty.
20+
/// - generateRandomIVFailed: Could not generate a random `iv` via `SecRandomCopyBytes(_:_:_:)`.
21+
/// - encryptDataFailed: `CCCryptorStatus` was different than `kCCSuccess` during an encryption operation.
22+
/// - stringToDataFailed: Failed to convert `String` into `Data` via `data(using:allowLossyConversion:)`.
23+
/// - decryptDataFailed: `CCCryptorStatus` was different than `kCCSuccess` during a decryption operation.
24+
/// - dataToStringFailed: Failed to convert `Data` into `String`. E.g.: via `String.init(bytes:encoding:)`.
25+
enum Error: Swift.Error {
26+
case invalidKeySize
27+
case emptyStringToEncrypt
28+
case generateRandomIVFailed
29+
case encryptionFailed
30+
case decryptionFailed
31+
case dataToStringFailed
32+
}
33+
}
34+
1235
// MARK: - Internal Extension
1336

1437
internal extension AES {
@@ -23,7 +46,7 @@ internal extension AES {
2346
try data.withUnsafeMutableBytes { dataBytes in
2447

2548
guard let dataBytesBaseAddress = dataBytes.baseAddress else {
26-
throw AESError.generateRandomIVFailed
49+
throw Error.generateRandomIVFailed
2750
}
2851

2952
let status: Int32 = SecRandomCopyBytes(
@@ -33,7 +56,7 @@ internal extension AES {
3356
)
3457

3558
guard status == 0 else {
36-
throw AESError.generateRandomIVFailed
59+
throw Error.generateRandomIVFailed
3760
}
3861
}
3962
}

Tests/AESCryptableTests/AESCryptableTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ final class AESTests: XCTestCase {
77
do {
88
let _ = try AES(keyString: "banana")
99
} catch {
10-
guard let aesError = error as? AESError else {
10+
guard let aesError = error as? AES.Error else {
1111
XCTFail("Unexpected error: \(error)")
1212
return
1313
}
@@ -30,7 +30,7 @@ final class AESTests: XCTestCase {
3030
let aes = try AES(keyString: "C_5};5fHV(v3M&h{m]6h_p[z[4h@ZWM$")
3131
let _ = try aes.encrypt(stringToEncrypt)
3232
} catch {
33-
guard let aesError = error as? AESError else {
33+
guard let aesError = error as? AES.Error else {
3434
XCTFail("Unexpected error: \(error)")
3535
return
3636
}
@@ -75,7 +75,7 @@ final class AESTests: XCTestCase {
7575
let _ = try aesIncorrectKey.decrypt(encryptedData)
7676

7777
} catch {
78-
guard let aesError = error as? AESError else {
78+
guard let aesError = error as? AES.Error else {
7979
XCTFail("Unexpected error: \(error)")
8080
return
8181
}

0 commit comments

Comments
 (0)