diff options
author | abarth@chromium.org <abarth@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-30 01:54:16 +0000 |
---|---|---|
committer | abarth@chromium.org <abarth@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-30 01:54:16 +0000 |
commit | 532c7fb7070bc17fb0f7119e64b4e99baa984d44 (patch) | |
tree | 6527cd74c9f8384f9aaee7a403e10396aafe1b30 /net/http/http_mac_signature_unittest.cc | |
parent | d581748c884b16c710ab2c15fd7ad622f068642a (diff) | |
download | chromium_src-532c7fb7070bc17fb0f7119e64b4e99baa984d44.zip chromium_src-532c7fb7070bc17fb0f7119e64b4e99baa984d44.tar.gz chromium_src-532c7fb7070bc17fb0f7119e64b4e99baa984d44.tar.bz2 |
MAC Cookies (patch 2 of N)
This CL contains the algorithmic guts of MAC cookies, including generating
the canonical represntation of the request and signing it using HMAC. This
CL does not include support for body_hash, which requires some more thought.
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=83600
Review URL: http://codereview.chromium.org/6901121
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@83651 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/http/http_mac_signature_unittest.cc')
-rw-r--r-- | net/http/http_mac_signature_unittest.cc | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/net/http/http_mac_signature_unittest.cc b/net/http/http_mac_signature_unittest.cc new file mode 100644 index 0000000..5019e4b9 --- /dev/null +++ b/net/http/http_mac_signature_unittest.cc @@ -0,0 +1,109 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "testing/gtest/include/gtest/gtest.h" +#include "net/http/http_mac_signature.h" + +namespace net { + +TEST(HttpMacSignatureTest, BogusAddStateInfo) { + HttpMacSignature signature; + EXPECT_FALSE(signature.AddStateInfo("exciting-id", + "the-mac-key", + "bogus-hmac-algorithm", + "the-issuer")); + EXPECT_FALSE(signature.AddStateInfo("", + "the-mac-key", + "hmac-sha-1", + "the-issuer")); + EXPECT_FALSE(signature.AddStateInfo("exciting-id", + "", + "hmac-sha-1", + "the-issuer")); + EXPECT_FALSE(signature.AddStateInfo("exciting-id", + "the-mac-key", + "", + "the-issuer")); + EXPECT_FALSE(signature.AddStateInfo("exciting-id", + "the-mac-key", + "hmac-sha-1", + "")); +} + +TEST(HttpMacSignatureTest, BogusAddHttpInfo) { + HttpMacSignature signature; + EXPECT_FALSE(signature.AddHttpInfo("GET", "/requested", "example.com", 0)); + EXPECT_FALSE(signature.AddHttpInfo( + "GET", "/requested", "example.com", 29088983)); + EXPECT_FALSE(signature.AddHttpInfo("", "/requested", "example.com", 80)); + EXPECT_FALSE(signature.AddHttpInfo("GET", "", "example.com", 80)); + EXPECT_FALSE(signature.AddHttpInfo("GET", "/requested", "", 80)); +} + +TEST(HttpMacSignatureTest, GenerateHeaderString) { + HttpMacSignature signature; + EXPECT_TRUE(signature.AddStateInfo("dfoi30j0qnf", + "adiMf03j0f3nOenc003r", + "hmac-sha-1", + "login.eXampLe.com:443")); + EXPECT_TRUE(signature.AddHttpInfo("GeT", + "/pAth?to=%22enlightenment%22&dest=magic", + "eXaMple.com", + 80)); + + std::string timestamp = "239034"; + std::string nonce = "mn4302j0n+32r2/f3r="; + + EXPECT_EQ("MAC id=\"dfoi30j0qnf\", " + "issuer=\"login.eXampLe.com:443\", " + "timestamp=\"239034\", " + "nonce=\"mn4302j0n+32r2/f3r=\", " + "mac=\"zQWLNI5eHOfY5/wCJ6yzZ8bXDw==\"", + signature.GenerateHeaderString(timestamp, nonce)); +} + + +TEST(HttpMacSignatureTest, GenerateNormalizedRequest) { + HttpMacSignature signature; + EXPECT_TRUE(signature.AddStateInfo("dfoi30j0qnf", + "adiMf03j0f3nOenc003r", + "hmac-sha-1", + "login.eXampLe.com:443")); + EXPECT_TRUE(signature.AddHttpInfo("GeT", + "/pAth?to=%22enlightenment%22&dest=magic", + "eXaMple.com", + 80)); + + std::string timestamp = "239034"; + std::string nonce = "mn4302j0n+32r2/f3r="; + + EXPECT_EQ("dfoi30j0qnf\n" + "login.eXampLe.com:443\n" + "239034\n" + "mn4302j0n+32r2/f3r=\n" + "GET\n" + "/pAth?to=%22enlightenment%22&dest=magic\n" + "example.com\n" + "80\n", + signature.GenerateNormalizedRequest(timestamp, nonce)); +} + +TEST(HttpMacSignatureTest, GenerateMAC) { + HttpMacSignature signature; + EXPECT_TRUE(signature.AddStateInfo("dfoi30j0qnf", + "adiMf03j0f3nOenc003r", + "hmac-sha-1", + "login.eXampLe.com:443")); + EXPECT_TRUE(signature.AddHttpInfo("GeT", + "/pAth?to=%22enlightenment%22&dest=magic", + "eXaMple.com", + 80)); + + std::string timestamp = "239034"; + std::string nonce = "mn4302j0n+32r2/f3r="; + + EXPECT_EQ("zQWLNI5eHOfY5/wCJ6yzZ8bXDw==", + signature.GenerateMAC(timestamp, nonce)); +} +} |