Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Unified Diff: chrome/browser/extensions/api/networking_private/networking_private_crypto_unittest.cc

Issue 23710003: Added NetworkingPrivateCrypto and its unit test. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Refactor to follow Ryan's suggestions. Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/networking_private/networking_private_crypto_unittest.cc
diff --git a/chrome/browser/extensions/api/networking_private/networking_private_crypto_unittest.cc b/chrome/browser/extensions/api/networking_private/networking_private_crypto_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..cb6714f35c95fda822eb218f86e947595d965cac
--- /dev/null
+++ b/chrome/browser/extensions/api/networking_private/networking_private_crypto_unittest.cc
@@ -0,0 +1,115 @@
+// Copyright 2013 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.
+// Tests of NetworkingPrivateCrypto support for Networking Private API.
+// Based on chromeos_public//.../network_DestinationVerification.py
+
+#include "base/base64.h"
+#include "base/logging.h"
+#include "base/strings/stringprintf.h"
+#include "chrome/browser/extensions/api/networking_private/networking_private_crypto.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+TEST(NetworkingPrivateCryptoTest, VerifyCredentials) {
+ static const char kCertData[] =
+ "-----BEGIN CERTIFICATE-----"
+ "\nMIIDhzCCAm8CBFE2SCMwDQYJKoZIhvcNAQEFBQAwfTELMAkGA1UEBhMCVVMxEzAR\nBgNV"
+ "BAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxEzARBgNV\nBAoMCkdvb2"
+ "dsZSBJbmMxEjAQBgNVBAsMCUdvb2dsZSBUVjEYMBYGA1UEAwwPRXVy\nZWthIEdlbjEgSUNB"
+ "MB4XDTEzMDMwNTE5MzE0N1oXDTMzMDIyODE5MzE0N1owgYMx\nFjAUBgNVBAcTDU1vdW50YW"
+ "luIFZpZXcxEjAQBgNVBAsTCUdvb2dsZSBUVjETMBEG\nA1UEChMKR29vZ2xlIEluYzETMBEG"
+ "A1UECBMKQ2FsaWZvcm5pYTELMAkGA1UEBhMC\nVVMxHjAcBgNVBAMUFWV2dF9lMTYxIDAwMW"
+ "ExMWZmYWNkZjCCASIwDQYJKoZIhvcN\nAQEBBQADggEPADCCAQoCggEBAPHGDV0lLoTYK78q"
+ "13y/"
+ "2u77YTjgbBlWAOxgrSNc\nMmGHx1K0aPyo50p99dGQnjapW6jtGrMzReWV2Wz3VL8rYlqY7o"
+ "WjeJwsLQwo2tcn\n7vIZ/"
+ "PuvPz9xgnGMUbBOfhCf3Epb1N4Jz82pxxrOFhUawWAglC9C4fUeZLCZpOJs\nQd4QeAznkyd"
+ "l3xbqdSm74kwxE6vkGEzSCDnC7aYx0Rvvr1mZOKdl4AinYrxzWgmV\nsTnaFT1soSjmC5e/"
+ "i6Jcrs4dDFgY6mKy9Qtly2XPSCYljm6L4SgqgJNmlpY0qYJg\nO++"
+ "BdofIbU2jsOiCMvIuKkbMn72NsPQG0QhnVMwk7kYg6kkCAwEAAaMNMAswCQYD\nVR0TBAIwA"
+ "DANBgkqhkiG9w0BAQUFAAOCAQEAW0bQl9yjBc7DgMp94i7ZDOUxKQrz\nthephuwzb3/"
+ "wWiTHcw6KK6FRPefXn6NPWxKKeQmv/"
+ "tBxHbVlmYRXUbrhksnD0aUk\ni4InvtL2m0H1fPfMxmJRFE+HoSXu+"
+ "s0sGON831JaMcYRbAku5uHnltaGNzOI0KPH\nFGoCDmjAZD+IuoR2LR4FuuTrECK7KLjkdf/"
+ "/z5d5j7nBDPZS7uTCwC/"
+ "BwM9asRj3\ntJA5VRFbLbsit1VI7IaRCk9rsSKkpBUaVeKbPLz+y/"
+ "Z6JonXXT6AxsfgUSKDd4B7\nMYLrTwMQfGuUaaaKko6ldKIrovjrcPloQr1Hxb2bipFcjLmG"
+ "7nxQLoS6vQ==\n"
+ "-----END CERTIFICATE-----\n";
Ryan Sleevi 2013/08/28 21:52:29 Please ignore clang-format here and format it a bi
mef 2013/08/29 14:59:09 Done.
+
+ // const char* mac_address = "4C:AA:16:A5:AC:DF";
Ryan Sleevi 2013/08/28 21:52:29 nit: outdated comment?
mef 2013/08/29 14:59:09 Done.
+ static const char kName[] = "eureka8997";
+ static const char kSsdpUdn[] = "c5b2a83b-5958-7ce6-b179-e1f44699429b";
+ static const char kHotspotBssid[] = "00:1A:11:FF:AC:DF";
+ static const char kPublicKey[] =
+ "MIGJAoGBAK3SXmWZBOhJibv8It05qIbgHXXhnCXxHkW+"
+ "C6jNMHR5sZgDpFaOY1xwXERjKdJxcwrEy3VAT5Uv9MgHPBvxxJku76HYh1yVfIw1rhLnHBTH"
+ "SxwUzJNCrgc3l3t/"
+ "UACacLjVNIzccDpYf2vnOcA+t1t6IXRjzuU2NdwY4dJXNtWPAgMBAAE=";
+ static const char kNonce[] = "+6KSGuRu833m1+TP";
+ static const char kSignedData[] = "vwMBgANrp5XpCswLyk/"
+ "OTXT56ORPeIWjH7xAdCk3qgjkwI6+8o56zJS02+"
+ "tC5hhIHWh7oppTmWYF4tKvBQ3GeCz7IW9f7HWDMtO7x7yRWxzJyehaJbCfXvLdfs0/"
+ "WKllzvGVBgNpcIAwU2NSFUG/"
+ "jpXclntFzds0EUJG9wHxS6PXXSYRu+PlIFdCDcQJsUlnwO9AGFOJRV/"
+ "aARGh8YUTWCFIQPOtPEqT5eegt+"
+ "TLf01Gq0YcrRwSTKy1I3twOnWiMfIdkJdQKPtBwwbvuAyGuqYFocfjKABbnH9Tvl04yyO3eu"
+ "KbYlSqaF/l8CXmzDJTyO7tDOFK59bV9auE4KljrQ==";
+
+ std::string unsigned_data = base::StringPrintf(
+ "%s,%s,%s,%s,%s", kName, kSsdpUdn, kHotspotBssid, kPublicKey, kNonce);
+ std::string signed_data;
+ base::Base64Decode(kSignedData, &signed_data);
+
+ NetworkingPrivateCrypto crypto;
+ EXPECT_TRUE(crypto.VerifyCredentials(
+ kCertData, signed_data, unsigned_data, kHotspotBssid));
+}
+
+TEST(NetworkingPrivateCryptoTest, EncryptString) {
+ NetworkingPrivateCrypto crypto;
+ static const char kPublicKey[] = "MIGJAoGBANTjeoILNkSKHVkd3my/"
Ryan Sleevi 2013/08/28 21:52:29 nit: place this on a newline, and reflow/reformat.
mef 2013/08/29 14:59:09 Done.
+ "rSwNi+9t473vPJU0lkM8nn9C7+"
+ "gmaPvEWg4ZNkMd12aIXDXVHrjgjcS80bPE0ykhN9J7EYkJ+"
+ "43oulJMrEnyDy5KQo7U3MKBdjaKFTS+"
+ "OPyohHpI8GqHKM8UMkLPVtAKu1BXgGTSDvEaBAuoVT2PM4XNAgMBAAE=";
+ static const char kPrivateKey[] =
+ "-----BEGIN PRIVATE KEY-----\n"
+ "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANTjeoILNkSKHVkd\n"
+ "3my/rSwNi+9t473vPJU0lkM8nn9C7+gmaPvEWg4ZNkMd12aIXDXVHrjgjcS80bPE\n"
+ "0ykhN9J7EYkJ+43oulJMrEnyDy5KQo7U3MKBdjaKFTS+OPyohHpI8GqHKM8UMkLP\n"
+ "VtAKu1BXgGTSDvEaBAuoVT2PM4XNAgMBAAECgYEAt91H/2zjj8qhkkhDxDS/wd5p\n"
+ "T37fRTmMX2ktpiCC23LadOxHm7p39Nk9jjYFxV5cFXpdsFrw1kwl6VdC8LDp3eGu\n"
+ "Ku1GCqj5H2fpnkmL2goD01HRkPR3ro4uBHPtTXDbCIz0qp+NGlGG4gPUysMXxHSb\n"
+ "E5FIWeUx6gcPvidwrpkCQQD40FXY46KDJT8JVYJMqY6nFQZvptFl+9BGWfheVVSF\n"
+ "KBlTQBx/QA+XcC/W9Q/I+NEhdGcxLlkEMUpihSpYffKbAkEA2wmFfccdheTtoOuY\n"
+ "8oTurbnFHsS7gLtcR2IbRJKXw80CJxTQA/LMWz0YuFOAYJNl/9ILMfp6MQiI4L9F\n"
+ "l6pbtwJAJqkAXcXo72WvKL0flNfXsYBj0p9h8+2vi+7Y15d8nYAAh13zz5XdllM5\n"
+ "K7ZCMKDwpbkXe53O+QbLnwk/7iYLtwJAERT6AygfJk0HNzCIeglh78x4EgE3uj9i\n"
+ "X/LHu55PFacMTu3xlw09YLQwFFf2wBFeuAeyddBZ7S8ENbrU+5H+mwJBAO2E6gwG\n"
+ "e5ZqY4RmsQmv6K0rn5k+UT4qlPeVp1e6LnvO/PcKWOaUvDK59qFZoX4vN+iFUAbk\n"
+ "IuvhmL9u/uPWWck=\n"
+ "-----END PRIVATE KEY-----";
+ static const char kBadKeyData[] = "bad key";
+ static const char kTestData[] = "disco boy";
+
+ std::string public_key;
+ base::Base64Decode(kPublicKey, &public_key);
+
+ std::string encrypted_output;
+ std::string plain = kTestData;
+
+ EXPECT_TRUE(crypto.EncryptByteString(public_key, plain, &encrypted_output));
+
+ std::string decrypted;
+ EXPECT_TRUE(
+ crypto.DecryptByteString(kPrivateKey, encrypted_output, &decrypted));
+ EXPECT_TRUE(decrypted == plain);
Ryan Sleevi 2013/08/28 21:52:29 Why not EXPECT_EQ ?
mef 2013/08/29 14:59:09 Done.
+
+ EXPECT_FALSE(
+ crypto.EncryptByteString(kBadKeyData, kTestData, &encrypted_output));
+}
+
+} // namespace

Powered by Google App Engine
This is Rietveld 408576698