OAuth 1.0a摘要值与RFC 5849不匹配

时间:2017-12-03 20:24:41

标签: delphi oauth sha1 hmac

嗨,还有另一个OAuth问题。

我正在使用Delphi OAuth库。我已经完成了OAuth2并且已经完成了灰尘,但是我在OAuth1.0a上遇到了一些小问题,并且生成了一个HMAC。

具体做法是: 我已经测试过我的代码生成了正确的签名基本字符串,根据RFC5849中的测试用例https://tools.ietf.org/html/rfc5849#section-3.4.1

我测试过我的SHA1和SHA-1HMAC实现通过了以下所有测试:

Test: FIPS 180-2 C.1 and RFC3174 7.3 TEST1
Test: FIPS 180-2 C.2 and RFC3174 7.3 TEST2
Test: RFC3174 7.3 TEST4
Test: FIPS 198a A.1
Test: FIPS 198a A.2
Test: FIPS 198a A.3
Test: FIPS 198a A.4

我已经检查过我的HMAC在(!)维基百科中生成了正确的值:

HMAC_SHA1("", "")   = fbdb1d1b18aa6c08324b7d64b71fb76370690e1d
HMAC_SHA1("key", "The quick brown fox jumps over the lazy dog")   = de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9

所以,现在我需要生成摘要,它应该只是一个base 64编码。我的base64编码似乎没问题:

 '' => ''
 'f' => 'Zg=='
 'fo' => 'Zm8='
 'foo' => 'Zm9v'
 'foob' => 'Zm9vYg=='
 'fooba' => 'Zm9vYmE='
 'foobar' => 'Zm9vYmFy'

所以,然后我把它们放在一起,并尝试生成HMAC-SHA1:

function OAuth1TestHMACSHA1Digest: boolean;
var
  Mac: TMCHHMACSha1;
  KeyString, MsgString: string;
  KeyBytes, MsgBytes,ResBytes: TIdBytes;
  ResDigest: string;
begin
  result := true;

  Mac := TMCHHMACSha1.Create;
  try
    KeyString := 'kd94hf93k423kf44&pfkkdhi9sl3r4s00';
    MsgString := 'text';
    result := result and UTF8StringToIdBytes(KeyString, KeyBytes);
    Mac.Key := KeyBytes;
    ResDigest := OAuth1MacSignRequest(Mac, MsgString);
    result := result and
      (CompareText(ResDigest, 'tR3+Ty81lMeYAr/Fid0kMTYa/WM=') = 0);
  finally
    Mac.Free;
  end;

end;

我希望: TR3 + Ty81lMeYAr / Fid0kMTYa / WM =

我得到: maMaOIlbzKZpsBGKnKjjsjDthPk =

是MIME64编码:

(153,163,26,56,137,91,204,166,105,176,17,138,156,168,227,178,48,237,132,249) ($ 99,$ A3,$ 1A,$ 38,$ 89,$ 5B,$ CC,$ A6,$ 69,$ B0,$ 11,$ 8A,$ 9C,$ A8,$ E3,$ B2,$ 30,$ ED,$ 84 ,$ F9)

显然 - 我忘记了一些明显的事情。可能是什么?

0 个答案:

没有答案