嗨,还有另一个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)
显然 - 我忘记了一些明显的事情。可能是什么?