29 lines
879 B
Swift
29 lines
879 B
Swift
//
|
|
// AES.swift
|
|
// native_crypto_ios
|
|
//
|
|
// Created by Hugo Pointcheval on 25/05/2022.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
class AES : Cipher {
|
|
/// Encrypts plaintext with key using AES GCM
|
|
@available(iOS 13.0, *)
|
|
static func encrypt(plaintext: Data, key: Data) -> Data? {
|
|
let symmetricKey = SymmetricKey.init(data: key)
|
|
let encrypted = try? AES.GCM.seal(plaintext, using: symmetricKey)
|
|
return encrypted?.combined
|
|
}
|
|
|
|
/// Decrypts ciphertext with key using AES GCM
|
|
@available(iOS 13.0, *)
|
|
static func decrypt(ciphertext: Data, key: Data) -> Data? {
|
|
let symmetricKey = SymmetricKey.init(data: key)
|
|
let sealedBox = try? AES.GCM.SealedBox(combined: ciphertext)
|
|
if (sealedBox == nil) { return nil }
|
|
let decryptedData = try? AES.GCM.open(sealedBox!, using: symmetricKey)
|
|
return decryptedData
|
|
}
|
|
}
|