blob: e1ea73c00df6d4a27234eae45c5af110bc2fbccb [file] [log] [blame]
Yingdi Yuebfa4cb2014-06-17 15:28:53 -07001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/**
3 * Copyright (c) 2013-2014 Regents of the University of California.
4 *
5 * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
6 *
7 * ndn-cxx library is free software: you can redistribute it and/or modify it under the
8 * terms of the GNU Lesser General Public License as published by the Free Software
9 * Foundation, either version 3 of the License, or (at your option) any later version.
10 *
11 * ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
12 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13 * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
14 *
15 * You should have received copies of the GNU General Public License and GNU Lesser
16 * General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see
17 * <http://www.gnu.org/licenses/>.
18 *
19 * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
20 */
21
22#include "security/signature-sha256-with-rsa.hpp"
23
24#include "boost-test.hpp"
25
26namespace ndn {
27
28BOOST_AUTO_TEST_SUITE(SecurityTestSignatureSha256WithRsa)
29
30const uint8_t sigInfo[] = {
310x16, 0x1b, // SignatureInfo
32 0x1b, 0x01, // SignatureType
33 0x01,
34 0x1c, 0x16, // KeyLocator
35 0x07, 0x14, // Name
36 0x08, 0x04,
37 0x74, 0x65, 0x73, 0x74,
38 0x08, 0x03,
39 0x6b, 0x65, 0x79,
40 0x08, 0x07,
41 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72
42};
43
44const uint8_t sigValue[] = {
450x17, 0x80, // SignatureValue
46 0x2f, 0xd6, 0xf1, 0x6e, 0x80, 0x6f, 0x10, 0xbe, 0xb1, 0x6f, 0x3e, 0x31, 0xec,
47 0xe3, 0xb9, 0xea, 0x83, 0x30, 0x40, 0x03, 0xfc, 0xa0, 0x13, 0xd9, 0xb3, 0xc6,
48 0x25, 0x16, 0x2d, 0xa6, 0x58, 0x41, 0x69, 0x62, 0x56, 0xd8, 0xb3, 0x6a, 0x38,
49 0x76, 0x56, 0xea, 0x61, 0xb2, 0x32, 0x70, 0x1c, 0xb6, 0x4d, 0x10, 0x1d, 0xdc,
50 0x92, 0x8e, 0x52, 0xa5, 0x8a, 0x1d, 0xd9, 0x96, 0x5e, 0xc0, 0x62, 0x0b, 0xcf,
51 0x3a, 0x9d, 0x7f, 0xca, 0xbe, 0xa1, 0x41, 0x71, 0x85, 0x7a, 0x8b, 0x5d, 0xa9,
52 0x64, 0xd6, 0x66, 0xb4, 0xe9, 0x8d, 0x0c, 0x28, 0x43, 0xee, 0xa6, 0x64, 0xe8,
53 0x55, 0xf6, 0x1c, 0x19, 0x0b, 0xef, 0x99, 0x25, 0x1e, 0xdc, 0x78, 0xb3, 0xa7,
54 0xaa, 0x0d, 0x14, 0x58, 0x30, 0xe5, 0x37, 0x6a, 0x6d, 0xdb, 0x56, 0xac, 0xa3,
55 0xfc, 0x90, 0x7a, 0xb8, 0x66, 0x9c, 0x0e, 0xf6, 0xb7, 0x64, 0xd1
56};
57
58
59BOOST_AUTO_TEST_CASE(Decoding)
60{
61 Block sigInfoBlock(sigInfo, sizeof(sigInfo));
62 Block sigValueBlock(sigValue, sizeof(sigValue));
63
64 Signature sig(sigInfoBlock, sigValueBlock);
65 BOOST_REQUIRE_NO_THROW(SignatureSha256WithRsa(sig));
66}
67
68BOOST_AUTO_TEST_CASE(Encoding)
69{
70 SignatureSha256WithRsa sig;
71
72 Name name("/test/key/locator");
73 KeyLocator keyLocator(name);
74
75 sig.setKeyLocator(keyLocator);
76
77 const Block& encodeSigInfoBlock = sig.getInfo();
78
79 Block sigInfoBlock(sigInfo, sizeof(sigInfo));
80
81 BOOST_CHECK_EQUAL_COLLECTIONS(sigInfoBlock.wire(),
82 sigInfoBlock.wire() + sigInfoBlock.size(),
83 encodeSigInfoBlock.wire(),
84 encodeSigInfoBlock.wire() + encodeSigInfoBlock.size());
85}
86
87BOOST_AUTO_TEST_SUITE_END()
88
89} // namespace ndn