I need help with making a signature in swift 3 with HMAC
SHA1
for a web request.
I have an example in Java but really do not know how to do it in swift.
Java formula:
signature = Base64.encode(HMAC_SHA1.digest(data,Base64.decode(client_secret))
signature = +t2GOKtZt1hU+C7OGBKZbDOKxds=
Problem solved
extension String {
func hmac(algorithm: kCCHmacAlgSHA1, key: NSData) -> String {
let cKey = key
let cData = self.cString(using: String.Encoding.ascii)
var cHMAC = [CC_SHA1_DIGEST_LENGTH]
CCHmac(CCHmacAlgorithm(kCCHmacAlgSHA1), cKey.bytes, cKey.length, cData, Int(strlen(cData!)), &cHMAC)
let hmacData:NSData = NSData(bytes: cHMAC, length: cHMAC)
let hmacBase64 = hmacData.base64EncodedString(options: NSData.Base64EncodingOptions(rawValue: 0))
return String(hmacBase64)
}
}
let hmacResult: String = cData.hmac(algorithm: HMACAlgorithm.SHA1, key: keyData)