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
}
}