From 9ee0097b675abd47c156581ff3f618765dbde6de Mon Sep 17 00:00:00 2001 From: Hannes Tschofenig Date: Sat, 14 Jul 2018 18:21:59 -0400 Subject: [PATCH] New manifest example --- ec_key_to_mbedtls_points.py | 4 +-- encode.py | 2 +- server-pubkey.pem | 4 +++ server.crt | 8 ++++++ server.key | 8 ++++++ test-file4.json | 19 ++++++++++++++ test-out-signed4.cose | Bin 0 -> 266 bytes test-out-signed4.h | 8 ++++++ test-out.cbor.pretty | 49 ++++++++++++++++++++++++++++++++++++ test-out4.cbor | 1 + test-out4.cbor.pretty | 35 ++++++++++++++++++++++++++ 11 files changed, 135 insertions(+), 3 deletions(-) create mode 100644 server-pubkey.pem create mode 100644 server.crt create mode 100644 server.key create mode 100644 test-file4.json create mode 100644 test-out-signed4.cose create mode 100644 test-out-signed4.h create mode 100644 test-out.cbor.pretty create mode 100644 test-out4.cbor create mode 100644 test-out4.cbor.pretty diff --git a/ec_key_to_mbedtls_points.py b/ec_key_to_mbedtls_points.py index 1685b4b..0ad240a 100644 --- a/ec_key_to_mbedtls_points.py +++ b/ec_key_to_mbedtls_points.py @@ -39,13 +39,13 @@ xa = ['0x%02x'% x for x in binascii.a2b_hex(('%%0%dx'%(2*MBEDTLS_ECP_MAX_BYTES))%key.public_numbers().x)] ya = ['0x%02x'% x for x in binascii.a2b_hex(('%%0%dx'%(2*MBEDTLS_ECP_MAX_BYTES))%key.public_numbers().y)] -print('const unsigned char mbedtls_ec_public_key_x [MBEDTLS_ECP_MAX_BYTES] = {') +print('const unsigned char pk_x [MBEDTLS_ECP_MAX_BYTES] = {') while xa: print(' ' + ', '.join(xa[:HEX_VALUES_PER_LINE]) + ',') xa = xa[HEX_VALUES_PER_LINE:] print('};') -print('const unsigned char mbedtls_ec_public_key_y [MBEDTLS_ECP_MAX_BYTES] = {') +print('const unsigned char pk_y [MBEDTLS_ECP_MAX_BYTES] = {') while ya: print(' ' + ', '.join(ya[:HEX_VALUES_PER_LINE]) + ',') ya = ya[HEX_VALUES_PER_LINE:] diff --git a/encode.py b/encode.py index 9d93192..1f1386c 100644 --- a/encode.py +++ b/encode.py @@ -196,7 +196,7 @@ def getPayloadSize(payloadInfo): def getPayloadStorageId(payloadInfo): if not 'storageId' in payloadInfo: - raise KeyError('storageId is required in payloadInfo') + return None # raise KeyError('storageId is required in payloadInfo') return guessBinFormat(payloadInfo['storageId']) def getPayloadURIs(payloadInfo): diff --git a/server-pubkey.pem b/server-pubkey.pem new file mode 100644 index 0000000..f2f78bd --- /dev/null +++ b/server-pubkey.pem @@ -0,0 +1,4 @@ +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETvsWNlmwhq0iJ0jt5kQKEOY6hmzs +bAhmcqQtgxn50oFL7D8iGFGCGspY2IuyezvYJ+BKcOcfLWaBajoIHgS6Sg== +-----END PUBLIC KEY----- diff --git a/server.crt b/server.crt new file mode 100644 index 0000000..b6c0ba9 --- /dev/null +++ b/server.crt @@ -0,0 +1,8 @@ +-----BEGIN CERTIFICATE----- +MIIBGjCBwAIJAP43UasTc/poMAoGCCqGSM49BAMCMA0xCzAJBgNVBAMMAkNBMB4X +DTE4MDMwNzEyMzc0MloXDTI4MDMwNDEyMzc0MlowHTEbMBkGA1UEAwwSc2VydmVy +LmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETvsWNlmwhq0i +J0jt5kQKEOY6hmzsbAhmcqQtgxn50oFL7D8iGFGCGspY2IuyezvYJ+BKcOcfLWaB +ajoIHgS6SjAKBggqhkjOPQQDAgNJADBGAiEAu51CE/8C7u0eTZHqvuAGE2W6GX0p +qzokA4cxuC/5XgACIQCUiE0D0eUoRLPuVoPX+sy0ejGzJkWvtqa0gRwlVSZPig== +-----END CERTIFICATE----- diff --git a/server.key b/server.key new file mode 100644 index 0000000..fc7e95e --- /dev/null +++ b/server.key @@ -0,0 +1,8 @@ +-----BEGIN EC PARAMETERS----- +BggqhkjOPQMBBw== +-----END EC PARAMETERS----- +-----BEGIN EC PRIVATE KEY----- +MHcCAQEEICnlwTehuZ6YNXhVQDxLupX0aOCbjqI0cFbtwLU0Q19joAoGCCqGSM49 +AwEHoUQDQgAETvsWNlmwhq0iJ0jt5kQKEOY6hmzsbAhmcqQtgxn50oFL7D8iGFGC +GspY2IuyezvYJ+BKcOcfLWaBajoIHgS6Sg== +-----END EC PRIVATE KEY----- diff --git a/test-file4.json b/test-file4.json new file mode 100644 index 0000000..1809d9c --- /dev/null +++ b/test-file4.json @@ -0,0 +1,19 @@ +{ + "manifestFormatVersion" : 1, + "nonce" : "c31211d1ff88", + "conditions" : { + "vendorId" : "fa6b4a53-d5ad-5fdf-be9d-e663e4d41ffe", + "classId" : "1492af14-2569-5e48-bf42-9b2d51f2ab45" + }, + "payloadInfo" : { + "format" : { + "type" : "binary" + }, + "size" : 16, + "digestAlgorithm" : "SHA-256", + "digests" : { + "raw" : "c31211d1ff88f77a5aaf653677895bfca769f06da198a8fa71156aa64acd695d", + "ciphertext" : "f7e59db5d5ef2b6bbb732dec2e8ef33c285224cf7bad235910e402b5f5249c22" + } + } +} diff --git a/test-out-signed4.cose b/test-out-signed4.cose new file mode 100644 index 0000000000000000000000000000000000000000..4669909c3cb9aaa3ba1d0b0d52ff90f15e737edb GIT binary patch literal 266 zcmV+l0rmdaVuVDY0~jixSc-}P_C~`J5z+sM8e2+2`GSH0Q2J|1Q`N0s-@cvZW8~By z{(=Hf6q2tLC23wrze1ZWQSz%r_V)Jnhk*eQ_V$4Rq5)VS!x9nE|A_Z`TCZg`cZpm4 zr)ltQp_r)paTRK&O3i6q16UyU<(;+F?<;G&b1m#Hj`KVyQY6oNts_|wDi2;EdrgNkq8S>!7OPPdmI Qt$kPl&KRxY(DF6Tf literal 0 HcmV?d00001 diff --git a/test-out-signed4.h b/test-out-signed4.h new file mode 100644 index 0000000..a3446c9 --- /dev/null +++ b/test-out-signed4.h @@ -0,0 +1,8 @@ +// Imported from file 'test-out-signed4.cose' +const unsigned char cose_suite[] = { + 0xd8,0x62,0x84,0x44,0xa1,0x03,0x18,0x2a,0xa0,0x58,0x8a,0x8a,0x01,0xf6,0x46,0xc3,0x12,0x11,0xd1,0xff,0x88,0x1a,0x5b,0x4a,0x42,0xf9,0x82,0x82,0x01,0x50,0xfa,0x6b,0x4a,0x53,0xd5,0xad,0x5f,0xdf,0xbe,0x9d,0xe6,0x63,0xe4,0xd4,0x1f,0xfe,0x82,0x02,0x50,0x14,0x92,0xaf,0x14,0x25,0x69,0x5e,0x48,0xbf,0x42,0x9b,0x2d,0x51,0xf2,0xab,0x45,0xf6,0xf6,0xf6,0xf6,0x87,0x81,0x01,0x10,0xf6,0xf6,0x81,0x01,0xa2,0x01,0x58, + 0x20,0xc3,0x12,0x11,0xd1,0xff,0x88,0xf7,0x7a,0x5a,0xaf,0x65,0x36,0x77,0x89,0x5b,0xfc,0xa7,0x69,0xf0,0x6d,0xa1,0x98,0xa8,0xfa,0x71,0x15,0x6a,0xa6,0x4a,0xcd,0x69,0x5d,0x03,0x58,0x20,0xf7,0xe5,0x9d,0xb5,0xd5,0xef,0x2b,0x6b,0xbb,0x73,0x2d,0xec,0x2e,0x8e,0xf3,0x3c,0x28,0x52,0x24,0xcf,0x7b,0xad,0x23,0x59,0x10,0xe4,0x02,0xb5,0xf5,0x24,0x9c,0x22,0xf6,0x81,0x83,0x58,0x26,0xa2,0x01,0x26,0x04,0x58,0x20,0x9e, + 0x85,0x76,0x97,0xb2,0xd7,0x50,0x68,0xb0,0xea,0x13,0x04,0x7f,0xba,0x82,0xfb,0xe2,0x32,0x48,0x19,0xbf,0x30,0xe0,0xea,0xec,0xf5,0xa6,0xbb,0x6e,0xb6,0x8a,0x5a,0xa0,0x58,0x48,0x30,0x46,0x02,0x21,0x00,0xbd,0xa3,0x26,0xf6,0xd8,0x6c,0x87,0x6c,0xb9,0xae,0xdd,0xd3,0xe9,0x45,0xf1,0x7a,0x65,0x0a,0xae,0x39,0x46,0xea,0x24,0x73,0xce,0xea,0x9a,0x47,0x3b,0x5d,0x86,0xf8,0x02,0x21,0x00,0xfb,0xed,0x42,0x08,0xdd,0x54, + 0x50,0x83,0x8a,0x6f,0xdf,0x59,0xe4,0x2b,0x04,0x4e,0xb7,0x97,0x1f,0xe4,0x53,0xf0,0xd2,0x81,0x8c,0x41,0x3d,0xc8,0xd3,0x0c,0x44,0x3f +}; +const unsigned int cose_suite_len = 266; diff --git a/test-out.cbor.pretty b/test-out.cbor.pretty new file mode 100644 index 0000000..81814c6 --- /dev/null +++ b/test-out.cbor.pretty @@ -0,0 +1,49 @@ +8a # array(10) + 02 # unsigned(2) + a4 # map(4) + 01 # unsigned(1) + 6e # text(14) + 5468697320697320612074657374 # "This is a test" + 02 # unsigned(2) + 6e # text(14) + 412074657374207061796c6f6164 # "A test payload" + 03 # unsigned(3) + 6f # text(15) + 412073616d706c652076656e646f72 # "A sample vendor" + 04 # unsigned(4) + 75 # text(21) + 416e206578706572696d656e74616c206d6f64656c # "An experimental model" + 50 # bytes(16) + bde6d25b8c591ba464d54703b9d50dcf # "\xBD\xE6\xD2[\x8CY\e\xA4d\xD5G\x03\xB9\xD5\r\xCF" + 1a 5b494e0c # unsigned(1531530764) + 82 # array(2) + 82 # array(2) + 01 # unsigned(1) + 50 # bytes(16) + fa6b4a53d5ad5fdfbe9de663e4d41ffe # "\xFAkJS\xD5\xAD_\xDF\xBE\x9D\xE6c\xE4\xD4\x1F\xFE" + 82 # array(2) + 02 # unsigned(2) + 50 # bytes(16) + 1492af1425695e48bf429b2d51f2ab45 # "\x14\x92\xAF\x14%i^H\xBFB\x9B-Q\xF2\xABE" + f6 # primitive(22) + f6 # primitive(22) + f6 # primitive(22) + f6 # primitive(22) + 87 # array(7) + 81 # array(1) + 01 # unsigned(1) + 10 # unsigned(16) + 43 # bytes(3) + 666f6f # "foo" + 81 # array(1) + 82 # array(2) + 01 # unsigned(1) + 6e # text(14) + 687474703a2f2f666f6f2e636f6d # "http://foo.com" + 81 # array(1) + 01 # unsigned(1) + a1 # map(1) + 01 # unsigned(1) + 58 20 # bytes(32) + c31211d1ff88f77a5aaf653677895bfca769f06da198a8fa71156aa64acd695d # "\xC3\x12\x11\xD1\xFF\x88\xF7zZ\xAFe6w\x89[\xFC\xA7i\xF0m\xA1\x98\xA8\xFAq\x15j\xA6J\xCDi]" + f6 # primitive(22) diff --git a/test-out4.cbor b/test-out4.cbor new file mode 100644 index 0000000..3f752f5 --- /dev/null +++ b/test-out4.cbor @@ -0,0 +1 @@ +F[JBPkJSխ_߾cP%i^HB-QEX zZe6w[imqjJi]X 坵+ks-.<(R${#Y$" \ No newline at end of file diff --git a/test-out4.cbor.pretty b/test-out4.cbor.pretty new file mode 100644 index 0000000..2c40571 --- /dev/null +++ b/test-out4.cbor.pretty @@ -0,0 +1,35 @@ +8a # array(10) + 01 # unsigned(1) + f6 # primitive(22) + 46 # bytes(6) + c31211d1ff88 # "\xC3\x12\x11\xD1\xFF\x88" + 1a 5b4a42f9 # unsigned(1531593465) + 82 # array(2) + 82 # array(2) + 01 # unsigned(1) + 50 # bytes(16) + fa6b4a53d5ad5fdfbe9de663e4d41ffe # "\xFAkJS\xD5\xAD_\xDF\xBE\x9D\xE6c\xE4\xD4\x1F\xFE" + 82 # array(2) + 02 # unsigned(2) + 50 # bytes(16) + 1492af1425695e48bf429b2d51f2ab45 # "\x14\x92\xAF\x14%i^H\xBFB\x9B-Q\xF2\xABE" + f6 # primitive(22) + f6 # primitive(22) + f6 # primitive(22) + f6 # primitive(22) + 87 # array(7) + 81 # array(1) + 01 # unsigned(1) + 10 # unsigned(16) + f6 # primitive(22) + f6 # primitive(22) + 81 # array(1) + 01 # unsigned(1) + a2 # map(2) + 01 # unsigned(1) + 58 20 # bytes(32) + c31211d1ff88f77a5aaf653677895bfca769f06da198a8fa71156aa64acd695d # "\xC3\x12\x11\xD1\xFF\x88\xF7zZ\xAFe6w\x89[\xFC\xA7i\xF0m\xA1\x98\xA8\xFAq\x15j\xA6J\xCDi]" + 03 # unsigned(3) + 58 20 # bytes(32) + f7e59db5d5ef2b6bbb732dec2e8ef33c285224cf7bad235910e402b5f5249c22 # "\xF7\xE5\x9D\xB5\xD5\xEF+k\xBBs-\xEC.\x8E\xF3<(R$\xCF{\xAD#Y\x10\xE4\x02\xB5\xF5$\x9C\"" + f6 # primitive(22)