Initial
This commit is contained in:
		
							
								
								
									
										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
										
									
								
								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!");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
							
								
								
									
										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-----
 | 
				
			||||||
 | 
					MIIFdjCCA14CCQCH0F2k0CH8dTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJO
 | 
				
			||||||
 | 
					TDEVMBMGA1UECAwMWnVpZCBIb2xsYW5kMRIwEAYDVQQHDAlSb3R0ZXJkYW0xGjAY
 | 
				
			||||||
 | 
					BgNVBAoMEVNwYXJrbGluZyBOZXR3b3JrMRAwDgYDVQQLDAdJVCBEZXB0MRUwEwYD
 | 
				
			||||||
 | 
					VQQDDAxMQnMgU2lnbiBLZXkwHhcNMTkwNjI4MDk1NTE5WhcNMjAwNjI3MDk1NTE5
 | 
				
			||||||
 | 
					WjB9MQswCQYDVQQGEwJOTDEVMBMGA1UECAwMWnVpZCBIb2xsYW5kMRIwEAYDVQQH
 | 
				
			||||||
 | 
					DAlSb3R0ZXJkYW0xGjAYBgNVBAoMEVNwYXJrbGluZyBOZXR3b3JrMRAwDgYDVQQL
 | 
				
			||||||
 | 
					DAdJVCBEZXB0MRUwEwYDVQQDDAxMQnMgU2lnbiBLZXkwggIiMA0GCSqGSIb3DQEB
 | 
				
			||||||
 | 
					AQUAA4ICDwAwggIKAoICAQDpUHMM+5VAkYHQ/fuQ6+j9sbB1B9gJ3r6FBzz/0E7e
 | 
				
			||||||
 | 
					KgKU967fa8NHUy14PE7t0EBJWIhPWRLgAZCHPdt4eCRVbjXpYo0F99tM5L5v77Pv
 | 
				
			||||||
 | 
					aZBYeMg1UWWHFD4v9IE7LEQEKPIllNlAjz5dM9nzSG9WDx5XtQhcBZ8+zIOcbcVQ
 | 
				
			||||||
 | 
					Mb39ZawVInvz/MnCESqoldqNxiILkb3Mf/PCW5eh9LrOh/jyBg27Brc8M+RnBj4d
 | 
				
			||||||
 | 
					fCDaNT/xbZFhgmZpEsNlkIKD9/wSiG//0Aa/XOOabBDuk3nYPCT5jr4OuNK5M8cO
 | 
				
			||||||
 | 
					Q5tGffkYCztNTR2hhrz+oqjaTmjVGcnriQzekIL390cW9Q0V5WwX95KNF0+eS+Qd
 | 
				
			||||||
 | 
					JRLDLS4vWIzKzo++74iiGSmrJoB170EY/yDnBgA4Kg7Kjvt3oqjladLFWwk/cgGe
 | 
				
			||||||
 | 
					mVV3tSz3ctINT4j8/IUNWCySJmSa65JEzYkXze5Z+xSBtB9bU5H12w2xdESPbgF7
 | 
				
			||||||
 | 
					mGEXoilbo9Mibgdxwr+ZjqmArdSMB/YeR1PaaPUjf/EsgN1XoPrVivEwqH5dNo2m
 | 
				
			||||||
 | 
					xlMNu0nI9Utn4ot1X34MqulcZU3nW86ajRvZ8U0VVcP+/vRrdH3pBFIGZXTMLjjj
 | 
				
			||||||
 | 
					H9zDWCZ4DK+9f7mSuwD4q+0INk4t+nj1ww/+3YaBIafRbmOyvXaaCAgKoA/aKb/a
 | 
				
			||||||
 | 
					4QIDAQABMA0GCSqGSIb3DQEBCwUAA4ICAQBzCjsc7Nf5obQmg5snmhsL9nrjAcRV
 | 
				
			||||||
 | 
					L6xYF5AJ+8P+kmOiXwhvm0wZ0jqYhDcuWN7/oZt3i39f7Ei84cYSFAQlMu/FMhZg
 | 
				
			||||||
 | 
					hzoERnIOMu9sMlKBzgcmKUHuNhFoiZTyhFD+smCrcoEj+1bi4qz4t7GIAPM6Rzm0
 | 
				
			||||||
 | 
					IJeJb8hL1I2tpuHC6bVjaCwYwS/6VtgoU1xcqvb8B5YRMpvDUCjgM6WN1cGdySTJ
 | 
				
			||||||
 | 
					byA0u9MqEHQAsb7imW7D2X06Xi8yxH9+jh+BppSvn6EmAAywBwy32B7y7tLMnqZy
 | 
				
			||||||
 | 
					HY2rks89aHM0fFF07P6pa81RDe+NO6ncNLG09R/1PaCVBVuVCvR0OwUf3jKxYVVM
 | 
				
			||||||
 | 
					lp9/BlkU+duoRRRhaN4qo30HpEeXDpywETf0zJDstUp6ofDq1FTa6zpuPu0jcDHm
 | 
				
			||||||
 | 
					a+szEVNRd00LdCsELVeUoVQSqwq1y2oqrpQCCkL5RQ5XfoIzOOXehk/NgDcOlYvr
 | 
				
			||||||
 | 
					9vB2RQCvsG6c6ur+taNWC6OBBSKLGjAS9oST+Xm1zcu8U4zREBBB5Drxus5DW9Zo
 | 
				
			||||||
 | 
					xlfL0aNWdV1lkRr6o2vvwA3018hIpsji1kkZd8ZOorBHkXrjVRDqpjey+XpCXJ2k
 | 
				
			||||||
 | 
					cfugwb18jJ7HuGjeydm1BvnksfuXYYbsoSOoe2A/lGTmL6yf0YUAgUV/yBFLoh2j
 | 
				
			||||||
 | 
					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-----
 | 
				
			||||||
 | 
					MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQDpUHMM+5VAkYHQ
 | 
				
			||||||
 | 
					/fuQ6+j9sbB1B9gJ3r6FBzz/0E7eKgKU967fa8NHUy14PE7t0EBJWIhPWRLgAZCH
 | 
				
			||||||
 | 
					Pdt4eCRVbjXpYo0F99tM5L5v77PvaZBYeMg1UWWHFD4v9IE7LEQEKPIllNlAjz5d
 | 
				
			||||||
 | 
					M9nzSG9WDx5XtQhcBZ8+zIOcbcVQMb39ZawVInvz/MnCESqoldqNxiILkb3Mf/PC
 | 
				
			||||||
 | 
					W5eh9LrOh/jyBg27Brc8M+RnBj4dfCDaNT/xbZFhgmZpEsNlkIKD9/wSiG//0Aa/
 | 
				
			||||||
 | 
					XOOabBDuk3nYPCT5jr4OuNK5M8cOQ5tGffkYCztNTR2hhrz+oqjaTmjVGcnriQze
 | 
				
			||||||
 | 
					kIL390cW9Q0V5WwX95KNF0+eS+QdJRLDLS4vWIzKzo++74iiGSmrJoB170EY/yDn
 | 
				
			||||||
 | 
					BgA4Kg7Kjvt3oqjladLFWwk/cgGemVV3tSz3ctINT4j8/IUNWCySJmSa65JEzYkX
 | 
				
			||||||
 | 
					ze5Z+xSBtB9bU5H12w2xdESPbgF7mGEXoilbo9Mibgdxwr+ZjqmArdSMB/YeR1Pa
 | 
				
			||||||
 | 
					aPUjf/EsgN1XoPrVivEwqH5dNo2mxlMNu0nI9Utn4ot1X34MqulcZU3nW86ajRvZ
 | 
				
			||||||
 | 
					8U0VVcP+/vRrdH3pBFIGZXTMLjjjH9zDWCZ4DK+9f7mSuwD4q+0INk4t+nj1ww/+
 | 
				
			||||||
 | 
					3YaBIafRbmOyvXaaCAgKoA/aKb/a4QIDAQABAoICAQCL0SRBQXsd6JTtE2dwX4+O
 | 
				
			||||||
 | 
					iK+AUqUKtStjOQU7IDBDPtWxRATN6xxpX9U92pZKOaRsz9tQAccn6ogcI9ukBAty
 | 
				
			||||||
 | 
					DsvMAr0UOIZ5PBNLrVAdRxuziR4hpZe8LUtfHZ1cQpi4DXmfP+Y5pB3xaKNSAbSG
 | 
				
			||||||
 | 
					1CSQ1vIdg1j9Hz43viiieEys0AMh3zp86p5V6EeyI6uHjpbUbBBbvsnrTUw/SBOy
 | 
				
			||||||
 | 
					tRVgpHQSAmJId6iGfN04eiyN159sJQcccjLBAPeLo+AzCadLy+uiV53Ti+zxm5VC
 | 
				
			||||||
 | 
					A6rfBJv72ajX1baiOf8t8yHYSqG94O020+HP7JjR19RsjtSP8BZrSgQmVF/IDa3R
 | 
				
			||||||
 | 
					VSGkTqbkxR/aNqfh2L8mchUYQ+WvAgOscRtDB+V3wWuq8vsbfXt8qh0jBMw6+snT
 | 
				
			||||||
 | 
					xBx7VJr6lvDbkl5B/WcUxMMkgrEJAEaNem2n0oCh+BO5VCvEskyNoZEBe3ePgijR
 | 
				
			||||||
 | 
					NZTSAPpUovZZCF+PoexQrbiUagyAJhv+Z51qOhDE2AnHIyuYoXMCOosGRCou7sMN
 | 
				
			||||||
 | 
					PpEGy+E6IHJDF3+vFJoGgKv56P4Zl+kAhEELtHaBOwqldZ3WZU659napbYmFA5js
 | 
				
			||||||
 | 
					iDkafVCBQta6mBrD7ixHu4D+bzF1x24E+li8uuouu3r2AMviyi3NfxKZEuKFczHR
 | 
				
			||||||
 | 
					Pkse7+/rL1yOx4OCjZQnKQKCAQEA+rObUBc8um9rzTeHcA05i76VZ3det6nBYSGT
 | 
				
			||||||
 | 
					R1mXhO7kvDyoWvpRrdMX9hThu/kJtlq9w2Z2jacJeMCrVTUu0f5xgK+kZD4hYmqi
 | 
				
			||||||
 | 
					TIGKY86F0GJy9Lkqipv5VRD7BL5Wz7poEUOGb59KWCSS0pjeTv+IH8BPFl+79tyg
 | 
				
			||||||
 | 
					yU14eX+sOZ8Mn59TrxWjWU3gNTHRta4LGrlK8SqnpXHRHdPCz6XSA6VleiC7YzR6
 | 
				
			||||||
 | 
					xpMnew77c2b0f3apUwdr+fIOsc3eHsuluc6sPqB1gOD8VRALO6z9DduqsRNiqAJP
 | 
				
			||||||
 | 
					aGSLNM5+lkEGKgKtM+2vPc3USIV/C07DsgKffIvpbaaaxZXU/wKCAQEA7j7FPfpz
 | 
				
			||||||
 | 
					hPcEuQ+mvWEfHbf4yPk+X2ZGAOcIN0U4CCr/k5CB5dcXy5NdZXhvMWTvIGfj2x/4
 | 
				
			||||||
 | 
					MDIG+th5cRlxW2xlX5dwVCGNj5LPBng2VXCka/sjAoikHByyIoDeq7Z/zAqv+nWc
 | 
				
			||||||
 | 
					3rHQrPiNCwdKymwejlvk0B59S4+aeMFBa9b80njR74FHob0RsMHFrZQCBE83ejkb
 | 
				
			||||||
 | 
					TyoZTX797jGIiIOhMCO2oOq2obhc2C7RadCLurkFRiQxEox4rlgnf52ikcXBMJTI
 | 
				
			||||||
 | 
					SAVNybnkQeufvnrhAEIJBUia4EhkgM6OQSz/olwOScbkFIl+sICM5bTFtU0jvrAY
 | 
				
			||||||
 | 
					o1fzwDVf3xTwHwKCAQBkOlQYlAGyY4NMuyuJj6/2/43JnL6gXNy0EXFJMDdUbRHD
 | 
				
			||||||
 | 
					c9i27qajAObuefC5btoELoj5SsiQ3zv5K8YTvbxnNft4wD/P18sPBqS2Q3/pYRK8
 | 
				
			||||||
 | 
					ee+NiU3JtovbB3vjrJkWWWbrp/xiOePGE3Ejgvw1xxFL6F12C3YhPpmFgVRt9q4L
 | 
				
			||||||
 | 
					J1wroM4bDGKO/IRrn+xAX0GPQI8GldAKY9N/wj57N8cbsA8+4UEpazy+kOxS1W2P
 | 
				
			||||||
 | 
					+JQ9NVqCmFAB0FUxnqVz2GT8QPU54Hq5uLkI5O4owIM2/CBkxORHWQ0YJkJFLV0M
 | 
				
			||||||
 | 
					gxiMyR8nyJmr8tMw3zYodifkzgmnCGSdcuMjpUBPAoIBABucJKmhG8AeDGsR+EXc
 | 
				
			||||||
 | 
					OonsJyXLVMIjjRtPqvEU0YCI0yObzKIBQl2yT1GSGnjD9L5xq8NaOh4DvjFV4wUL
 | 
				
			||||||
 | 
					aMqqjjj8yOTHGqu33MwoJEvUiQmGijEh+rrTTIWZH7UQqlDQMEK7XJmmS8Ov7lCH
 | 
				
			||||||
 | 
					4NACpavj1GmWDvkxxDoYU2eW+6e8nr+94LpKugEdA7aw/2bWc1xzv8l13IbRn8X5
 | 
				
			||||||
 | 
					8ZO4hXaZvPF7If0t63yWOGil5XuXM5hEW3eF1fqGdtVgRFXWcCQcKfXGv5QQOfa1
 | 
				
			||||||
 | 
					wsaFYQvxmzAEkQZK/XK7/VpqR5neRz2fkhEbOhZkX2/DemIfdXQE3mYXrETrKpgk
 | 
				
			||||||
 | 
					ygsCggEANYOCbOAKcofWy8bOD7wXgdMFSvXO3sfMfe7BQBPjIKvPHZQDSZoMqKaz
 | 
				
			||||||
 | 
					Mf9YpMIoGRk+wnomuEX25IEfs6VaWe3JMjtvdcX5g32cvg1zeZ4T312egWxhww0y
 | 
				
			||||||
 | 
					gmgxHaa4nBjTtKes9nZOYOYh9FjgCNVBjTfQileym+hUkg+sBh31sFXEML5ns6SA
 | 
				
			||||||
 | 
					r/1usI4KdtEwO4narXTABTjML8hlEH4wpGrLvBGDNFGHBJHtn09ksOvuW/av1ABH
 | 
				
			||||||
 | 
					5sV4KavVjz6wciQK1zujvdUoZ7TF7dNnR8/9yV35dRcvGRJW7PUwv9qYVWN459EV
 | 
				
			||||||
 | 
					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
									
								
								pubkey.der
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								pubkey.der
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					<02><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>hS<68><53><EFBFBD><EFBFBD><EFBFBD>S <20><>s3ݬ<33>.My\<5C>K<>$<24><>c<EFBFBD>*<2A><><14>K<EFBFBD>2"<05>N<EFBFBD><4E><EFBFBD>!b<><62><15>ߡ 
 | 
				
			||||||
							
								
								
									
										
											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<4D><4C>ݵ<EFBFBD>k<><6B><EFBFBD>i<14>~<7E> <20><><EFBFBD><EFBFBD><EFBFBD>?<3F><>q<EFBFBD>#k<> ~5<><35><EFBFBD><EFBFBD>)<29>Z<>WAs<41>Ǟ<EFBFBD>097<39>A<EFBFBD><41>ִ<>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
 | 
				
			||||||
		Reference in New Issue
	
	Block a user