Advertisement
Guest User

Create SAS Token In Swift

a guest
Jul 19th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.35 KB | None | 0 0
  1.     func createSharedAccessToken(uri: String, saName: String, saKey: String) -> String {
  2.         let uriEncoded = uri.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)!
  3.         let date = Date()
  4.         let calendar = Calendar.current
  5.         let exp = calendar.date(byAdding: .minute, value: 60, to: date)!
  6.         let ttl = UInt64(floor((exp.timeIntervalSince1970)))
  7.         let signature = "\(uriEncoded)\n\(ttl)"
  8.         let signatureData = signature.data(using: .utf8)!
  9.         let keyData = saKey.data(using: .utf8)!
  10.         let hash = self.hmacSHA256(message: signatureData, key: keyData)
  11.         let hashString = String(data: hash, encoding: .utf8)!
  12.        
  13.         return "SharedAccessSignature sr=\(uriEncoded)&sig=\(hashString)&se=\(ttl)&skn=\(saName)"
  14.     }
  15.    
  16.     private func hmacSHA256(message: Data, key: Data) -> Data {
  17.         var macData = Data(count: Int(CC_SHA256_DIGEST_LENGTH))
  18.        
  19.         macData.withUnsafeMutableBytes {macBytes in
  20.             message.withUnsafeBytes {messageBytes in
  21.                 key.withUnsafeBytes {keyBytes in
  22.                     CCHmac(CCHmacAlgorithm(kCCHmacAlgSHA256),
  23.                            keyBytes, key.count,
  24.                            messageBytes, message.count,
  25.                            macBytes)
  26.                 }
  27.             }
  28.         }
  29.         return macData
  30.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement