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

Unified Diff: chrome/installer/util/shell_util.cc

Issue 2017123002: Adds a base32 component. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Migrates installer/setup/user_hive_visitor.cc to use base32 component Created 4 years, 6 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
« no previous file with comments | « chrome/installer/util/shell_util.h ('k') | chrome/installer/util/shell_util_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/installer/util/shell_util.cc
diff --git a/chrome/installer/util/shell_util.cc b/chrome/installer/util/shell_util.cc
index d4dc85ec43b5d85219e037434cafaa3e1d766515..72832e151edfe7433c1b66eb0e4516c79f38fb3b 100644
--- a/chrome/installer/util/shell_util.cc
+++ b/chrome/installer/util/shell_util.cc
@@ -57,6 +57,7 @@
#include "chrome/installer/util/scoped_user_protocol_entry.h"
#include "chrome/installer/util/util_constants.h"
#include "chrome/installer/util/work_item.h"
+#include "components/base32/base32.h"
using base::win::RegKey;
@@ -136,17 +137,15 @@ UserSpecificRegistrySuffix::UserSpecificRegistrySuffix() {
base::MD5Digest md5_digest;
std::string user_sid_ascii(base::UTF16ToASCII(user_sid));
base::MD5Sum(user_sid_ascii.c_str(), user_sid_ascii.length(), &md5_digest);
- const base::string16 base32_md5(
- ShellUtil::ByteArrayToBase32(md5_digest.a, arraysize(md5_digest.a)));
- // The value returned by the base32 algorithm above must never change and
- // must always be 26 characters long (i.e. if someone ever moves this to
- // base and implements the full base32 algorithm (i.e. with appended '='
- // signs in the output), they must provide a flag to allow this method to
- // still request the output with no appended '=' signs).
+ std::string base32_md5 = base32::Base32Encode(
+ base::StringPiece(reinterpret_cast<char*>(md5_digest.a),
+ arraysize(md5_digest.a)),
+ base32::Base32EncodePolicy::OMIT_PADDING);
+ // The value returned by the base32 algorithm above must never change.
DCHECK_EQ(base32_md5.length(), 26U);
suffix_.reserve(base32_md5.length() + 1);
suffix_.assign(1, L'.');
- suffix_.append(base32_md5);
+ suffix_.append(base::ASCIIToUTF16(base32_md5));
}
bool UserSpecificRegistrySuffix::GetSuffix(base::string16* suffix) {
@@ -2269,54 +2268,6 @@ bool ShellUtil::GetOldUserSpecificRegistrySuffix(base::string16* suffix) {
return true;
}
-base::string16 ShellUtil::ByteArrayToBase32(const uint8_t* bytes, size_t size) {
- static const char kEncoding[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";
-
- // Eliminate special cases first.
- if (size == 0) {
- return base::string16();
- } else if (size == 1) {
- base::string16 ret;
- ret.push_back(kEncoding[(bytes[0] & 0xf8) >> 3]);
- ret.push_back(kEncoding[(bytes[0] & 0x07) << 2]);
- return ret;
- } else if (size >= std::numeric_limits<size_t>::max() / 8) {
- // If |size| is too big, the calculation of |encoded_length| below will
- // overflow.
- NOTREACHED();
- return base::string16();
- }
-
- // Overestimate the number of bits in the string by 4 so that dividing by 5
- // is the equivalent of rounding up the actual number of bits divided by 5.
- const size_t encoded_length = (size * 8 + 4) / 5;
-
- base::string16 ret;
- ret.reserve(encoded_length);
-
- // A bit stream which will be read from the left and appended to from the
- // right as it's emptied.
- uint16_t bit_stream = (bytes[0] << 8) + bytes[1];
- size_t next_byte_index = 2;
- int free_bits = 0;
- while (free_bits < 16) {
- // Extract the 5 leftmost bits in the stream
- ret.push_back(kEncoding[(bit_stream & 0xf800) >> 11]);
- bit_stream <<= 5;
- free_bits += 5;
-
- // If there is enough room in the bit stream, inject another byte (if there
- // are any left...).
- if (free_bits >= 8 && next_byte_index < size) {
- free_bits -= 8;
- bit_stream += bytes[next_byte_index++] << free_bits;
- }
- }
-
- DCHECK_EQ(ret.length(), encoded_length);
- return ret;
-}
-
// static
bool ShellUtil::AddFileAssociations(
const base::string16& prog_id,
« no previous file with comments | « chrome/installer/util/shell_util.h ('k') | chrome/installer/util/shell_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698