Initial
This commit is contained in:
commit
6c71b13126
30 changed files with 799 additions and 0 deletions
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
.pio
|
||||
.pioenvs
|
||||
.piolibdeps
|
||||
.vscode
|
||||
.vscode/.browse.c_cpp.db*
|
||||
.vscode/c_cpp_properties.json
|
||||
.vscode/launch.json
|
||||
27
Ideas
Normal file
27
Ideas
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
Ideas:
|
||||
|
||||
Use it on raspberrypi with the cli
|
||||
|
||||
Build a tool to quickly provision chips...
|
||||
|
||||
run the toolkit on the nanopi neo
|
||||
|
||||
push a button to trigger a banner on a nodejs server thingy
|
||||
|
||||
Change chip to proove that the certificate is the LBS Ca one and not the Infineon CA one =D
|
||||
|
||||
|
||||
Steps:
|
||||
|
||||
script that provisions chips with certs
|
||||
-> Provision 2 chips with different certificates! (Maybe get another one tomorrow? or make this a live demo of the personalisation!)
|
||||
|
||||
NodeMCU uses chip cert to make json object with data and signature to send its status
|
||||
|
||||
Nodejs server that verifies messages and signature with openssl via tcp
|
||||
-> Shows Cert Authority and state with a corner icon of eiter Yes or No
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
BIN
asn.bin
Normal file
BIN
asn.bin
Normal file
Binary file not shown.
BIN
asnfinal.bin
Normal file
BIN
asnfinal.bin
Normal file
Binary file not shown.
127
convertCert.js
Normal file
127
convertCert.js
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
var fs = require('fs');
|
||||
//0x30,0x82,0x01,0xbc,0x30,0x82,0x01,0x62,0xa0,
|
||||
// MyChip
|
||||
let certdata = [
|
||||
0x30,0x82,0x01,0xbc,0x30,0x82,0x01,0x62,0xa0,0x03,0x02,0x01,0x02,0x02,0x04,0x47,
|
||||
0x33,0xda,0x95,0x30,0x0a,0x06,0x08,0x2a,0x86,0x48,0xce,0x3d,0x04,0x03,0x02,0x30,
|
||||
0x72,0x31,0x0b,0x30,0x09,0x06,0x03,0x55,0x04,0x06,0x13,0x02,0x44,0x45,0x31,0x21,
|
||||
0x30,0x1f,0x06,0x03,0x55,0x04,0x0a,0x0c,0x18,0x49,0x6e,0x66,0x69,0x6e,0x65,0x6f,
|
||||
0x6e,0x20,0x54,0x65,0x63,0x68,0x6e,0x6f,0x6c,0x6f,0x67,0x69,0x65,0x73,0x20,0x41,
|
||||
0x47,0x31,0x13,0x30,0x11,0x06,0x03,0x55,0x04,0x0b,0x0c,0x0a,0x4f,0x50,0x54,0x49,
|
||||
0x47,0x41,0x28,0x54,0x4d,0x29,0x31,0x2b,0x30,0x29,0x06,0x03,0x55,0x04,0x03,0x0c,
|
||||
0x22,0x49,0x6e,0x66,0x69,0x6e,0x65,0x6f,0x6e,0x20,0x4f,0x50,0x54,0x49,0x47,0x41,
|
||||
0x28,0x54,0x4d,0x29,0x20,0x54,0x72,0x75,0x73,0x74,0x20,0x58,0x20,0x43,0x41,0x20,
|
||||
0x31,0x30,0x31,0x30,0x1e,0x17,0x0d,0x31,0x37,0x30,0x38,0x33,0x31,0x31,0x32,0x30,
|
||||
0x39,0x33,0x31,0x5a,0x17,0x0d,0x33,0x37,0x30,0x38,0x33,0x31,0x31,0x32,0x30,0x39,
|
||||
0x33,0x31,0x5a,0x30,0x00,0x30,0x59,0x30,0x13,0x06,0x07,0x2a,0x86,0x48,0xce,0x3d,
|
||||
0x02,0x01,0x06,0x08,0x2a,0x86,0x48,0xce,0x3d,0x03,0x01,0x07,0x03,0x42,0x00,0x04,
|
||||
0x07,0x02,0x94,0xd7,0xd6,0xd9,0xec,0xb2,0xff,0x68,0x53,0xe8,0xc4,0xdd,0xfd,0x96,
|
||||
0x53,0x20,0x93,0x8f,0x73,0x33,0xdd,0xac,0x8c,0x2e,0x0e,0x4d,0x79,0x5c,0xa4,0x03,
|
||||
0x4b,0x9b,0x24,0xf6,0xec,0x63,0xcd,0x2a,0xe7,0xa0,0x14,0xd3,0x4b,0xbc,0x32,0x22,
|
||||
0x05,0xb9,0x4e,0x90,0x9f,0x8a,0x21,0x62,0xf2,0xce,0x15,0xcf,0xdf,0xa1,0x20,0x12,
|
||||
0xa3,0x58,0x30,0x56,0x30,0x0e,0x06,0x03,0x55,0x1d,0x0f,0x01,0x01,0xff,0x04,0x04,
|
||||
0x03,0x02,0x00,0x80,0x30,0x0c,0x06,0x03,0x55,0x1d,0x13,0x01,0x01,0xff,0x04,0x02,
|
||||
0x30,0x00,0x30,0x15,0x06,0x03,0x55,0x1d,0x20,0x04,0x0e,0x30,0x0c,0x30,0x0a,0x06,
|
||||
0x08,0x2a,0x82,0x14,0x00,0x44,0x01,0x14,0x01,0x30,0x1f,0x06,0x03,0x55,0x1d,0x23,
|
||||
0x04,0x18,0x30,0x16,0x80,0x14,0xca,0x05,0x33,0xd7,0x4f,0xc4,0x7f,0x09,0x49,0xfb,
|
||||
0xdb,0x12,0x25,0xdf,0xd7,0x97,0x9d,0x41,0x1e,0x15,0x30,0x0a,0x06,0x08,0x2a,0x86,
|
||||
0x48,0xce,0x3d,0x04,0x03,0x02,0x03,0x48,0x00,0x30,0x45,0x02,0x20,0x27,0xd0,0xf5,
|
||||
0x36,0xa3,0xc2,0xc9,0xc5,0xb7,0x48,0xa7,0x4f,0x3c,0x23,0x7b,0x9d,0xad,0x1d,0x9e,
|
||||
0xc7,0x7f,0xe0,0xbb,0xe3,0x43,0x03,0x1a,0x3f,0x33,0x6d,0x73,0xa7,0x02,0x21,0x00,
|
||||
0x92,0x86,0x58,0x10,0x18,0xe1,0xdb,0x8c,0xb6,0x52,0xf4,0xc7,0xca,0x82,0xce,0xa5,
|
||||
0x0e,0x28,0xb5,0x71,0x9d,0x71,0x15,0x85,0xdd,0x56,0x85,0x00,0xd4,0xc1,0xda,0xd9];
|
||||
|
||||
// Rezas chip
|
||||
|
||||
certdata = [0x30,0x82,0x01,0xbc,0x30,0x82,0x01,0x62,0xa0,0x03,0x02,0x01,0x02,0x02,0x04,0x3b,
|
||||
0x71,0xec,0xb2,0x30,0x0a,0x06,0x08,0x2a,0x86,0x48,0xce,0x3d,0x04,0x03,0x02,0x30,
|
||||
0x72,0x31,0x0b,0x30,0x09,0x06,0x03,0x55,0x04,0x06,0x13,0x02,0x44,0x45,0x31,0x21,
|
||||
0x30,0x1f,0x06,0x03,0x55,0x04,0x0a,0x0c,0x18,0x49,0x6e,0x66,0x69,0x6e,0x65,0x6f,
|
||||
0x6e,0x20,0x54,0x65,0x63,0x68,0x6e,0x6f,0x6c,0x6f,0x67,0x69,0x65,0x73,0x20,0x41,
|
||||
0x47,0x31,0x13,0x30,0x11,0x06,0x03,0x55,0x04,0x0b,0x0c,0x0a,0x4f,0x50,0x54,0x49,
|
||||
0x47,0x41,0x28,0x54,0x4d,0x29,0x31,0x2b,0x30,0x29,0x06,0x03,0x55,0x04,0x03,0x0c,
|
||||
0x22,0x49,0x6e,0x66,0x69,0x6e,0x65,0x6f,0x6e,0x20,0x4f,0x50,0x54,0x49,0x47,0x41,
|
||||
0x28,0x54,0x4d,0x29,0x20,0x54,0x72,0x75,0x73,0x74,0x20,0x58,0x20,0x43,0x41,0x20,
|
||||
0x31,0x30,0x31,0x30,0x1e,0x17,0x0d,0x31,0x37,0x30,0x38,0x33,0x31,0x31,0x32,0x30,
|
||||
0x39,0x33,0x31,0x5a,0x17,0x0d,0x33,0x37,0x30,0x38,0x33,0x31,0x31,0x32,0x30,0x39,
|
||||
0x33,0x31,0x5a,0x30,0x00,0x30,0x59,0x30,0x13,0x06,0x07,0x2a,0x86,0x48,0xce,0x3d,
|
||||
0x02,0x01,0x06,0x08,0x2a,0x86,0x48,0xce,0x3d,0x03,0x01,0x07,0x03,0x42,0x00,0x04,
|
||||
0xd5,0xf9,0x1c,0xd4,0x2b,0x20,0x10,0x9c,0x05,0x65,0x8b,0xb0,0x29,0xe7,0xfb,0x16,
|
||||
0x62,0xe7,0x00,0xd0,0x6e,0xb1,0x37,0xfa,0x23,0x29,0x2d,0x46,0xb7,0x0e,0xf4,0x1f,
|
||||
0x3d,0xb5,0x37,0x04,0x63,0xa9,0x64,0xd4,0xe5,0x9f,0x8c,0x1d,0x91,0x8d,0x14,0x6a,
|
||||
0xa6,0x42,0xe8,0xc9,0x15,0x90,0x41,0xff,0x04,0xb9,0x47,0x6a,0x36,0x65,0xf6,0x89,
|
||||
0xa3,0x58,0x30,0x56,0x30,0x0e,0x06,0x03,0x55,0x1d,0x0f,0x01,0x01,0xff,0x04,0x04,
|
||||
0x03,0x02,0x00,0x80,0x30,0x0c,0x06,0x03,0x55,0x1d,0x13,0x01,0x01,0xff,0x04,0x02,
|
||||
0x30,0x00,0x30,0x15,0x06,0x03,0x55,0x1d,0x20,0x04,0x0e,0x30,0x0c,0x30,0x0a,0x06,
|
||||
0x08,0x2a,0x82,0x14,0x00,0x44,0x01,0x14,0x01,0x30,0x1f,0x06,0x03,0x55,0x1d,0x23,
|
||||
0x04,0x18,0x30,0x16,0x80,0x14,0xca,0x05,0x33,0xd7,0x4f,0xc4,0x7f,0x09,0x49,0xfb,
|
||||
0xdb,0x12,0x25,0xdf,0xd7,0x97,0x9d,0x41,0x1e,0x15,0x30,0x0a,0x06,0x08,0x2a,0x86,
|
||||
0x48,0xce,0x3d,0x04,0x03,0x02,0x03,0x48,0x00,0x30,0x45,0x02,0x21,0x00,0xc3,0xbb,
|
||||
0x21,0xa6,0x07,0xbc,0xb0,0x8a,0x75,0xf4,0x15,0x9d,0x76,0xd1,0xfd,0x72,0x3a,0xef,
|
||||
0xca,0x5a,0x88,0x2a,0xe8,0x03,0xa8,0x01,0xc0,0x02,0xd4,0x56,0x63,0x85,0x02,0x20,
|
||||
0x22,0x64,0x7e,0x20,0x4c,0x33,0x63,0xa1,0x98,0x3e,0xdf,0xc8,0x65,0x74,0x97,0xcc,
|
||||
0x19,0xa2,0xf6,0x49,0xae,0x8b,0x2c,0xe4,0x52,0x97,0xf3,0x34,0xda,0x9c,0x53,0x34 ];
|
||||
// 452
|
||||
/*
|
||||
let sigdata = [
|
||||
0x02,0x20,0x62,0x3a,0xd5,0xe2,0x22,0xe5,0x99,0x3f,0x0f,0xc7,0x22,0x28,0x00,0x51,
|
||||
0x29,0xc0,0xac,0x6a,0xcb,0xa4,0xec,0x63,0x60,0x30,0x09,0xb1,0xb8,0x61,0x65,0x00,
|
||||
0xca,0xae,0x02,0x21,0x00,0xf6,0xab,0xd8,0x35,0x2a,0x75,0xc2,0x51,0xd3,0x79,0xc1,
|
||||
0xf0,0x2f,0x3a,0x1d,0x5d,0xe9,0xff,0xce,0xcc,0x8f,0x9c,0xdd,0x79,0xc0,0x24,0x19,
|
||||
0x8b,0x2e,0x5a,0x76,0x54
|
||||
];
|
||||
|
||||
let sigdata = [0x30,0x45,0x02,0x20,0x02,0x20,0x6b,0x32,0x55,0x46,0x4a,0xe3,0xed,0x50,0x67,0x04,
|
||||
0x29,0x4c,0x49,0xe5,0xc4,0x4d,0xfc,0x36,0x5d,0x3b,0x90,0xb1,0x74,0xf6,0xc2,0xb5,
|
||||
0x83,0x9d,0xf2,0x4c,0x02,0x21,0x00,0x4e,0x35,0x02,0x21,0x00,0xc0,0xdc,0x7f,0xd1,
|
||||
0x89,0xaa,0x4f,0x7e,0xe2,0xdd,0xad,0x0b,0x82,0xde,0x59,0x1d,0x98,0xba,0xd2,0xe3,
|
||||
0xab,0xf6,0xd2,0x4e,0x41,0x49,0x25];
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
Signature:
|
||||
0x02,0x20,0x6e,0x4d,0x4c,0x82,0xa7,0xdd,0xb5,0x9c,0x19,0x6b,0x84,0xf5,0xc3,0x69,
|
||||
0x14,0xc9,0x7e,0xd6,0x20,0xb7,0xed,0xc1,0xee,0x94,0x3f,0x92,0xc7,0x71,0xd8,0x23,
|
||||
0x6b,0xe4,0x02,0x20,0x7e,0x35,0x9e,0xa4,0xca,0xfb,0x29,0xe5,0x1f,0x5a,0xec,0x57,
|
||||
0x41,0x73,0xf4,0xc7,0x9e,0x9a,0x30,0x39,0x37,0xab,0x41,0xb3,0xab,0x16,0xd6,0xb4,
|
||||
0x95,0x71,0x73,0x14];
|
||||
Format Signature ... OK
|
||||
Signature Formated Length: 71
|
||||
Signature Formated:
|
||||
let sigdata = [
|
||||
0x30,0x45,0x02,0x20,0x02,0x20,0x6e,0x4d,0x4c,0x82,0xa7,0xdd,0xb5,0x9c,0x19,0x6b,
|
||||
0x84,0xf5,0xc3,0x69,0x14,0xc9,0x7e,0xd6,0x20,0xb7,0xed,0xc1,0xee,0x94,0x3f,0x92,
|
||||
0xc7,0x71,0xd8,0x23,0x02,0x21,0x00,0x6b,0xe4,0x02,0x20,0x7e,0x35,0x9e,0xa4,0xca,
|
||||
0xfb,0x29,0xe5,0x1f,0x5a,0xec,0x57,0x41,0x73,0xf4,0xc7,0x9e,0x9a,0x30,0x39,0x37,
|
||||
0xab,0x41,0xb3,0xab,0x16,0xd6,0xb4];
|
||||
Verify Signature ... OK
|
||||
|
||||
// Press sig no end
|
||||
let sigdata = [
|
||||
0x30,0x44,0x02,0x20,0x02,0x21,0x00,0xd4,0x4c,0x73,0x6e,0x85,0x71,0x17,0xc9,0x02,
|
||||
0xe3,0x11,0xca,0x24,0x72,0xfd,0xbf,0xe1,0x81,0xc2,0x4d,0x3d,0xde,0xca,0x46,0xcd,
|
||||
0x42,0xd3,0x82,0xa3,0x02,0x20,0x37,0x4e,0x09,0x02,0x20,0x07,0x92,0x75,0xa4,0xd1,
|
||||
0x76,0x2d,0xc9,0x5f,0x4b,0x00,0x7a,0xd7,0x7d,0xe6,0x41,0x92,0x4d,0xaa,0x25,0x4f,
|
||||
0x1e,0x65,0x94,0xc5,0x48,0x29
|
||||
];
|
||||
*/
|
||||
|
||||
let sigdata = [
|
||||
0x02,0x20,0x03,0xff,0xc2,0x29,0x7c,0x2e,0xb7,0xad,0xf3,0x2f,0x88,0x42,0x59,0x09,
|
||||
0x70,0xe2,0x62,0x4e,0x5c,0xa2,0x67,0x2c,0x0d,0xe9,0xa8,0x7b,0xaf,0xe1,0xd7,0xed,
|
||||
0xcb,0x37,0x02,0x20,0x76,0x00,0xcd,0x77,0x24,0x2f,0xa4,0xd6,0x5b,0x44,0x47,0xc6,
|
||||
0x08,0x14,0x08,0xaa,0x31,0xf4,0x1b,0x0f,0x02,0x30,0xe4,0x16,0x20,0x7d,0xfb,0x67
|
||||
];
|
||||
|
||||
//let sigdata = [ 5,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];
|
||||
var b = new Buffer.from(certdata);
|
||||
console.log(certdata.length);
|
||||
|
||||
fs.writeFile("pubreza.bin", b, "binary",function(err) {
|
||||
if(err) {
|
||||
console.log(err);
|
||||
} else {
|
||||
console.log("The file was saved!");
|
||||
}
|
||||
});
|
||||
BIN
hash.bin
Normal file
BIN
hash.bin
Normal file
Binary file not shown.
BIN
hello.dat
Normal file
BIN
hello.dat
Normal file
Binary file not shown.
39
include/README
Normal file
39
include/README
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
|
||||
This directory is intended for project header files.
|
||||
|
||||
A header file is a file containing C declarations and macro definitions
|
||||
to be shared between several project source files. You request the use of a
|
||||
header file in your project source file (C, C++, etc) located in `src` folder
|
||||
by including it, with the C preprocessing directive `#include'.
|
||||
|
||||
```src/main.c
|
||||
|
||||
#include "header.h"
|
||||
|
||||
int main (void)
|
||||
{
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
Including a header file produces the same results as copying the header file
|
||||
into each source file that needs it. Such copying would be time-consuming
|
||||
and error-prone. With a header file, the related declarations appear
|
||||
in only one place. If they need to be changed, they can be changed in one
|
||||
place, and programs that include the header file will automatically use the
|
||||
new version when next recompiled. The header file eliminates the labor of
|
||||
finding and changing all the copies as well as the risk that a failure to
|
||||
find one copy will result in inconsistencies within a program.
|
||||
|
||||
In C, the usual convention is to give header files names that end with `.h'.
|
||||
It is most portable to use only letters, digits, dashes, and underscores in
|
||||
header file names, and at most one dot.
|
||||
|
||||
Read more about using header files in official GCC documentation:
|
||||
|
||||
* Include Syntax
|
||||
* Include Operation
|
||||
* Once-Only Headers
|
||||
* Computed Includes
|
||||
|
||||
https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html
|
||||
3
key64.pem
Normal file
3
key64.pem
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
-----BEGIN PUBLIC KEY-----
|
||||
BAcClNfW2eyy/2hT6MTd/ZZTIJOPczPdrIwuDk15XKQDS5sk9uxjzSrnoBTTS7wyIgW5TpCfiiFi8s4Vz9+hIBI=
|
||||
-----END PUBLIC KEY-----
|
||||
46
lib/README
Normal file
46
lib/README
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
|
||||
This directory is intended for project specific (private) libraries.
|
||||
PlatformIO will compile them to static libraries and link into executable file.
|
||||
|
||||
The source code of each library should be placed in a an own separate directory
|
||||
("lib/your_library_name/[here are source files]").
|
||||
|
||||
For example, see a structure of the following two libraries `Foo` and `Bar`:
|
||||
|
||||
|--lib
|
||||
| |
|
||||
| |--Bar
|
||||
| | |--docs
|
||||
| | |--examples
|
||||
| | |--src
|
||||
| | |- Bar.c
|
||||
| | |- Bar.h
|
||||
| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html
|
||||
| |
|
||||
| |--Foo
|
||||
| | |- Foo.c
|
||||
| | |- Foo.h
|
||||
| |
|
||||
| |- README --> THIS FILE
|
||||
|
|
||||
|- platformio.ini
|
||||
|--src
|
||||
|- main.c
|
||||
|
||||
and a contents of `src/main.c`:
|
||||
```
|
||||
#include <Foo.h>
|
||||
#include <Bar.h>
|
||||
|
||||
int main (void)
|
||||
{
|
||||
...
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
PlatformIO Library Dependency Finder will find automatically dependent
|
||||
libraries scanning project source files.
|
||||
|
||||
More information about PlatformIO Library Dependency Finder
|
||||
- https://docs.platformio.org/page/librarymanager/ldf.html
|
||||
32
localtry/LBs Sign Key.crt
Normal file
32
localtry/LBs Sign Key.crt
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
YsXtCUTRC2HVvg==
|
||||
-----END CERTIFICATE-----
|
||||
52
localtry/LBs Sign Key.key
Normal file
52
localtry/LBs Sign Key.key
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
-----BEGIN PRIVATE KEY-----
|
||||
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
|
||||
SykFgO0hP10e9Mw7Duf1u0UWfC0unA==
|
||||
-----END PRIVATE KEY-----
|
||||
1
localtry/sign.txt
Normal file
1
localtry/sign.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
Hello, World
|
||||
BIN
localtry/sign.txt.sha256
Normal file
BIN
localtry/sign.txt.sha256
Normal file
Binary file not shown.
1
message.txt
Normal file
1
message.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
press
|
||||
4
osslkey.pem
Normal file
4
osslkey.pem
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
-----BEGIN PUBLIC KEY-----
|
||||
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEBwKU19bZ7LL/aFPoxN39llMgk49z
|
||||
M92sjC4OTXlcpANLmyT27GPNKuegFNNLvDIiBblOkJ+KIWLyzhXP36EgEg==
|
||||
-----END PUBLIC KEY-----
|
||||
18
platformio.ini
Normal file
18
platformio.ini
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
;PlatformIO Project Configuration File
|
||||
;
|
||||
; Build options: build flags, source filter
|
||||
; Upload options: custom upload port, speed and extra flags
|
||||
; Library options: dependencies, extra library storages
|
||||
; Advanced options: extra scripting
|
||||
;
|
||||
; Please visit documentation for the other options and examples
|
||||
; https://docs.platformio.org/page/projectconf.html
|
||||
|
||||
[env:m5stack-core-esp32]
|
||||
framework = arduino
|
||||
platform = espressif32
|
||||
board = m5stack-core-esp32
|
||||
|
||||
build_flags = -fpermissive
|
||||
lib_deps =
|
||||
OPTIGA Trust X@1.0.5
|
||||
1
press.txt
Normal file
1
press.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
press
|
||||
BIN
pub.crt
Normal file
BIN
pub.crt
Normal file
Binary file not shown.
1
pubkey.der
Normal file
1
pubkey.der
Normal file
|
|
@ -0,0 +1 @@
|
|||
”ЧЦЩмІяhSиДЭэ–S “Џs3Э¬Њ.My\¤K›$цмcН*з УKј2"№NђџЉ!bтОПЯЎ
|
||||
BIN
pubreza.bin
Normal file
BIN
pubreza.bin
Normal file
Binary file not shown.
4
reza.pem
Normal file
4
reza.pem
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
-----BEGIN PUBLIC KEY-----
|
||||
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1fkc1CsgEJwFZYuwKef7FmLnANBu
|
||||
sTf6IyktRrcO9B89tTcEY6lk1OWfjB2RjRRqpkLoyRWQQf8EuUdqNmX2iQ==
|
||||
-----END PUBLIC KEY-----
|
||||
BIN
sigasn.bin
Normal file
BIN
sigasn.bin
Normal file
Binary file not shown.
1
sigdata64.sig
Normal file
1
sigdata64.sig
Normal file
|
|
@ -0,0 +1 @@
|
|||
MEUCIAIgazJVRkrj7VBnBClMSeXETfw2XTuQsXT2wrWDnfJMAiEATjUCIQDA3H/RiapPfuLdrQuC3lkdmLrS46v20k5BSSU=
|
||||
BIN
signormal.bin
Normal file
BIN
signormal.bin
Normal file
Binary file not shown.
156
src/fprint.h
Normal file
156
src/fprint.h
Normal file
|
|
@ -0,0 +1,156 @@
|
|||
#ifndef FPRINT_H
|
||||
#define FPRINT_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "Arduino.h"
|
||||
|
||||
#ifndef SUPPRESSCOLLORS
|
||||
#define ANSI_COLOR_RED "\x1b[31m"
|
||||
#define ANSI_COLOR_GREEN "\x1b[32m"
|
||||
#define ANSI_COLOR_YELLOW "\x1b[33m"
|
||||
#define ANSI_COLOR_BLUE "\x1b[34m"
|
||||
#define ANSI_COLOR_MAGENTA "\x1b[35m"
|
||||
#define ANSI_COLOR_CYAN "\x1b[36m"
|
||||
#define ANSI_COLOR_RESET "\x1b[0m"
|
||||
#else
|
||||
#define ANSI_COLOR_RED ""
|
||||
#define ANSI_COLOR_GREEN ""
|
||||
#define ANSI_COLOR_YELLOW ""
|
||||
#define ANSI_COLOR_BLUE ""
|
||||
#define ANSI_COLOR_MAGENTA ""
|
||||
#define ANSI_COLOR_CYAN ""
|
||||
#define ANSI_COLOR_RESET ""
|
||||
#endif
|
||||
|
||||
#define MAXCMD_LEN 255
|
||||
#define HEXDUMP_COLS 16
|
||||
|
||||
#ifndef SUPPRESSHEXDUMP
|
||||
#define SUPPRESSHEXDUMP 0
|
||||
#endif
|
||||
#define HEXDUMP(a, b) (SUPPRESSHEXDUMP == 0) ? __hexdump__(a, b) : (void)0;
|
||||
/**
|
||||
*
|
||||
* This function prints a given input in green
|
||||
* color with a \r\n signs at the end
|
||||
*
|
||||
* @retval None
|
||||
*/
|
||||
inline void printlnGreen(const char c[]) {
|
||||
char tmp[100];
|
||||
sprintf(tmp, "%s%s%s", ANSI_COLOR_GREEN, c, ANSI_COLOR_RESET);
|
||||
Serial.println(tmp);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* This function prints a given input in red
|
||||
* color with a \r\n signs at the end
|
||||
*
|
||||
* @retval None
|
||||
*/
|
||||
inline void printlnRed(const char c[]) {
|
||||
char tmp[100];
|
||||
sprintf(tmp, "%s%s%s", ANSI_COLOR_RED, c, ANSI_COLOR_RESET);
|
||||
Serial.println(tmp);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* This function prints a given input in magenta
|
||||
* color with a \r\n signs at the end
|
||||
*
|
||||
* @retval None
|
||||
*/
|
||||
inline void printlnMagenta(const char c[]) {
|
||||
char tmp[100];
|
||||
sprintf(tmp, "%s%s%s", ANSI_COLOR_MAGENTA, c, ANSI_COLOR_RESET);
|
||||
Serial.println(tmp);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* This function prints a given input in magenta
|
||||
* color without a \r\n signs at the end
|
||||
*
|
||||
* @retval None
|
||||
*/
|
||||
inline void printMagenta(const char c[]) {
|
||||
char tmp[100];
|
||||
sprintf(tmp, "%s%s%s", ANSI_COLOR_MAGENTA, c, ANSI_COLOR_RESET);
|
||||
Serial.print(tmp);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* This function prints a given input in green
|
||||
* color without a \r\n signs at the end
|
||||
*
|
||||
* @retval None
|
||||
*/
|
||||
inline void printGreen(const char c[]) {
|
||||
char tmp[100];
|
||||
sprintf(tmp, "%s%s%s", ANSI_COLOR_GREEN, c, ANSI_COLOR_RESET);
|
||||
Serial.print(tmp);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Printout data in a standard hex view
|
||||
*
|
||||
* @param[in] p_buf Pointer to data which should be printed out.
|
||||
* @param[in] l_len Length of a data
|
||||
*
|
||||
* @retval None
|
||||
* @example
|
||||
0x000000: 2e 2f 68 65 78 64 75 6d ./hexdum
|
||||
0x000008: 70 00 53 53 48 5f 41 47 p.SSH_AG
|
||||
0x000010: 45 4e 54 5f ENT_
|
||||
*/
|
||||
inline void __hexdump__(const void *p_buf, uint32_t l_len) {
|
||||
unsigned int i, j;
|
||||
char str[MAXCMD_LEN];
|
||||
for (i = 0; i < l_len + ((l_len % HEXDUMP_COLS) ? (HEXDUMP_COLS - l_len % HEXDUMP_COLS) : 0); i++) {
|
||||
/* print offset */
|
||||
if (i % HEXDUMP_COLS == 0) {
|
||||
sprintf(str, "0x%06x: ", i);
|
||||
Serial.print(str);
|
||||
}
|
||||
|
||||
/* print hex data */
|
||||
if (i < l_len) {
|
||||
sprintf(str, "%02x ", 0xFF & ((char *)p_buf)[i]);
|
||||
Serial.print(str);
|
||||
} else /* end of block, just aligning for ASCII dump */
|
||||
{
|
||||
sprintf(str, " ");
|
||||
Serial.print(str);
|
||||
}
|
||||
|
||||
/* print ASCII dump */
|
||||
if (i % HEXDUMP_COLS == (HEXDUMP_COLS - 1)) {
|
||||
for (j = i - (HEXDUMP_COLS - 1); j <= i; j++) {
|
||||
if (j >= l_len) /* end of block, not really printing */
|
||||
{
|
||||
Serial.print(' ');
|
||||
} else if (isprint((int)((char *)p_buf)[j])) /* printable char */
|
||||
{
|
||||
Serial.print(((char *)p_buf)[j]);
|
||||
} else /* other char */
|
||||
{
|
||||
Serial.print('.');
|
||||
}
|
||||
}
|
||||
Serial.print('\r');
|
||||
Serial.print('\n');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
267
src/main.cpp
Normal file
267
src/main.cpp
Normal file
|
|
@ -0,0 +1,267 @@
|
|||
/**
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2018 Infineon Technologies AG
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE
|
||||
*
|
||||
* Demonstrates use of the
|
||||
* Infineon Technologies AG OPTIGA™ Trust X Arduino library
|
||||
*/
|
||||
|
||||
#include "OPTIGATrustX.h"
|
||||
|
||||
#define MAXCMD_LEN 255
|
||||
#define CERT_LENGTH 512
|
||||
#define RND_LENGTH 64
|
||||
#define HASH_LENGTH 32
|
||||
#define SIGN_LENGTH 80
|
||||
#define PUBKEY_LENGTH 70
|
||||
#define UID_LENGTH 27
|
||||
|
||||
#define SUPPRESSCOLLORS
|
||||
#include "fprint.h"
|
||||
#include <WiFi.h>
|
||||
|
||||
bool oldButton = true;
|
||||
#define button 18
|
||||
|
||||
|
||||
const char* ssid = "LBsPhone";
|
||||
const char* password = "simple";
|
||||
|
||||
const char* host = "192.168.0.111";
|
||||
const int port = 8234;
|
||||
|
||||
#define ASSERT(err) if (ret) { printlnRed("Failed"); while (true); }
|
||||
|
||||
/*
|
||||
* Allocating buffers for further use in loop()
|
||||
*/
|
||||
uint8_t *cert = new uint8_t[CERT_LENGTH];
|
||||
uint16_t certLen = CERT_LENGTH;
|
||||
uint8_t *rnd = new uint8_t[RND_LENGTH];
|
||||
uint16_t rndLen = RND_LENGTH;
|
||||
uint8_t *hash = new uint8_t[HASH_LENGTH];
|
||||
uint16_t hashLen = HASH_LENGTH;
|
||||
uint8_t *rawSign = new uint8_t[SIGN_LENGTH];
|
||||
uint8_t *formSign = new uint8_t[SIGN_LENGTH];
|
||||
uint16_t signLen = SIGN_LENGTH;
|
||||
uint8_t *format = new uint8_t[SIGN_LENGTH];
|
||||
uint16_t formatLen = SIGN_LENGTH;
|
||||
uint8_t *pubKey = new uint8_t[PUBKEY_LENGTH];
|
||||
uint16_t pubKeyLen = PUBKEY_LENGTH;
|
||||
uint8_t *uid = new uint8_t[UID_LENGTH];
|
||||
|
||||
|
||||
|
||||
|
||||
static void output_result(char* tag, uint8_t* in, uint16_t in_len)
|
||||
{
|
||||
printlnGreen("OK");
|
||||
printMagenta(tag);
|
||||
printMagenta(" Length: ");
|
||||
Serial.println(in_len);
|
||||
printMagenta(tag);
|
||||
printlnMagenta(":");
|
||||
HEXDUMP(in, in_len);
|
||||
}
|
||||
|
||||
void loop()
|
||||
{
|
||||
uint32_t ret = 0;
|
||||
uint8_t cntr = 10;
|
||||
uint8_t ifxPublicKey[68];
|
||||
|
||||
/*
|
||||
* Getting co-processor Unique ID
|
||||
*/
|
||||
printGreen("Get co-processor UID ... ");
|
||||
uint16_t uidLength = UID_LENGTH;
|
||||
ret = trustX.getUniqueID(uid, uidLength);
|
||||
ASSERT(ret);
|
||||
output_result("Co-processor UID", uid, uidLength);
|
||||
|
||||
/*
|
||||
* Getting primary certificate
|
||||
*/
|
||||
printGreen("Reading cert ... ");
|
||||
ret = trustX.getCertificate(cert, certLen);
|
||||
ASSERT(ret);
|
||||
output_result("Certificate", cert, certLen);
|
||||
|
||||
/*
|
||||
* Generate a Keypair
|
||||
*/
|
||||
|
||||
/*
|
||||
printGreen("Generate Key Pair ... ");
|
||||
uint16_t ctx = 0;
|
||||
ret = trustX.generateKeypair(pubKey, pubKeyLen, ctx);
|
||||
ASSERT(ret);
|
||||
output_result("Public key", pubKey, pubKeyLen);
|
||||
*/
|
||||
|
||||
/*
|
||||
* Get random value of RND_LENGTH length
|
||||
*/
|
||||
/*
|
||||
printGreen("Get random value ... ");
|
||||
ret = trustX.getRandom(RND_LENGTH, rnd);
|
||||
ASSERT(ret);
|
||||
output_result("Random", rnd, RND_LENGTH);
|
||||
*/
|
||||
|
||||
/*
|
||||
* Calculate SHA256 value
|
||||
*/
|
||||
|
||||
char cmd[6] = "press\n";
|
||||
|
||||
output_result("PRESS", cmd, 6);
|
||||
|
||||
|
||||
printGreen("Calculate Hash ... ");
|
||||
ret = trustX.sha256(cmd, 6, hash);
|
||||
hashLen = 32;
|
||||
ASSERT(ret);
|
||||
output_result("SHA256", hash, hashLen);
|
||||
|
||||
|
||||
/*
|
||||
* Generate a signature NIST-P256
|
||||
*/
|
||||
printGreen("Generate Signature ... ");
|
||||
ret = trustX.calculateSignature(hash, hashLen, eFIRST_DEVICE_PRIKEY_1, formSign, signLen);
|
||||
Serial.printf("Code: %u\n", ret);
|
||||
ASSERT(ret);
|
||||
output_result("Signature", formSign, signLen);
|
||||
|
||||
printGreen("Format Signature ... ");
|
||||
ret = trustX.formatSignature(formSign, signLen, format, formatLen);
|
||||
ASSERT(ret);
|
||||
output_result("Signature Formated", format, formatLen);
|
||||
|
||||
/*
|
||||
* Verify just geberated signature
|
||||
*/
|
||||
trustX.getPublicKey(ifxPublicKey);
|
||||
|
||||
printGreen("Verify Signature ... ");
|
||||
ret = trustX.verifySignature(hash, hashLen, formSign, signLen);
|
||||
ASSERT(ret);
|
||||
printlnGreen("OK");
|
||||
|
||||
// init wifi
|
||||
// connect to server and send
|
||||
|
||||
/*
|
||||
* Count down 10 seconds and restart the application
|
||||
*/
|
||||
while(cntr) {
|
||||
Serial.print(cntr);
|
||||
Serial.println(" seconds untill restart.");
|
||||
delay(1000);
|
||||
cntr--;
|
||||
}
|
||||
}
|
||||
|
||||
void initWifi(){
|
||||
Serial.print("Connecting to ");
|
||||
Serial.println(ssid);
|
||||
WiFi.begin(ssid, password);
|
||||
while (WiFi.status() != WL_CONNECTED) {
|
||||
delay(500);
|
||||
Serial.print(".");
|
||||
}
|
||||
Serial.println("");
|
||||
Serial.println("WiFi connected with IP address: ");
|
||||
Serial.println(WiFi.localIP());
|
||||
}
|
||||
|
||||
void sendData(uint8_t* data, uint16_t len) {
|
||||
Serial.print("connecting to ");
|
||||
Serial.println(host);
|
||||
// Use WiFiClient class to create TCP connections
|
||||
WiFiClient client;
|
||||
|
||||
if (!client.connect(host, port)) {
|
||||
Serial.println("connection failed");
|
||||
return;
|
||||
}
|
||||
// This will send the data to the server
|
||||
client.print("hello world");
|
||||
client.stop();
|
||||
}
|
||||
|
||||
void setup()
|
||||
{
|
||||
uint32_t ret = 0;
|
||||
|
||||
/*
|
||||
* Initialise serial output
|
||||
*/
|
||||
Serial.begin(38400);
|
||||
Serial.println("Initializing ... ");
|
||||
|
||||
/*
|
||||
* Initialise OPTIGA™ Trust X
|
||||
*/
|
||||
printGreen("Begin Trust ... ");
|
||||
ret = trustX.begin();
|
||||
ASSERT(ret);
|
||||
printlnGreen("OK");
|
||||
|
||||
/*
|
||||
* Speed up the chip (min is 6ma, maximum is 15ma)
|
||||
*/
|
||||
printGreen("Setting Current Limit... ");
|
||||
ret = trustX.setCurrentLimit(15);
|
||||
ASSERT(ret);
|
||||
printlnGreen("OK");
|
||||
|
||||
/*
|
||||
* Check the return value which we just set
|
||||
*/
|
||||
printGreen("Checking Power Limit... ");
|
||||
uint8_t current_lim = 0;
|
||||
ret = trustX.getCurrentLimit(current_lim);
|
||||
ASSERT(ret);
|
||||
if (current_lim == 15) {
|
||||
printlnGreen("OK");
|
||||
} else {
|
||||
printlnRed("Failed");
|
||||
while(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void checkButton(){
|
||||
if(digitalRead(button) != oldButton){
|
||||
delay(5);
|
||||
if(digitalRead(button) != oldButton){
|
||||
if (oldButton == HIGH) {
|
||||
// Presed down
|
||||
} else {
|
||||
// pressed up
|
||||
}
|
||||
oldButton = digitalRead(button);
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
staticdata.sig
Normal file
BIN
staticdata.sig
Normal file
Binary file not shown.
1
staticdata2.bin
Normal file
1
staticdata2.bin
Normal file
|
|
@ -0,0 +1 @@
|
|||
nML‚§<E2809A>µ<EFBFBD>k„ץֳiֹ~ײ ·םֱמ”?’ַq״#kה ~5<>₪ֺ<E282AA>)וZלWAsפַ<D7A4><D6B7>097«A³«ײ´•qs
|
||||
11
test/README
Normal file
11
test/README
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
|
||||
This directory is intended for PIO Unit Testing and project tests.
|
||||
|
||||
Unit Testing is a software testing method by which individual units of
|
||||
source code, sets of one or more MCU program modules together with associated
|
||||
control data, usage procedures, and operating procedures, are tested to
|
||||
determine whether they are fit for use. Unit testing finds problems early
|
||||
in the development cycle.
|
||||
|
||||
More information about PIO Unit Testing:
|
||||
- https://docs.platformio.org/page/plus/unit-testing.html
|
||||
Loading…
Add table
Reference in a new issue