Skip to content

Commit d66e407

Browse files
committed
Swift: Improve the encryption in examples for swift/cleartext-* queries.
1 parent 1530037 commit d66e407

File tree

3 files changed

+24
-6
lines changed

3 files changed

+24
-6
lines changed
Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
1+
import CryptoKit
12

2-
func storeMyData(databaseObject : NSManagedObject, faveSong : String, creditCardNo : String) {
3+
private func encrypt(_ text: String, _ encryptionKey: SymmetricKey) -> String {
4+
let sealedBox = try! AES.GCM.seal(Data(text.utf8), using: encryptionKey)
5+
return sealedBox.combined!.base64EncodedString()
6+
}
7+
8+
func storeMyData(databaseObject : NSManagedObject, faveSong : String, creditCardNo : String, key: SymmetricKey) {
39
// ...
410

511
// GOOD: not sensitive information
@@ -9,7 +15,7 @@ func storeMyData(databaseObject : NSManagedObject, faveSong : String, creditCard
915
databaseObject.setValue(creditCardNo, forKey: "myCreditCardNo")
1016

1117
// GOOD: encrypted sensitive information saved
12-
databaseObject.setValue(encrypt(creditCardNo), forKey: "myCreditCardNo")
18+
databaseObject.setValue(encrypt(creditCardNo, encryptionKey), forKey: "myCreditCardNo")
1319

1420
// ...
1521
}
Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
1+
import CryptoKit
12

2-
func transmitMyData(connection : NWConnection, faveSong : String, creditCardNo : String) {
3+
private func encrypt(_ text: String, _ encryptionKey: SymmetricKey) -> String {
4+
let sealedBox = try! AES.GCM.seal(Data(text.utf8), using: encryptionKey)
5+
return sealedBox.combined!.base64EncodedString()
6+
}
7+
8+
func transmitMyData(connection : NWConnection, faveSong : String, creditCardNo : String, key: SymmetricKey) {
39
// ...
410

511
// GOOD: not sensitive information
@@ -9,7 +15,7 @@ func transmitMyData(connection : NWConnection, faveSong : String, creditCardNo :
915
connection.send(content: creditCardNo, completion: .idempotent)
1016

1117
// GOOD: encrypted sensitive information saved
12-
connection.send(content: encrypt(creditCardNo), completion: .idempotent)
18+
connection.send(content: encrypt(creditCardNo, encryptionKey), completion: .idempotent)
1319

1420
// ...
1521
}
Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
1+
import CryptoKit
12

2-
func storeMyData(faveSong : String, creditCardNo : String) {
3+
private func encrypt(_ text: String, _ encryptionKey: SymmetricKey) -> String {
4+
let sealedBox = try! AES.GCM.seal(Data(text.utf8), using: encryptionKey)
5+
return sealedBox.combined!.base64EncodedString()
6+
}
7+
8+
func storeMyData(faveSong : String, creditCardNo : String, encryptionKey: SymmetricKey) {
39
// ...
410

511
// GOOD: not sensitive information
@@ -9,7 +15,7 @@ func storeMyData(faveSong : String, creditCardNo : String) {
915
UserDefaults.standard.set(creditCardNo, forKey: "myCreditCardNo")
1016

1117
// GOOD: encrypted sensitive information saved
12-
UserDefaults.standard.set(encrypt(creditCardNo), forKey: "myCreditCardNo")
18+
UserDefaults.standard.set(encrypt(creditCardNo, encryptionKey), forKey: "myCreditCardNo")
1319

1420
// ...
1521
}

0 commit comments

Comments
 (0)