diff options
Diffstat (limited to 'identity/support/tests/IdentityCredentialSupportTest.cpp')
-rw-r--r-- | identity/support/tests/IdentityCredentialSupportTest.cpp | 128 |
1 files changed, 18 insertions, 110 deletions
diff --git a/identity/support/tests/IdentityCredentialSupportTest.cpp b/identity/support/tests/IdentityCredentialSupportTest.cpp index 509133cbc9..4c9b87af6f 100644 --- a/identity/support/tests/IdentityCredentialSupportTest.cpp +++ b/identity/support/tests/IdentityCredentialSupportTest.cpp @@ -55,99 +55,6 @@ TEST(IdentityCredentialSupport, decodeHex) { EXPECT_FALSE(support::decodeHex("012")); } -TEST(IdentityCredentialSupport, CborPrettyPrint) { - EXPECT_EQ("'Some text'", support::cborPrettyPrint(cppbor::Tstr("Some text").encode())); - - EXPECT_EQ("''", support::cborPrettyPrint(cppbor::Tstr("").encode())); - - EXPECT_EQ("{0x01, 0x00, 0x02, 0xf0, 0xff, 0x40}", - support::cborPrettyPrint( - cppbor::Bstr(vector<uint8_t>({1, 0, 2, 240, 255, 64})).encode())); - - EXPECT_EQ("{}", support::cborPrettyPrint(cppbor::Bstr(vector<uint8_t>()).encode())); - - EXPECT_EQ("true", support::cborPrettyPrint(cppbor::Bool(true).encode())); - - EXPECT_EQ("false", support::cborPrettyPrint(cppbor::Bool(false).encode())); - - EXPECT_EQ("42", support::cborPrettyPrint(cppbor::Uint(42).encode())); - - EXPECT_EQ("9223372036854775807", // 0x7fff ffff ffff ffff - support::cborPrettyPrint(cppbor::Uint(std::numeric_limits<int64_t>::max()).encode())); - - EXPECT_EQ("-42", support::cborPrettyPrint(cppbor::Nint(-42).encode())); - - EXPECT_EQ("-9223372036854775808", // -0x8000 0000 0000 0000 - support::cborPrettyPrint(cppbor::Nint(std::numeric_limits<int64_t>::min()).encode())); -} - -TEST(IdentityCredentialSupport, CborPrettyPrintCompound) { - cppbor::Array array = cppbor::Array("foo", "bar", "baz"); - EXPECT_EQ("['foo', 'bar', 'baz', ]", support::cborPrettyPrint(array.encode())); - - cppbor::Map map = cppbor::Map().add("foo", 42).add("bar", 43).add("baz", 44); - EXPECT_EQ( - "{\n" - " 'foo' : 42,\n" - " 'bar' : 43,\n" - " 'baz' : 44,\n" - "}", - support::cborPrettyPrint(map.encode())); - - cppbor::Array array2 = cppbor::Array(cppbor::Tstr("Some text"), cppbor::Nint(-42)); - EXPECT_EQ("['Some text', -42, ]", support::cborPrettyPrint(array2.encode())); - - cppbor::Map map2 = cppbor::Map().add(42, "foo").add(43, "bar").add(44, "baz"); - EXPECT_EQ( - "{\n" - " 42 : 'foo',\n" - " 43 : 'bar',\n" - " 44 : 'baz',\n" - "}", - support::cborPrettyPrint(map2.encode())); - - cppbor::Array deeplyNestedArrays = - cppbor::Array(cppbor::Array(cppbor::Array("a", "b", "c")), - cppbor::Array(cppbor::Array("d", "e", cppbor::Array("f", "g")))); - EXPECT_EQ( - "[\n" - " ['a', 'b', 'c', ],\n" - " [\n 'd',\n" - " 'e',\n" - " ['f', 'g', ],\n" - " ],\n" - "]", - support::cborPrettyPrint(deeplyNestedArrays.encode())); - - EXPECT_EQ( - "[\n" - " {0x0a, 0x0b},\n" - " 'foo',\n" - " 42,\n" - " ['foo', 'bar', 'baz', ],\n" - " {\n" - " 'foo' : 42,\n" - " 'bar' : 43,\n" - " 'baz' : 44,\n" - " },\n" - " {\n" - " 'deep1' : ['Some text', -42, ],\n" - " 'deep2' : {\n" - " 42 : 'foo',\n" - " 43 : 'bar',\n" - " 44 : 'baz',\n" - " },\n" - " },\n" - "]", - support::cborPrettyPrint(cppbor::Array(cppbor::Bstr(vector<uint8_t>{10, 11}), - cppbor::Tstr("foo"), cppbor::Uint(42), - std::move(array), std::move(map), - (cppbor::Map() - .add("deep1", std::move(array2)) - .add("deep2", std::move(map2)))) - .encode())); -} - TEST(IdentityCredentialSupport, Signatures) { vector<uint8_t> data = {1, 2, 3}; @@ -219,7 +126,7 @@ TEST(IdentityCredentialSupport, CoseSignatures) { ASSERT_EQ(data, payload.value()); // Finally, check that |coseSign1| are the bytes of a valid COSE_Sign1 message - string out = support::cborPrettyPrint(coseSign1.value()); + string out = cppbor::prettyPrint(coseSign1.value()); out = replaceLine(out, -2, " [] // Signature Removed"); EXPECT_EQ( "[\n" @@ -250,7 +157,7 @@ TEST(IdentityCredentialSupport, CoseSignaturesAdditionalData) { ASSERT_EQ(0, payload.value().size()); // Finally, check that |coseSign1| are the bytes of a valid COSE_Sign1 message - string out = support::cborPrettyPrint(coseSign1.value()); + string out = cppbor::prettyPrint(coseSign1.value()); out = replaceLine(out, -2, " [] // Signature Removed"); EXPECT_EQ( "[\n" @@ -411,7 +318,7 @@ TEST(IdentityCredentialSupport, CoseMac0) { "0x86, 0x5c, 0x28, 0x2c, 0xd5, 0xa5, 0x13, 0xff, 0x3b, 0xd1, 0xde, 0x70, 0x5e, 0xbb, " "0xe2, 0x2d, 0x42, 0xbe, 0x53},\n" "]", - support::cborPrettyPrint(mac.value())); + cppbor::prettyPrint(mac.value())); } TEST(IdentityCredentialSupport, CoseMac0DetachedContent) { @@ -433,7 +340,7 @@ TEST(IdentityCredentialSupport, CoseMac0DetachedContent) { "0x86, 0x5c, 0x28, 0x2c, 0xd5, 0xa5, 0x13, 0xff, 0x3b, 0xd1, 0xde, 0x70, 0x5e, 0xbb, " "0xe2, 0x2d, 0x42, 0xbe, 0x53},\n" "]", - support::cborPrettyPrint(mac.value())); + cppbor::prettyPrint(mac.value())); } // Generates a private key in DER format for a small value of 'd'. @@ -460,8 +367,8 @@ std::pair<vector<uint8_t>, vector<uint8_t>> p256PrivateKeyGetXandY( const cppbor::Item* findValueForTstr(const cppbor::Map* map, const string& keyValue) { // TODO: Need cast until libcppbor's Map::get() is marked as const - auto [item, found] = ((cppbor::Map*)map)->get(keyValue); - if (!found) { + const auto& item = map->get(keyValue); + if (!item) { return nullptr; } return item.get(); @@ -483,12 +390,13 @@ const cppbor::Map* findMapValueForTstr(const cppbor::Map* map, const string& key return item->asMap(); } -const cppbor::Semantic* findSemanticValueForTstr(const cppbor::Map* map, const string& keyValue) { +const cppbor::SemanticTag* findSemanticValueForTstr(const cppbor::Map* map, + const string& keyValue) { const cppbor::Item* item = findValueForTstr(map, keyValue); if (item == nullptr) { return nullptr; } - return item->asSemantic(); + return item->asSemanticTag(); } const std::string findStringValueForTstr(const cppbor::Map* map, const string& keyValue) { @@ -576,11 +484,11 @@ TEST(IdentityCredentialSupport, testVectors_18013_5) { auto [sessionEstablishmentItem, _se, _se2] = cppbor::parse(sessionEstablishmentEncoded.value()); const cppbor::Map* sessionEstablishment = sessionEstablishmentItem->asMap(); ASSERT_NE(sessionEstablishment, nullptr); - const cppbor::Semantic* eReaderKeyBytes = + const cppbor::SemanticTag* eReaderKeyBytes = findSemanticValueForTstr(sessionEstablishment, "eReaderKeyBytes"); ASSERT_NE(eReaderKeyBytes, nullptr); - ASSERT_EQ(eReaderKeyBytes->value(), 24); - const cppbor::Bstr* eReaderKeyBstr = eReaderKeyBytes->child()->asBstr(); + ASSERT_EQ(eReaderKeyBytes->semanticTag(), 24); + const cppbor::Bstr* eReaderKeyBstr = eReaderKeyBytes->asBstr(); ASSERT_NE(eReaderKeyBstr, nullptr); vector<uint8_t> eReaderKeyEncoded = eReaderKeyBstr->value(); // TODO: verify this agrees with ephemeralReaderKeyX and ephemeralReaderKeyY @@ -605,12 +513,12 @@ TEST(IdentityCredentialSupport, testVectors_18013_5) { // SessionTranscriptBytes = #6.24(bstr .cbor SessionTranscript) // cppbor::Array sessionTranscript; - sessionTranscript.add(cppbor::Semantic(24, deviceEngagementEncoded)); - sessionTranscript.add(cppbor::Semantic(24, eReaderKeyEncoded)); + sessionTranscript.add(cppbor::SemanticTag(24, deviceEngagementEncoded)); + sessionTranscript.add(cppbor::SemanticTag(24, eReaderKeyEncoded)); sessionTranscript.add(cppbor::Null()); vector<uint8_t> sessionTranscriptEncoded = sessionTranscript.encode(); vector<uint8_t> sessionTranscriptBytes = - cppbor::Semantic(24, sessionTranscriptEncoded).encode(); + cppbor::SemanticTag(24, sessionTranscriptEncoded).encode(); // The expected EMacKey is 4c1ebb8aacc633465390fa44edfdb49cb57f2e079aaa771d812584699c0b97e2 // @@ -696,11 +604,11 @@ TEST(IdentityCredentialSupport, testVectors_18013_5) { // Dig out the encoded form of DeviceNameSpaces // - const cppbor::Semantic* deviceNameSpacesBytes = + const cppbor::SemanticTag* deviceNameSpacesBytes = findSemanticValueForTstr(deviceSigned, "nameSpaces"); ASSERT_NE(deviceNameSpacesBytes, nullptr); - ASSERT_EQ(deviceNameSpacesBytes->value(), 24); - const cppbor::Bstr* deviceNameSpacesBstr = deviceNameSpacesBytes->child()->asBstr(); + ASSERT_EQ(deviceNameSpacesBytes->semanticTag(), 24); + const cppbor::Bstr* deviceNameSpacesBstr = deviceNameSpacesBytes->asBstr(); ASSERT_NE(deviceNameSpacesBstr, nullptr); vector<uint8_t> deviceNameSpacesEncoded = deviceNameSpacesBstr->value(); |