Какой хороший способ зашифровать сообщение, равное Uber Signature от веб-хуков - PullRequest
0 голосов
/ 10 апреля 2019

Что касается документации Uber, я пытаюсь проверить, чтобы доверять POST в нашем API.

https://developer.uber.com/docs/riders/guides/webhooks#security

Для этого мне нужно зашифровать с помощью client_secret в sha256.

Я делаю это на языке Go.

Моя проблема в том, что я не могу иметь такое же зашифрованное сообщение, как Uber-Signature.

Вот код, используемый:

package main

import (
    "fmt"   
    "crypto/hmac"
    "crypto/sha256"
    "encoding/hex"
)

func main() {
    secret := "mySecretCode"

    msg := `{"event_id":"af4189d4-6a4c-48b5-ab83-8a59d6b03284","resource_href":"https://sandbox-api.uber.com/v1/requests/f09bdc07-509b-4d91-859c-8883ac7fc04a","meta":{"status":"processing","rider_id":"8LSgK24vbx3bcLWThqQyMI_1T_ErGeb1SIHAO3wHX4ycPNvKGf_WsNf14PgVW8el7cBA_lemjMxKkcngZk945K_fCMXQARIfNZ8QOv7VWoQnwpSmUSKUgnYE1WEk-aHyrA==","user_id":"eb0e5df4-3d65-40a0-aff7-40bf06e15727","resource_id":"f09bdc07-509b-4d91-859c-8883ac7fc04a"},"event_type":"requests.status_changed","event_time":1554990665}`

    fmt.Printf("Secret: %s Data: %s\n", secret, msg)

    h := hmac.New(sha256.New, []byte(secret))
    h.Write([]byte(msg))
    encodedMsg := hex.EncodeToString(h.Sum(nil))
    fmt.Println(encodedMsg)
}

Я ожидаю этого: 3795f9ad1c5fe0ae4cd0d10d7a60ccb9f4409c3ae23eb0d0e448fb509f994faf

Но я получил это: 350b4ed376e3e4a490dfa7ed4701da7be46e9454d5893bc63f5040bffde19fa8

Вот код: https://play.golang.org/p/PHPFIDxXA8T

Есть идеи почему?

...