| // Copyright 2020 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // This file contains some utility function to print fido |
| // related data structures |
| |
| #ifndef CRYPTOHOME_FIDO_UTILS_H_ |
| #define CRYPTOHOME_FIDO_UTILS_H_ |
| |
| #include <string> |
| |
| namespace cryptohome { |
| namespace fido { |
| |
| // Read a big endian number. Fido devices use big endian. |
| template <typename T> |
| inline void ReadBigEndian(const char buf[], T* out) { |
| *out = buf[0]; |
| for (size_t i = 1; i < sizeof(T); ++i) { |
| *out <<= 8; |
| // Must cast to uint8_t to avoid clobbering by sign extension. |
| *out |= static_cast<uint8_t>(buf[i]); |
| } |
| } |
| |
| } // namespace fido |
| } // namespace cryptohome |
| |
| #endif // CRYPTOHOME_FIDO_UTILS_H_ |