blob: 239bf37c0ff1a0fa4999a3fe0aed33376adfaa87 [file] [log] [blame]
Avi Drissman8ba1bad2022-09-13 19:22:361// Copyright 2014 The Chromium Authors
[email protected]fdd28372014-08-21 02:27:262// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "components/crx_file/id_util.h"
6
avibc5337b2015-12-25 23:16:337#include <stdint.h>
8
Arthur Sonzogni1a6fc6412024-12-10 18:54:589#include <array>
10
[email protected]fdd28372014-08-21 02:27:2611#include "testing/gtest/include/gtest/gtest.h"
12
Andrew Rayskiyad315762022-11-04 00:07:5613namespace crx_file::id_util {
[email protected]fdd28372014-08-21 02:27:2614
15TEST(IDUtilTest, GenerateID) {
Arthur Sonzogni1a6fc6412024-12-10 18:54:5816 const auto public_key_info = std::to_array<uint8_t>({
[email protected]fdd28372014-08-21 02:27:2617 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
18 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81,
19 0x89, 0x02, 0x81, 0x81, 0x00, 0xb8, 0x7f, 0x2b, 0x20, 0xdc, 0x7c, 0x9b,
20 0x0c, 0xdc, 0x51, 0x61, 0x99, 0x0d, 0x36, 0x0f, 0xd4, 0x66, 0x88, 0x08,
21 0x55, 0x84, 0xd5, 0x3a, 0xbf, 0x2b, 0xa4, 0x64, 0x85, 0x7b, 0x0c, 0x04,
22 0x13, 0x3f, 0x8d, 0xf4, 0xbc, 0x38, 0x0d, 0x49, 0xfe, 0x6b, 0xc4, 0x5a,
23 0xb0, 0x40, 0x53, 0x3a, 0xd7, 0x66, 0x09, 0x0f, 0x9e, 0x36, 0x74, 0x30,
24 0xda, 0x8a, 0x31, 0x4f, 0x1f, 0x14, 0x50, 0xd7, 0xc7, 0x20, 0x94, 0x17,
25 0xde, 0x4e, 0xb9, 0x57, 0x5e, 0x7e, 0x0a, 0xe5, 0xb2, 0x65, 0x7a, 0x89,
26 0x4e, 0xb6, 0x47, 0xff, 0x1c, 0xbd, 0xb7, 0x38, 0x13, 0xaf, 0x47, 0x85,
27 0x84, 0x32, 0x33, 0xf3, 0x17, 0x49, 0xbf, 0xe9, 0x96, 0xd0, 0xd6, 0x14,
28 0x6f, 0x13, 0x8d, 0xc5, 0xfc, 0x2c, 0x72, 0xba, 0xac, 0xea, 0x7e, 0x18,
29 0x53, 0x56, 0xa6, 0x83, 0xa2, 0xce, 0x93, 0x93, 0xe7, 0x1f, 0x0f, 0xe6,
Arthur Sonzogni1a6fc6412024-12-10 18:54:5830 0x0f, 0x02, 0x03, 0x01, 0x00, 0x01,
31 });
[email protected]fdd28372014-08-21 02:27:2632 std::string extension_id =
33 GenerateId(std::string(reinterpret_cast<const char*>(&public_key_info[0]),
Daniel Cheng7b7aaecc2022-02-26 17:57:2534 std::size(public_key_info)));
[email protected]fdd28372014-08-21 02:27:2635 EXPECT_EQ("melddjfinppjdikinhbgehiennejpfhp", extension_id);
36
David 'Digit' Turner2ccae2502017-11-10 17:16:0437 EXPECT_EQ("daibjpdaanagajckigeiigphanababab",
Tom Sepez8040fad12023-11-07 19:47:0538 GenerateIdFromHash(public_key_info));
David 'Digit' Turner2ccae2502017-11-10 17:16:0439
[email protected]fdd28372014-08-21 02:27:2640 EXPECT_EQ("jpignaibiiemhngfjkcpokkamffknabf", GenerateId("test"));
41
42 EXPECT_EQ("ncocknphbhhlhkikpnnlmbcnbgdempcd", GenerateId("_"));
43
xiaochu315bef22017-03-15 02:54:1544 EXPECT_EQ("a", GenerateIdFromHex("_"));
45
46 EXPECT_EQ(
47 "bjbdkfoakgmkndalgpadobhgbhhoanhongcmfnghaakjmggnkffgnhmdpfngkeho",
48 GenerateIdFromHex(
49 "1913a5e0a6cad30b6f03e176177e0d7ed62c5d6700a9c66da556d7c3f5d6a47e"));
50
[email protected]fdd28372014-08-21 02:27:2651 EXPECT_EQ(
52 "jimneklojkjdibfkgiiophfhjhbdgcfi",
53 GenerateId("this_string_is_longer_than_a_single_sha256_hash_digest"));
54}
55
Andrew Rayskiyad315762022-11-04 00:07:5656} // namespace crx_file::id_util