Skip to content

Instantly share code, notes, and snippets.

@cardosoedgar
Last active October 18, 2022 00:19
Show Gist options
  • Save cardosoedgar/bc58f7e66166fa73517b16aa6a662a50 to your computer and use it in GitHub Desktop.
Save cardosoedgar/bc58f7e66166fa73517b16aa6a662a50 to your computer and use it in GitHub Desktop.
let algorithm: SecKeyAlgorithm = .eciesEncryptionStandardX963SHA1AESGCM
func encrypt(with key: String, string: String) -> String? {
var error: Unmanaged<CFError>?
let attributes: [String: Any] = [
kSecAttrKeyClass as String: kSecAttrKeyClassPublic,
kSecAttrKeyType as String: kSecAttrKeyTypeECSECPrimeRandom,
kSecAttrKeySizeInBits as String: 256]
guard let dataKey = Data(base64Encoded: key, options: .ignoreUnknownCharacters),
let pubKey = SecKeyCreateWithData(dataKey as CFData, attributes as CFDictionary, &error) else { return nil }
guard let data = string.data(using: .utf8),
let encrypted = SecKeyCreateEncryptedData(pubKey, algorithm, data as CFData, &error) { return nil }
return (encrypted as Data).base64EncodedString()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment