|
- //
- // File.swift
- //
- //
- // Created by Michiel Carman on 4/2/24.
- //
-
- import Foundation
- import Vapor
- import Crypto
-
- enum CryptoError: Error{
- case badRequest
- }
-
- struct CustomCrypto{
- public static func DecryptString(input: String) throws -> String{
- let apikey = Environment.get("API_KEY") ?? "rv0ywT7Ygwh01jP1dQWBP39ogjq5ladO+EoNUGcBVq0="
- print(apikey)
- let base64Key = apikey // Replace with your actual key
- guard let keyData = Data(base64Encoded: base64Key) else {
- fatalError("Invalid Base64 key data")
- }
- let data = Data(base64Encoded: input)
- let encryptionKey = SymmetricKey(data: keyData)
- let sealedBox = try! AES.GCM.SealedBox(combined: data!)
- let decryptedData = try! AES.GCM.open(sealedBox, using: encryptionKey)
- guard let decryptedString = String(data: decryptedData, encoding: .utf8) else{
- throw CryptoError.badRequest
- }
- return decryptedString
- }
-
- public static func EncryptString(input: String) throws -> String{
- let apikey = Environment.get("API_KEY") ?? "rv0ywT7Ygwh01jP1dQWBP39ogjq5ladO+EoNUGcBVq0="
- print(apikey)
- guard let keyData = Data(base64Encoded: apikey) else{
- fatalError("Invalid Base64 key data")
- }
- let encryptionKey = SymmetricKey(data: keyData)
- guard let datatoEncrypt = input.data(using: .utf8) else{ fatalError("Invalid Data")}
- do{
- let sealedBox = try AES.GCM.seal(datatoEncrypt, using: encryptionKey)
- guard let combined = sealedBox.combined else{ fatalError("Can't combine")}
- let base64EncodedString = combined.base64EncodedString()
- let urlEncodedString = base64EncodedString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
- return urlEncodedString!
- }
- }
- }
- struct Base64{
- public static func Base64Encode(input: String) throws -> String{
- guard let dataToEncode = input.data(using: .utf8) else{ fatalError("Invalid Data")}
- let base64EncodedString = dataToEncode.base64EncodedString()
- let urlEncodedString = base64EncodedString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
- return urlEncodedString!
- }
- public static func Base64Decode(input: String) throws -> [String: String]{
- var dic: [String: String] = [:]
- guard let base64EncodedData = input.data(using: .utf8) else { fatalError("Invalid Data")}
- if let data = Data(base64Encoded: base64EncodedData){
- let str = String(data: data, encoding: .utf8)
- let strArr = str!.components(separatedBy: ";")
- for s in strArr{
- let pcs = s.components(separatedBy: "=")
- dic[pcs[0]] = pcs[1]
- }
- }
- return dic
- }
- }
-
|