From 68903732a9fd57e2430f4a2f90876450c071e1eb Mon Sep 17 00:00:00 2001 From: Yogesh Deshpande Date: Mon, 22 Nov 2021 12:32:12 -0500 Subject: [PATCH] Correct Tags to align it with PSA Endorsement Draft --- cocli/cmd/corimExtract_test.go | 9 +-- cocli/cmd/test_vars.go | 101 ++++++++++++--------------------- comid/cbor.go | 5 +- comid/class_test.go | 8 +-- comid/classid_test.go | 8 +-- comid/example_test.go | 2 +- comid/psareferencevalue.go | 8 --- corim/signedcorim_test.go | 2 +- corim/unsignedcorim_test.go | 2 +- 9 files changed, 50 insertions(+), 95 deletions(-) diff --git a/cocli/cmd/corimExtract_test.go b/cocli/cmd/corimExtract_test.go index c59fe327..d4ab1730 100644 --- a/cocli/cmd/corimExtract_test.go +++ b/cocli/cmd/corimExtract_test.go @@ -96,10 +96,7 @@ func Test_CorimExtractCmd_ok_save_to_default_dir(t *testing.T) { _, err = fs.Stat("000000-comid.cbor") assert.NoError(t, err) - _, err = fs.Stat("000001-comid.cbor") - assert.NoError(t, err) - _, err = fs.Stat("000002-coswid.cbor") - assert.NoError(t, err) + } func Test_CorimExtractCmd_ok_save_to_non_default_dir(t *testing.T) { @@ -120,8 +117,4 @@ func Test_CorimExtractCmd_ok_save_to_non_default_dir(t *testing.T) { _, err = fs.Stat("my-dir/000000-comid.cbor") assert.NoError(t, err) - _, err = fs.Stat("my-dir/000001-comid.cbor") - assert.NoError(t, err) - _, err = fs.Stat("my-dir/000002-coswid.cbor") - assert.NoError(t, err) } diff --git a/cocli/cmd/test_vars.go b/cocli/cmd/test_vars.go index 812eb609..3fb4d07e 100644 --- a/cocli/cmd/test_vars.go +++ b/cocli/cmd/test_vars.go @@ -44,64 +44,33 @@ var ( }`) testSignedCorimValid = comid.MustHexDecode(nil, ` -d284585da3012603746170706c69636174696f6e2f72696d2b63626f7208 -5841a200a2007441434d45204c7464207369676e696e67206b657901d820 -7468747470733a2f2f61636d652e6578616d706c6501a200c11a61ce4800 -01c11a69546780a059061aa600505c57e8f446cd421b91c908cf93e13cfc -0183590216d901faa40065656e2d474201a10050366d0a0a598845ed8488 -2f2a544f62420281a3006941434d45204c74642e01d8207468747470733a -2f2f61636d652e6578616d706c65028300010204a1028282a200a300d902 -27582061636d652d696d706c656d656e746174696f6e2d69642d30303030 -3030303031016441434d45026a526f616452756e6e657201d90226582101 -ceebae7b8927a3227e5303cf5e0f1f7b34bb542ad7250ac03fbcde36ec2f -150881a100787c4d466b77457759484b6f5a497a6a3043415159494b6f5a -497a6a30444151634451674145466e3074616f41775233506d724b6b594c -74417344396f30354b534d366d6267664e436770754c306736567054486b -5a6c3733776b354244786f56376e2b4f656565306949716b5733484d5a54 -334554696e694a64673d3d82a200a300d90227582061636d652d696d706c -656d656e746174696f6e2d69642d303030303030303031016441434d4502 -6a526f616452756e6e657201d902265821014ca3e4f50bf248c39787020d -68ffd05c88767751bf2645ca923f57a98becd29681a100787c4d466b7745 -7759484b6f5a497a6a3043415159494b6f5a497a6a304441516344516741 -453656777165376879334f385970612b425545544c556a424e5533724558 -565579743958485237484a574c473758544b51643969316b565258654250 -444c466e66597275312f657578526e4a4d374839556f46444c64413d3d59 -01a3d901faa40065656e2d474201a1005043bbe37f2e614b33aed353cff1 -428b160281a3006941434d45204c74642e01d8207468747470733a2f2f61 -636d652e6578616d706c65028300010204a1008182a100a300d902275820 -61636d652d696d706c656d656e746174696f6e2d69642d30303030303030 -3031016441434d45026a526f616452756e6e657283a200d90258a3016242 -4c0465322e312e30055820acbb11c7e4da217205523ce4ce1a245ae1a239 -ae3c6bfd9e7871f7e5d8bae86b01a102818201582087428fc522803d3106 -5e7bce3cf03fe475096631e5e07bbd7a0fde60c4cf25c7a200d90258a301 -6450526f540465312e332e35055820acbb11c7e4da217205523ce4ce1a24 -5ae1a239ae3c6bfd9e7871f7e5d8bae86b01a10281820158200263829989 -b6fd954f72baaf2fc64bc2e2f01d692d4de72986ea808f6e99813fa200d9 -0258a3016441526f540465302e312e34055820acbb11c7e4da217205523c -e4ce1a245ae1a239ae3c6bfd9e7871f7e5d8bae86b01a1028182015820a3 -a5e715f0cc574a73c3f9bebb6bc24f32ffd5b67b387244c2c909da779a14 -7859017cd901f9a8007820636f6d2e61636d652e727264323031332d6365 -2d7370312d76342d312d352d300c0001783041434d4520526f616472756e -6e6572204465746563746f72203230313320436f796f7465204564697469 -6f6e205350310d65342e312e3505a5182b65747269616c182d6432303133 -182f66636f796f7465183473526f616472756e6e6572204465746563746f -721836637370310282a3181f745468652041434d4520436f72706f726174 -696f6e18206861636d652e636f6d1821820102a3181f75436f796f746520 -53657276696365732c20496e632e18206c6d79636f796f74652e636f6d18 -210404a21826781c7777772e676e752e6f72672f6c6963656e7365732f67 -706c2e7478741828676c6963656e736506a110a318186a72726465746563 -746f7218196d2570726f6772616d6461746125181aa111a318186e727264 -65746563746f722e657865141a000820e80782015820a314fc2dc663ae7a -6b6bc6787594057396e6b3f569cd50fd5ddb4d1bbafd2b6a0281a200d820 -784068747470733a2f2f706172656e742e6578616d706c652f72696d732f -63636233616138352d363162342d343066312d383438652d303261643665 -3861323534620182015820e45b72f5c0c0b572db4d8d3ab7e97f368ff74e -62347a824decb67a84e5224d750382482b06010401a02064781c68747470 -3a2f2f61726d2e636f6d2f696f742f70726f66696c652f3104a200c11a61 -ce480001c11a695467800581a3006941434d45204c74642e01d8206c6163 -6d652e6578616d706c6502810158400d35302dda8e1249e295154255370f -ade855043ae59c7d460b49415fddec40d70e22f21f98ac18bc69a18d1757 -30f6d7c6c28fa0819aeded8653f69d71d60172 + d284585da3012603746170706c69636174696f6e2f72696d2b63626f7208 + 5841a200a2007441434d45204c7464207369676e696e67206b657901d820 + 7468747470733a2f2f61636d652e6578616d706c6501a200c11a61ce4800 + 01c11a69546780a0590282a600505c57e8f446cd421b91c908cf93e13cfc + 01815901a3d901faa40065656e2d474201a1005043bbe37f2e614b33aed3 + 53cff1428b160281a3006941434d45204c74642e01d8207468747470733a + 2f2f61636d652e6578616d706c65028300010204a1008182a100a300d902 + 58582061636d652d696d706c656d656e746174696f6e2d69642d30303030 + 3030303031016441434d45026a526f616452756e6e657283a200d90259a3 + 0162424c0465322e312e30055820acbb11c7e4da217205523ce4ce1a245a + e1a239ae3c6bfd9e7871f7e5d8bae86b01a102818201582087428fc52280 + 3d31065e7bce3cf03fe475096631e5e07bbd7a0fde60c4cf25c7a200d902 + 59a3016450526f540465312e332e35055820acbb11c7e4da217205523ce4 + ce1a245ae1a239ae3c6bfd9e7871f7e5d8bae86b01a10281820158200263 + 829989b6fd954f72baaf2fc64bc2e2f01d692d4de72986ea808f6e99813f + a200d90259a3016441526f540465302e312e34055820acbb11c7e4da2172 + 05523ce4ce1a245ae1a239ae3c6bfd9e7871f7e5d8bae86b01a102818201 + 5820a3a5e715f0cc574a73c3f9bebb6bc24f32ffd5b67b387244c2c909da + 779a14780281a200d820784068747470733a2f2f706172656e742e657861 + 6d706c652f72696d732f63636233616138352d363162342d343066312d38 + 3438652d3032616436653861323534620182015820e45b72f5c0c0b572db + 4d8d3ab7e97f368ff74e62347a824decb67a84e5224d750382482b060104 + 01a02064781c687474703a2f2f61726d2e636f6d2f696f742f70726f6669 + 6c652f3104a200c11a61ce480001c11a695467800581a3006941434d4520 + 4c74642e01d8206c61636d652e6578616d706c6502810158400f79b7a7de + b0480ed9c5b8b29aaffef33b1094f4e11409dbbbc4c1c2abf79fda30d72e + b86d19053dc5caada1abe76f1e13cad3bef27eebc09086463fe02f5ac4 `) testSignedCorimInvalid = comid.MustHexDecode(nil, ` d284585da3012603746170706c69636174696f6e2f72696d2b63626f7208 @@ -112,15 +81,15 @@ d284585da3012603746170706c69636174696f6e2f72696d2b63626f7208 PSARefValCBOR = comid.MustHexDecode(nil, ` a40065656e2d474201a1005043bbe37f2e614b33aed353cff1428b160281 a3006941434d45204c74642e01d8207468747470733a2f2f61636d652e65 -78616d706c65028300010204a1008182a100a300d90227582061636d652d +78616d706c65028300010204a1008182a100a300d90258582061636d652d 696d706c656d656e746174696f6e2d69642d303030303030303031016441 -434d45026a526f616452756e6e657283a200d90258a30162424c0465322e +434d45026a526f616452756e6e657283a200d90259a30162424c0465322e 312e30055820acbb11c7e4da217205523ce4ce1a245ae1a239ae3c6bfd9e 7871f7e5d8bae86b01a102818201582087428fc522803d31065e7bce3cf0 -3fe475096631e5e07bbd7a0fde60c4cf25c7a200d90258a3016450526f54 +3fe475096631e5e07bbd7a0fde60c4cf25c7a200d90259a3016450526f54 0465312e332e35055820acbb11c7e4da217205523ce4ce1a245ae1a239ae 3c6bfd9e7871f7e5d8bae86b01a10281820158200263829989b6fd954f72 -baaf2fc64bc2e2f01d692d4de72986ea808f6e99813fa200d90258a30164 +baaf2fc64bc2e2f01d692d4de72986ea808f6e99813fa200d90259a30164 41526f540465302e312e34055820acbb11c7e4da217205523ce4ce1a245a e1a239ae3c6bfd9e7871f7e5d8bae86b01a1028182015820a3a5e715f0cc 574a73c3f9bebb6bc24f32ffd5b67b387244c2c909da779a1478 @@ -128,15 +97,15 @@ e1a239ae3c6bfd9e7871f7e5d8bae86b01a1028182015820a3a5e715f0cc testComid = comid.MustHexDecode(nil, ` a40065656e2d474201a1005043bbe37f2e614b33aed353cff1428b160281 a3006941434d45204c74642e01d8207468747470733a2f2f61636d652e65 -78616d706c65028300010204a1008182a100a300d90227582061636d652d +78616d706c65028300010204a1008182a100a300d90258582061636d652d 696d706c656d656e746174696f6e2d69642d303030303030303031016441 -434d45026a526f616452756e6e657283a200d90258a30162424c0465322e +434d45026a526f616452756e6e657283a200d90259a30162424c0465322e 312e30055820acbb11c7e4da217205523ce4ce1a245ae1a239ae3c6bfd9e 7871f7e5d8bae86b01a102818201582087428fc522803d31065e7bce3cf0 -3fe475096631e5e07bbd7a0fde60c4cf25c7a200d90258a3016450526f54 +3fe475096631e5e07bbd7a0fde60c4cf25c7a200d90259a3016450526f54 0465312e332e35055820acbb11c7e4da217205523ce4ce1a245ae1a239ae 3c6bfd9e7871f7e5d8bae86b01a10281820158200263829989b6fd954f72 -baaf2fc64bc2e2f01d692d4de72986ea808f6e99813fa200d90258a30164 +baaf2fc64bc2e2f01d692d4de72986ea808f6e99813fa200d90259a30164 41526f540465302e312e34055820acbb11c7e4da217205523ce4ce1a245a e1a239ae3c6bfd9e7871f7e5d8bae86b01a1028182015820a3a5e715f0cc 574a73c3f9bebb6bc24f32ffd5b67b387244c2c909da779a1478 diff --git a/comid/cbor.go b/comid/cbor.go index dffd4afa..4a46bf6a 100644 --- a/comid/cbor.go +++ b/comid/cbor.go @@ -21,12 +21,13 @@ func comidTags() cbor.TagSet { 111: TaggedOID{}, // CoMID tags 550: TaggedUEID{}, - 551: TaggedImplID{}, + //551: To Do see: https://github.com/veraison/corim/issues/32 552: TaggedSVN(0), 553: TaggedMinSVN(0), 560: TaggedRawValueBytes{}, // PSA profile tags - 600: TaggedPSARefValID{}, + 600: TaggedImplID{}, + 601: TaggedPSARefValID{}, } opts := cbor.TagOptions{ diff --git a/comid/class_test.go b/comid/class_test.go index 15f6f29b..97dc7c01 100644 --- a/comid/class_test.go +++ b/comid/class_test.go @@ -38,8 +38,8 @@ func TestClass_MarshalCBOR_ImplID_full(t *testing.T) { SetIndex(1) require.NotNil(t, tv) - // {0: 551(h'61636D652D696D706C656D656E746174696F6E2D69642D303030303030303031'), 1: "EMCA Ltd", 2: "Rennurdaor", 3: 2, 4: 1} - expected := MustHexDecode(t, "a500d90227582061636d652d696d706c656d656e746174696f6e2d69642d3030303030303030310168454d4341204c7464026a52656e6e757264616f7203020401") + // {0: 600(h'61636D652D696D706C656D656E746174696F6E2D69642D303030303030303031'), 1: "EMCA Ltd", 2: "Rennurdaor", 3: 2, 4: 1} + expected := MustHexDecode(t, "a500d90258582061636d652d696d706c656d656e746174696f6e2d69642d3030303030303030310168454d4341204c7464026a52656e6e757264616f7203020401") actual, err := tv.ToCBOR() @@ -157,8 +157,8 @@ func TestClass_MarshalCBOR_Index_only(t *testing.T) { } func TestClassID_UnmarshalCBOR_full(t *testing.T) { - // {0: 551(h'61636D652D696D706C656D656E746174696F6E2D69642D303030303030303031'), 1: "EMCA Ltd", 2: "Rennurdaor", 3: 2, 4: 1} - tv := MustHexDecode(t, "a500d90227582061636d652d696d706c656d656e746174696f6e2d69642d3030303030303030310168454d4341204c7464026a52656e6e757264616f7203020401") + // {0: 600(h'61636D652D696D706C656D656E746174696F6E2D69642D303030303030303031'), 1: "EMCA Ltd", 2: "Rennurdaor", 3: 2, 4: 1} + tv := MustHexDecode(t, "a500d90258582061636d652d696d706c656d656e746174696f6e2d69642d3030303030303030310168454d4341204c7464026a52656e6e757264616f7203020401") var actual Class err := actual.FromCBOR(tv) diff --git a/comid/classid_test.go b/comid/classid_test.go index b9b5efc9..51b07391 100644 --- a/comid/classid_test.go +++ b/comid/classid_test.go @@ -33,9 +33,9 @@ func TestClassID_MarshalCBOR_ImplID(t *testing.T) { require.NotNil(t, tv.SetImplID(TestImplID)) - // 551(h'61636D652D696D706C656D656E746174696F6E2D69642D303030303030303031') - // tag(551): d9 0227 - expected := MustHexDecode(t, "d90227582061636d652d696d706c656d656e746174696f6e2d69642d303030303030303031") + // 600 (h'61636D652D696D706C656D656E746174696F6E2D69642D303030303030303031') + // tag(600): d9 0258 + expected := MustHexDecode(t, "d90258582061636d652d696d706c656d656e746174696f6e2d69642d303030303030303031") actual, err := tv.MarshalCBOR() @@ -71,7 +71,7 @@ func TestClassID_UnmarshalCBOR_UUID_OK(t *testing.T) { } func TestClassID_UnmarshalCBOR_ImplID_OK(t *testing.T) { - tv := MustHexDecode(t, "d90227582061636d652d696d706c656d656e746174696f6e2d69642d303030303030303031") + tv := MustHexDecode(t, "d90258582061636d652d696d706c656d656e746174696f6e2d69642d303030303030303031") expected := b64TestImplID() diff --git a/comid/example_test.go b/comid/example_test.go index 20fb3045..c979671e 100644 --- a/comid/example_test.go +++ b/comid/example_test.go @@ -169,7 +169,7 @@ func Example_encode_PSA() { } // Output: - // a301a10078206d792d6e733a61636d652d726f616472756e6e65722d737570706c656d656e740281a3006941434d45204c74642e01d8207468747470733a2f2f61636d652e6578616d706c65028301000204a2008182a100a300d90227582061636d652d696d706c656d656e746174696f6e2d69642d303030303030303031016941434d45204c74642e026e526f616452756e6e657220322e3082a200d90258a30162424c0465352e302e35055820acbb11c7e4da217205523ce4ce1a245ae1a239ae3c6bfd9e7871f7e5d8bae86b01a10281820644abcdef00a200d90258a3016450526f540465312e332e35055820acbb11c7e4da217205523ce4ce1a245ae1a239ae3c6bfd9e7871f7e5d8bae86b01a10281820644abcdef00028182a101d902264702deadbeefdead81a100744d49476b416745424244436b3551626f422e2e2e + // a301a10078206d792d6e733a61636d652d726f616472756e6e65722d737570706c656d656e740281a3006941434d45204c74642e01d8207468747470733a2f2f61636d652e6578616d706c65028301000204a2008182a100a300d90258582061636d652d696d706c656d656e746174696f6e2d69642d303030303030303031016941434d45204c74642e026e526f616452756e6e657220322e3082a200d90259a30162424c0465352e302e35055820acbb11c7e4da217205523ce4ce1a245ae1a239ae3c6bfd9e7871f7e5d8bae86b01a10281820644abcdef00a200d90259a3016450526f540465312e332e35055820acbb11c7e4da217205523ce4ce1a245ae1a239ae3c6bfd9e7871f7e5d8bae86b01a10281820644abcdef00028182a101d902264702deadbeefdead81a100744d49476b416745424244436b3551626f422e2e2e // {"tag-identity":{"id":"my-ns:acme-roadrunner-supplement"},"entities":[{"name":"ACME Ltd.","regid":"https://acme.example","roles":["creator","tagCreator","maintainer"]}],"triples":{"reference-values":[{"environment":{"class":{"id":{"type":"psa.impl-id","value":"YWNtZS1pbXBsZW1lbnRhdGlvbi1pZC0wMDAwMDAwMDE="},"vendor":"ACME Ltd.","model":"RoadRunner 2.0"}},"measurements":[{"key":{"type":"psa.refval-id","value":{"label":"BL","version":"5.0.5","signer-id":"rLsRx+TaIXIFUjzkzhokWuGiOa48a/2eeHH35di66Gs="}},"value":{"digests":["sha-256-32:q83vAA=="]}},{"key":{"type":"psa.refval-id","value":{"label":"PRoT","version":"1.3.5","signer-id":"rLsRx+TaIXIFUjzkzhokWuGiOa48a/2eeHH35di66Gs="}},"value":{"digests":["sha-256-32:q83vAA=="]}}]}],"attester-verification-keys":[{"environment":{"instance":{"type":"ueid","value":"At6tvu/erQ=="}},"verification-keys":[{"key":"MIGkAgEBBDCk5QboB..."}]}]}} } diff --git a/comid/psareferencevalue.go b/comid/psareferencevalue.go index a6aa70ac..cde3304b 100644 --- a/comid/psareferencevalue.go +++ b/comid/psareferencevalue.go @@ -13,7 +13,6 @@ type PSARefValID struct { Label *string `cbor:"1,keyasint,omitempty" json:"label,omitempty"` Version *string `cbor:"4,keyasint,omitempty" json:"version,omitempty"` SignerID []byte `cbor:"5,keyasint" json:"signer-id"` // 32, 48 or 64 - AlgID *string `cbor:"6,keyasint,omitempty" json:"alg-id,omitempty"` } // Valid checks the validity (according to the spec) of the target PSARefValID @@ -45,13 +44,6 @@ func NewPSARefValID(signerID []byte) *PSARefValID { } } -func (o *PSARefValID) SetAlgID(algID string) *PSARefValID { - if o != nil { - o.AlgID = &algID - } - return o -} - func (o *PSARefValID) SetLabel(label string) *PSARefValID { if o != nil { o.Label = &label diff --git a/corim/signedcorim_test.go b/corim/signedcorim_test.go index e9269248..269cb846 100644 --- a/corim/signedcorim_test.go +++ b/corim/signedcorim_test.go @@ -38,7 +38,7 @@ func TestSignedCorim_FromCOSE_ok(t *testing.T) { / payload / << { 0: "test corim id", 1: [ - h'D901FAA40065656E2D474201A1005043BBE37F2E614B33AED353CFF1428B160281A3006941434D45204C74642E01D8207468747470733A2F2F61636D652E6578616D706C65028300010204A1008182A100A300D90227582061636D652D696D706C656D656E746174696F6E2D69642D303030303030303031016441434D45026A526F616452756E6E657283A200D90258A30162424C0465322E312E30055820ACBB11C7E4DA217205523CE4CE1A245AE1A239AE3C6BFD9E7871F7E5D8BAE86B01A102818201582087428FC522803D31065E7BCE3CF03FE475096631E5E07BBD7A0FDE60C4CF25C7A200D90258A3016450526F540465312E332E35055820ACBB11C7E4DA217205523CE4CE1A245AE1A239AE3C6BFD9E7871F7E5D8BAE86B01A10281820158200263829989B6FD954F72BAAF2FC64BC2E2F01D692D4DE72986EA808F6E99813FA200D90258A3016441526F540465302E312E34055820ACBB11C7E4DA217205523CE4CE1A245AE1A239AE3C6BFD9E7871F7E5D8BAE86B01A1028182015820A3A5E715F0CC574A73C3F9BEBB6BC24F32FFD5B67B387244C2C909DA779A1478' + h'D901FAA40065656E2D474201A1005043BBE37F2E614B33AED353CFF1428B160281A3006941434D45204C74642E01D8207468747470733A2F2F61636D652E6578616D706C65028300010204A1008182A100A300D90258582061636D652D696D706C656D656E746174696F6E2D69642D303030303030303031016441434D45026A526F616452756E6E657283A200D90258A30162424C0465322E312E30055820ACBB11C7E4DA217205523CE4CE1A245AE1A239AE3C6BFD9E7871F7E5D8BAE86B01A102818201582087428FC522803D31065E7BCE3CF03FE475096631E5E07BBD7A0FDE60C4CF25C7A200D90258A3016450526F540465312E332E35055820ACBB11C7E4DA217205523CE4CE1A245AE1A239AE3C6BFD9E7871F7E5D8BAE86B01A10281820158200263829989B6FD954F72BAAF2FC64BC2E2F01D692D4DE72986EA808F6E99813FA200D90258A3016441526F540465302E312E34055820ACBB11C7E4DA217205523CE4CE1A245AE1A239AE3C6BFD9E7871F7E5D8BAE86B01A1028182015820A3A5E715F0CC574A73C3F9BEBB6BC24F32FFD5B67B387244C2C909DA779A1478' ] } >>, / signature / h'deadbeef' diff --git a/corim/unsignedcorim_test.go b/corim/unsignedcorim_test.go index 5f06275e..ffab9370 100644 --- a/corim/unsignedcorim_test.go +++ b/corim/unsignedcorim_test.go @@ -17,7 +17,7 @@ import ( var ( // minimalist unsigned-corim that embeds comid.PSARefValJSONTemplate - testGoodUnsignedCorim = comid.MustHexDecode(nil, "a2006d7465737420636f72696d20696401815901a3d901faa40065656e2d474201a1005043bbe37f2e614b33aed353cff1428b160281a3006941434d45204c74642e01d8207468747470733a2f2f61636d652e6578616d706c65028300010204a1008182a100a300d90227582061636d652d696d706c656d656e746174696f6e2d69642d303030303030303031016441434d45026a526f616452756e6e657283a200d90258a30162424c0465322e312e30055820acbb11c7e4da217205523ce4ce1a245ae1a239ae3c6bfd9e7871f7e5d8bae86b01a102818201582087428fc522803d31065e7bce3cf03fe475096631e5e07bbd7a0fde60c4cf25c7a200d90258a3016450526f540465312e332e35055820acbb11c7e4da217205523ce4ce1a245ae1a239ae3c6bfd9e7871f7e5d8bae86b01a10281820158200263829989b6fd954f72baaf2fc64bc2e2f01d692d4de72986ea808f6e99813fa200d90258a3016441526f540465302e312e34055820acbb11c7e4da217205523ce4ce1a245ae1a239ae3c6bfd9e7871f7e5d8bae86b01a1028182015820a3a5e715f0cc574a73c3f9bebb6bc24f32ffd5b67b387244c2c909da779a1478") + testGoodUnsignedCorim = comid.MustHexDecode(nil, "a2006d7465737420636f72696d20696401815901a3d901faa40065656e2d474201a1005043bbe37f2e614b33aed353cff1428b160281a3006941434d45204c74642e01d8207468747470733a2f2f61636d652e6578616d706c65028300010204a1008182a100a300d90258582061636d652d696d706c656d656e746174696f6e2d69642d303030303030303031016441434d45026a526f616452756e6e657283a200d90259a30162424c0465322e312e30055820acbb11c7e4da217205523ce4ce1a245ae1a239ae3c6bfd9e7871f7e5d8bae86b01a102818201582087428fc522803d31065e7bce3cf03fe475096631e5e07bbd7a0fde60c4cf25c7a200d90259a3016450526f540465312e332e35055820acbb11c7e4da217205523ce4ce1a245ae1a239ae3c6bfd9e7871f7e5d8bae86b01a10281820158200263829989b6fd954f72baaf2fc64bc2e2f01d692d4de72986ea808f6e99813fa200d90259a3016441526f540465302e312e34055820acbb11c7e4da217205523ce4ce1a245ae1a239ae3c6bfd9e7871f7e5d8bae86b01a1028182015820a3a5e715f0cc574a73c3f9bebb6bc24f32ffd5b67b387244c2c909da779a1478") ) func TestUnsignedCorim_id_string(t *testing.T) {