Chromium Code Reviews| 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 |