Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func createSharedAccessToken(uri: String, saName: String, saKey: String) -> String {
- let uriEncoded = uri.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)!
- let date = Date()
- let calendar = Calendar.current
- let exp = calendar.date(byAdding: .minute, value: 60, to: date)!
- let ttl = UInt64(floor((exp.timeIntervalSince1970)))
- let signature = "\(uriEncoded)\n\(ttl)"
- let signatureData = signature.data(using: .utf8)!
- let keyData = saKey.data(using: .utf8)!
- let hash = self.hmacSHA256(message: signatureData, key: keyData)
- let hashString = String(data: hash, encoding: .utf8)!
- return "SharedAccessSignature sr=\(uriEncoded)&sig=\(hashString)&se=\(ttl)&skn=\(saName)"
- }
- private func hmacSHA256(message: Data, key: Data) -> Data {
- var macData = Data(count: Int(CC_SHA256_DIGEST_LENGTH))
- macData.withUnsafeMutableBytes {macBytes in
- message.withUnsafeBytes {messageBytes in
- key.withUnsafeBytes {keyBytes in
- CCHmac(CCHmacAlgorithm(kCCHmacAlgSHA256),
- keyBytes, key.count,
- messageBytes, message.count,
- macBytes)
- }
- }
- }
- return macData
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement