Home - tkgstrator/Salmonia3 GitHub Wiki

Welcome to the Salmonia3 wiki!

HMAC-SHA1 with CryptoKit

import CryptoKit

let key: String = "secret"
let message: String = "foo bar"

let signatureKey: SymmetricKey = SymmetricKey(data: key.data(using: .utf8)!)
let signatureData: Data = Data(message.data(using: .utf8)!)
print(HMAC<Insecure.SHA1>.authenticationCode(for: signatureData, using: signatureKey))

Using extension

extension String {
    var base64EncodedString: String {
        return self.data(using: .utf8)!.base64EncodedString()
            .replacingOccurrences(of: "=", with: "")
            .replacingOccurrences(of: "+", with: "-")
            .replacingOccurrences(of: "/", with: "_")
    }
    
    func hmacsha1(key: String) -> String {
        let hash = HMAC<Insecure.SHA1>.authenticationCode(for: Data(self.data(using: .utf8)!), using: SymmetricKey(data: Data(key.data(using: .utf8)!)))
        let hashArray: [UInt8] = Array(hash.map{ String(format: "%02x", $0) }).map{ UInt8($0, radix: 16)! }
        let data: Data = Data(bytes: hashArray, count: hashArray.count)
        return data.base64EncodedString()
    }
}

GeometryReader

GemetryReader { geometry in
    ScrollView {
        // Contents
    }
}