Home | History | Annotate | Download | only in encryptor
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "testing/gtest/include/gtest/gtest.h"
      6 
      7 #include <windows.h>
      8 
      9 #include <vector>
     10 
     11 #include "base/strings/string16.h"
     12 #include "components/webdata/encryptor/ie7_password.h"
     13 
     14 TEST(IE7PasswordTest, GetUserPassword) {
     15   // This is the unencrypted values of my keys under Storage2.
     16   // The passwords have been manually changed to abcdef... but the size remains
     17   // the same.
     18   unsigned char data1[] = "\x0c\x00\x00\x00\x38\x00\x00\x00\x2c\x00\x00\x00"
     19                           "\x57\x49\x43\x4b\x18\x00\x00\x00\x02\x00\x00\x00"
     20                           "\x67\x00\x72\x00\x01\x00\x00\x00\x00\x00\x00\x00"
     21                           "\x00\x00\x00\x00\x4e\xfa\x67\x76\x22\x94\xc8\x01"
     22                           "\x08\x00\x00\x00\x12\x00\x00\x00\x4e\xfa\x67\x76"
     23                           "\x22\x94\xc8\x01\x0c\x00\x00\x00\x61\x00\x62\x00"
     24                           "\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00"
     25                           "\x00\x00\x61\x00\x62\x00\x63\x00\x64\x00\x65\x00"
     26                           "\x66\x00\x67\x00\x68\x00\x69\x00\x6a\x00\x6b\x00"
     27                           "\x6c\x00\x00\x00";
     28 
     29   unsigned char data2[] = "\x0c\x00\x00\x00\x38\x00\x00\x00\x24\x00\x00\x00"
     30                           "\x57\x49\x43\x4b\x18\x00\x00\x00\x02\x00\x00\x00"
     31                           "\x67\x00\x72\x00\x01\x00\x00\x00\x00\x00\x00\x00"
     32                           "\x00\x00\x00\x00\xa8\xea\xf4\xe5\x9f\x9a\xc8\x01"
     33                           "\x09\x00\x00\x00\x14\x00\x00\x00\xa8\xea\xf4\xe5"
     34                           "\x9f\x9a\xc8\x01\x07\x00\x00\x00\x61\x00\x62\x00"
     35                           "\x63\x00\x64\x00\x65\x00\x66\x00\x67\x00\x68\x00"
     36                           "\x69\x00\x00\x00\x61\x00\x62\x00\x63\x00\x64\x00"
     37                           "\x65\x00\x66\x00\x67\x00\x00\x00";
     38 
     39 
     40 
     41   std::vector<unsigned char> decrypted_data1;
     42   decrypted_data1.resize(arraysize(data1));
     43   memcpy(&decrypted_data1.front(), data1, sizeof(data1));
     44 
     45   std::vector<unsigned char> decrypted_data2;
     46   decrypted_data2.resize(arraysize(data2));
     47   memcpy(&decrypted_data2.front(), data2, sizeof(data2));
     48 
     49   string16 password;
     50   string16 username;
     51   ASSERT_TRUE(ie7_password::GetUserPassFromData(decrypted_data1, &username,
     52                                                 &password));
     53   EXPECT_EQ(L"abcdefgh", username);
     54   EXPECT_EQ(L"abcdefghijkl", password);
     55 
     56   ASSERT_TRUE(ie7_password::GetUserPassFromData(decrypted_data2, &username,
     57                                                 &password));
     58   EXPECT_EQ(L"abcdefghi", username);
     59   EXPECT_EQ(L"abcdefg", password);
     60 }
     61