Использование HDMAC-SHA1 в VBA для Oauth 1.0

Я новичок в OAUTH 1.0a, и я пытаюсь пройти через этот процесс с помощью VBA. На этом сайте я нашел код, который был очень полезен при расчете подписи для процесса OAUTH. Вот код, который я использую:

Public Function Base64_HMACSHA1(ByVal sTextToHash As String, ByVal sSharedSecretKey As String)

Dim asc As Object, enc As Object
Dim TextToHash() As Byte
Dim SharedSecretKey() As Byte
Set asc = CreateObject("System.Text.UTF8Encoding")
Set enc = CreateObject("System.Security.Cryptography.HMACSHA1")

TextToHash = asc.Getbytes_4(sTextToHash)
SharedSecretKey = asc.Getbytes_4(sSharedSecretKey)
enc.Key = SharedSecretKey

Dim bytes() As Byte
bytes = enc.ComputeHash_2((TextToHash))
Base64_HMACSHA1 = EncodeBase64(bytes)
Set asc = Nothing
Set enc = Nothing

End Function

Private Function EncodeBase64(ByRef arrData() As Byte) As String

Dim objXML As MSXML2.DOMDocument
Dim objNode As MSXML2.IXMLDOMElement

Set objXML = New MSXML2.DOMDocument

' byte array to base64
Set objNode = objXML.createElement("b64")
objNode.DataType = "bin.base64"
objNode.nodeTypedValue = arrData
EncodeBase64 = objNode.Text

Set objNode = Nothing
Set objXML = Nothing

End Function

Я также нашел отличный веб-сайт, который создает отличный шаблон для настройки базовой строки и заголовка процесса:

https://oauth.googlecode.com/svn/code/javascript/example/signature.html

Далее, у меня есть пример необработанных параметров, которые нужно поместить в процесс Oauth, и какой должна быть полученная в результате подпись.

Ключ c5bb4dcb7bd6826c7c4340df3f791188

Секрет 7d30246211192cda43ede3abd9b393b9

Токен доступа VbiNYl63EejjlKdQM6FeENzcnrLACrZ2JYD6NQROfVI=

Секрет доступа XCF9RzyQr4UEPloA+WlC06BnTfYC1P0Fwr3GUw/B0Es=

Метка времени 1344885636

Nonce 0bba225a40d1bbac2430aa0c6163ce44

HTTP метод GET

URL https://etws.etrade.com/accounts/rest/accountlist

Результирующая подпись%2FXiv96DzZabnUG2bzPZIH2RARHM%3D

Когда я набираю эту информацию на сайте, полученная подпись возвращается. Однако при использовании кода VBA выше подпись неверна.

Я обнаружил, что приведенный выше код VBA прекрасно работает, пока не достигнет символа "+" в секрете токена. Я скопировал секрет до, но не включая символ "+" и использовал его в качестве секрета. Когда я сделал это, подпись, сгенерированная сайтом, и подпись, сгенерированная кодом, совпали. Однако подписи не совпадают после добавления символа "+" к секрету.

У кого-нибудь есть понимание проблемы?

Спасибо!

0 ответов

Другие вопросы по тегам