xref: /aosp_15_r20/external/gsc-utils/tpm_generated/hex.cc (revision 4f2df630800bdcf1d4f0decf95d8a1cb87344f5f)
1*4f2df630SAndroid Build Coastguard Worker // Copyright 2024 The ChromiumOS Authors
2*4f2df630SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*4f2df630SAndroid Build Coastguard Worker // found in the LICENSE file.
4*4f2df630SAndroid Build Coastguard Worker 
5*4f2df630SAndroid Build Coastguard Worker #include "hex.h"
6*4f2df630SAndroid Build Coastguard Worker 
7*4f2df630SAndroid Build Coastguard Worker namespace trunks {
8*4f2df630SAndroid Build Coastguard Worker 
HexEncode(const char * data,std::size_t len)9*4f2df630SAndroid Build Coastguard Worker std::string HexEncode(const char* data, std::size_t len) {
10*4f2df630SAndroid Build Coastguard Worker   static constexpr char kHexChars[] = {'0', '1', '2', '3', '4', '5', '6', '7',
11*4f2df630SAndroid Build Coastguard Worker                                        '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
12*4f2df630SAndroid Build Coastguard Worker   std::string ret;
13*4f2df630SAndroid Build Coastguard Worker   ret.reserve(len * 2);
14*4f2df630SAndroid Build Coastguard Worker   for (int i = 0; i < len; i++) {
15*4f2df630SAndroid Build Coastguard Worker     ret.push_back(kHexChars[data[i] >> 4]);
16*4f2df630SAndroid Build Coastguard Worker     ret.push_back(kHexChars[data[i] & 0xf]);
17*4f2df630SAndroid Build Coastguard Worker   }
18*4f2df630SAndroid Build Coastguard Worker   return ret;
19*4f2df630SAndroid Build Coastguard Worker }
20*4f2df630SAndroid Build Coastguard Worker 
21*4f2df630SAndroid Build Coastguard Worker }  // namespace trunks
22