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

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: 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..c742a7b544508f11d082180860cc90f735427534
--- /dev/null
+++ b/chrome/browser/extensions/api/networking_private/networking_private_crypto_unittest.cc
@@ -0,0 +1,133 @@
+// 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.
+
+//#include "base/callback.h"
+//#include "base/command_line.h"
+
+#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) {
+
Ryan Sleevi 2013/08/28 19:02:37 nit: unnecessary line break
+ const char* cert_data =
+ "-----BEGIN "
+ "CERTIFICATE-----"
Ryan Sleevi 2013/08/28 19:02:37 why this line break?
mef 2013/08/28 21:28:58 Done. Clang format. I think it tries to break at n
+ "\nMIIDhzCCAm8CBFE2SCMwDQYJKoZIhvcNAQEFBQAwfTELMAkGA1UEBhMCVVMxEzAR\nBgNV"
+ "BAgMCkNhbGlmb3JuaWExFjAUBgNVBAcMDU1vdW50YWluIFZpZXcxEzARBgNV\nBAoMCkdvb2"
+ "dsZSBJbmMxEjAQBgNVBAsMCUdvb2dsZSBUVjEYMBYGA1UEAwwPRXVy\nZWthIEdlbjEgSUNB"
+ "MB4XDTEzMDMwNTE5MzE0N1oXDTMzMDIyODE5MzE0N1owgYMx\nFjAUBgNVBAcTDU1vdW50YW"
+ "luIFZpZXcxEjAQBgNVBAsTCUdvb2dsZSBUVjETMBEG\nA1UEChMKR29vZ2xlIEluYzETMBEG"
+ "A1UECBMKQ2FsaWZvcm5pYTELMAkGA1UEBhMC\nVVMxHjAcBgNVBAMUFWV2dF9lMTYxIDAwMW"
+ "ExMWZmYWNkZjCCASIwDQYJKoZIhvcN\nAQEBBQADggEPADCCAQoCggEBAPHGDV0lLoTYK78q"
+ "13y/"
Ryan Sleevi 2013/08/28 19:02:37 or this, etc
mef 2013/08/28 21:28:58 Same as above. Is there an easy way to re-align?
+ "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";
+ /*
+ unsigned_data = '%s,%s,%s,%s,%s' % (test_data['name'],
+ test_data['ssdp_udn'],
+ test_data['hotspot_bssid'],
+ test_data['public_key'],
+ sign_bundle['nonce'])
+ */
+ // const char* mac_address = "4C:AA:16:A5:AC:DF";
+ const char* name = "eureka8997";
Ryan Sleevi 2013/08/28 19:02:37 All of these should be: "static const char kFoo[]
mef 2013/08/28 21:28:58 Done.
+ const char* ssdp_udn = "c5b2a83b-5958-7ce6-b179-e1f44699429b";
+ const char* hotspot_bssid = "00:1A:11:FF:AC:DF";
+ const char* public_key =
+ "MIGJAoGBAK3SXmWZBOhJibv8It05qIbgHXXhnCXxHkW+"
+ "C6jNMHR5sZgDpFaOY1xwXERjKdJxcwrEy3VAT5Uv9MgHPBvxxJku76HYh1yVfIw1rhLnHBTH"
+ "SxwUzJNCrgc3l3t/"
+ "UACacLjVNIzccDpYf2vnOcA+t1t6IXRjzuU2NdwY4dJXNtWPAgMBAAE=";
+ const char* nonce = "+6KSGuRu833m1+TP";
+
+ std::string unsigned_data = base::StringPrintf(
+ "%s,%s,%s,%s,%s", name, ssdp_udn, hotspot_bssid, public_key, nonce);
+ std::string signed_data;
+ base::Base64Decode(
+ "vwMBgANrp5XpCswLyk/"
+ "OTXT56ORPeIWjH7xAdCk3qgjkwI6+8o56zJS02+"
+ "tC5hhIHWh7oppTmWYF4tKvBQ3GeCz7IW9f7HWDMtO7x7yRWxzJyehaJbCfXvLdfs0/"
+ "WKllzvGVBgNpcIAwU2NSFUG/"
+ "jpXclntFzds0EUJG9wHxS6PXXSYRu+PlIFdCDcQJsUlnwO9AGFOJRV/"
+ "aARGh8YUTWCFIQPOtPEqT5eegt+"
+ "TLf01Gq0YcrRwSTKy1I3twOnWiMfIdkJdQKPtBwwbvuAyGuqYFocfjKABbnH9Tvl04yyO3eu"
+ "KbYlSqaF/l8CXmzDJTyO7tDOFK59bV9auE4KljrQ==",
Ryan Sleevi 2013/08/28 19:02:37 Give these strings meaningful symbolic names in th
mef 2013/08/28 21:28:58 Done.
+ &signed_data);
+
+ NetworkingPrivateCrypto crypto;
+ EXPECT_TRUE(crypto.VerifyCredentials(
+ cert_data, signed_data, unsigned_data, hotspot_bssid));
+}
+
+TEST(NetworkingPrivateCryptoTest, EncryptString) {
+ NetworkingPrivateCrypto crypto;
+ std::string public_key;
+ base::Base64Decode(
+ "MIGJAoGBANTjeoILNkSKHVkd3my/"
+ "rSwNi+9t473vPJU0lkM8nn9C7+"
+ "gmaPvEWg4ZNkMd12aIXDXVHrjgjcS80bPE0ykhN9J7EYkJ+"
+ "43oulJMrEnyDy5KQo7U3MKBdjaKFTS+"
+ "OPyohHpI8GqHKM8UMkLPVtAKu1BXgGTSDvEaBAuoVT2PM4XNAgMBAAE=",
+ &public_key);
+ std::string private_key =
+ "-----BEGIN RSA PRIVATE KEY-----\n"
+ "MIICXQIBAAKBgQDU43qCCzZEih1ZHd5sv60sDYvvbeO97zyVNJZDPJ5/Qu/oJmj7\n"
+ "xFoOGTZDHddmiFw11R644I3EvNGzxNMpITfSexGJCfuN6LpSTKxJ8g8uSkKO1NzC\n"
+ "gXY2ihU0vjj8qIR6SPBqhyjPFDJCz1bQCrtQV4Bk0g7xGgQLqFU9jzOFzQIDAQAB\n"
+ "AoGBALfdR/9s44/KoZJIQ8Q0v8HeaU9+30U5jF9pLaYggtty2nTsR5u6d/TZPY42\n"
+ "BcVeXBV6XbBa8NZMJelXQvCw6d3hrirtRgqo+R9n6Z5Ji9oKA9NR0ZD0d66OLgRz\n"
+ "7U1w2wiM9KqfjRpRhuID1MrDF8R0mxORSFnlMeoHD74ncK6ZAkEA+NBV2OOigyU/\n"
+ "CVWCTKmOpxUGb6bRZfvQRln4XlVUhSgZU0Acf0APl3Av1vUPyPjRIXRnMS5ZBDFK\n"
+ "YoUqWH3ymwJBANsJhX3HHYXk7aDrmPKE7q25xR7Eu4C7XEdiG0SSl8PNAicU0APy\n"
+ "zFs9GLhTgGCTZf/SCzH6ejEIiOC/RZeqW7cCQCapAF3F6O9lryi9H5TX17GAY9Kf\n"
+ "YfPtr4vu2NeXfJ2AAIdd88+V3ZZTOSu2QjCg8KW5F3udzvkGy58JP+4mC7cCQBEU\n"
+ "+gMoHyZNBzcwiHoJYe/MeBIBN7o/Yl/yx7ueTxWnDE7t8ZcNPWC0MBRX9sARXrgH\n"
+ "snXQWe0vBDW61PuR/psCQQDthOoMBnuWamOEZrEJr+itK5+ZPlE+KpT3ladXui57\n"
+ "zvz3CljmlLwyufahWaF+LzfohVAG5CLr4Zi/bv7j1lnJ\n"
+ "-----END RSA PRIVATE KEY-----";
+
+ std::string encrypted_output;
+ std::string plain = "disco boy";
+
+ EXPECT_TRUE(crypto.EncryptByteString(public_key, plain, &encrypted_output));
+
+// TODO(mef): figure out a correct way to import private_key.
+#if 0
+ scoped_ptr<crypto::RSAPrivateKey> key(crypto::RSAPrivateKey::Create(1024));
+ std::vector<uint8> pubkey_data;
+ std::vector<uint8> privkey_data;
+ EXPECT_TRUE(key->ExportPublicKey(&pubkey_data));
mef 2013/08/28 18:05:59 The exported pubkey_data isn't liked by SECKEY_Imp
+ EXPECT_TRUE(key->ExportPrivateKey(&privkey_data));
+ public_key = std::string(reinterpret_cast<char*>(&pubkey_data.front()),
+ pubkey_data.size());
+ EXPECT_TRUE(crypto.EncryptByteString(public_key, plain, &encrypted_output));
+
+ std::string decrypted;
+ EXPECT_TRUE(
+ crypto.DecryptByteString(private_key, encrypted_output, &decrypted));
+ EXPECT_TRUE(decrypted == plain);
+#endif
+
+ EXPECT_FALSE(
+ crypto.EncryptByteString("bad key", "disco boy", &encrypted_output));
+}
+
+} // namespace

Powered by Google App Engine
This is Rietveld 408576698