blob: bd24d12ac3154ec9d45811231d816ed6b1c50da2 [file] [log] [blame] [edit]
// Copyright 2023 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "u2fd/client/util.h"
#include <optional>
#include <base/check.h>
#include <base/strings/string_number_conversions.h>
#include <gtest/gtest.h>
namespace u2f {
namespace util {
namespace {
brillo::Blob HexArrayToBlob(const char* array) {
brillo::Blob blob;
CHECK(base::HexStringToBytes(array, &blob));
return blob;
}
// A real cert returned from Cr50 with SN field randomized.
constexpr char kCertHex[] =
"3082013a3081e1a003020102020e04f3ef5b229bf8bbbe9930959734300a06082a8648ce3d"
"04030230123110300e06035504031307746b2d783030313022180f32303030303130313030"
"303030305a180f32303939313233313233353935395a30123110300e06035504031307746b"
"2d783030313059301306072a8648ce3d020106082a8648ce3d0301070342000467b32d3439"
"c50c03c15b76e3b763dea60a79c0b4c62d485188d57d8fe50a065526d6973ab35e0541ce90"
"7b8947dfbed5ec8b84216e192ae23b4805d5583b85d4a31730153013060b2b0601040182e5"
"1c020101040403020520300a06082a8648ce3d0403020348003045022100c04b0219bf623a"
"5f4898b669310ea3c864a6f72c4962ff432ed8147d4b30c5bb02201a7682e8086b4a04228e"
"821f51b32a7c0bec938be348d6a87b454c390cb283dc";
constexpr char kSerialNumberHex[] = "04f3ef5b229bf8bbbe9930959734";
TEST(U2fUtilTest, ParseSerialNumberFromCert) {
std::optional<brillo::Blob> sn =
ParseSerialNumberFromCert(HexArrayToBlob(kCertHex));
ASSERT_TRUE(sn.has_value());
EXPECT_EQ(*sn, HexArrayToBlob(kSerialNumberHex));
}
} // namespace
} // namespace util
} // namespace u2f