Подпись аутентификации Coinbase в Swift - PullRequest
0 голосов
/ 02 октября 2018

Я пытаюсь связаться с сервером Coinbase API.Я думаю, что попробовал каждую перестановку HMAC, ключа, подписей, времени и т. Д. И просто не могу пройти аутентификацию.

Я использую AlamoFire и Moya для моих вызовов REST:

Вотмой последний код HMac, который проверяет:

    func getHMacSHA256(forMessage message: String, key: String) -> String? {
    let hMacVal = HMAC(algorithm: HMAC.Algorithm.sha256, key: key).update(string: message)?.final()
    if let encryptedData = hMacVal {
        let decData = NSData(bytes: encryptedData, length: Int(encryptedData.count))
        let base64String = decData.base64EncodedString(options: .lineLength64Characters)
        print("base64String: \(base64String)")
        return base64String
    } else {
        return nil
    }
}

Далее у нас есть код, который создает заголовки:

   var headers: [String:String]? {

    let ts = Int64(Date().timeIntervalSince1970)

    print(UserDefaults.standard.string(forKey: "UserUUID")!)
    let appDelegate = UIApplication.shared.delegate as! AppDelegate


        let prehash = "\(ts)" + method.rawValue + "/v2/" + path// + finalBody
        print (prehash)

        let signature  =   getHMacSHA256(forMessage: prehash, key: appDelegate.tempCredential.apiSecret)!
        let obj =  [
                "content-type" : "application/json",
                "CB-ACCESS-KEY" : appDelegate.tempCredential.apiKey,
                "CB-ACCESS-SIGN" : signature,
                "CB-ACCESS-TIMESTAMP": "\(ts)"
                ]

        print(obj)
    return obj
}

Кто-нибудь видит, что я делаю неправильно?

Спасибо

...