import Foundation import CryptoKit extension SymmetricKey { var data: Data { withUnsafeBytes { Data(Array($0)) } } var base64: String { data.base64EncodedString() } var displayString: String { data.hexEncoded.uppercased().split(by: 4).joined(separator: " ") } var codeString: String { " {" + withUnsafeBytes { return Data(Array($0)) }.map(String.init).joined(separator: ", ") + "}," } } extension SHA256.Digest { var hexEncoded: String { Data(map { $0 }).hexEncoded } } extension String { func split(by length: Int) -> [String] { var startIndex = self.startIndex var results = [Substring]() while startIndex < self.endIndex { let endIndex = self.index(startIndex, offsetBy: length, limitedBy: self.endIndex) ?? self.endIndex results.append(self[startIndex..