KryptoMessage3.js 25 Aug 2016
For use on Espruino Pico device
Requires: RNG.js, AEScmac.js, permutation.js (see posts above for files)
FlashEEPROM.js from Espruino web site.
Uses serial port 1 (can be changed in configuration at top) in a hardware loopback.
Connect pins B6 and B7 together.
Reads analog input on Pin B1.
There are a number of flag variables at the top of the program:
Flag to suppress server text to console:
var showserver=0;
//var showserver=1;
Where to get the cryptographic keys:
//var KeysFromRom=0; //Generate keys as before this point
var KeysFromRom=1;//read keys from ROM see previous post for the key generator and squirt programs to insert the keys into the EEROM
Serial port parameters:
//var useserialflag=0;
var useserialflag=1;
var baudrate=115200;
var Port=Serial1;
Flags used in the Msg transport function:
//var EncryptionFlag=false;
var EncryptionFlag=true;
//var PermutationFlag=false;
var PermutationFlag=true;
ReplayFlag controls the recording of msgs for replay:
var ReplayFlag=true;
//var ReplayFlag=false;
This version redirects the console in order to create a menu on the USB port to that the program can be operated from a terminal program or from the left pane of the WebIDE.
BE SURE TO TYPE 0 TO MAKE THE RUNNING PROGRAM RESTORE THE CONSOLE TO THE USB PORT! This will avoid having to reset the PICO by cycling the power.
The Menu:
Connect starts the client to server connection.
It asks for the User ID and Password Id= Sam, PW= 1234
(unless you change these in the key generator program)
Logoff tells the server that connect will be needed for access.
Creplay is used after a session to replay client messages for testing
Creset resets the replay buffers
Sshow prints the recorded server messages
Cshow prints the recorded client messages
LEDon, LEDoff operate the LED on the PICO.
Read Adc reads a 0 to 4096 (12 bits) value from pin B1.
And finally Exit restores the console to the USB port.
/*
Todo add0x32 message if wrong Id and password
Todo rework PICO commands into a User client and server functions
Todo add code for lexlevel 1 to generate keys on the client and send them to the server
Todo split into server and client versions on two different PICOs
Todo connect server and client PICOs using serial port
*/
/*
Done see if serial1 and serial2 on PICO can be used to connect
the server and client portions of this program
Solution use serial1 in loopback with flag
Done write a program that generates keys and writes the to ROM
Done read the keys from the ROM
Done add 0x30 and 0x31 code for server bad msg, client not authentic
Done add blend function to msg send and recieve functions
Done add code to do menu on USB allows terminal program to operate
Select using digit and return key
1 Connect 6 Cshow
2 Logoff 7 LEDon
3 Creplay 8 LEDoff
4 Creset 9 Read ADC
5 Sshow 0 Exit
<- USB
>1
do connect
Client builds and sends inital message
Permutated Encrypted Message=
60,d4,88,53,63,4e,c1,43,d,94,61,c,e6,37,14,e8,
a3,68,bd,c0,cd,c0,2a,e8,a4,3a,7e,aa,dd,82,91,4f,
1d,66,74,41,b7,90,45,97,7,51,13,8e,ab,7f,2c,c,
45,2,e3,4f,e3,8e,c3,aa,ec,a6,e1,f9,ab,c7,4f,93,
3b,a6,a7,61,14,3b,25,90,9b,32,4f,d4,54,70,f,d8,
Enter User ID
process server
decrypt
Server replies to connect message
Permutated Encrypted Message=
8b,cf,f9,2b,85,10,79,ca,9d,3d,c9,80,19,c4,ed,5b,
2,bf,c0,5,74,fb,9e,2f,88,5f,c5,11,ba,8d,31,51,
9,e9,78,90,24,e0,35,8c,e6,a7,eb,de,69,b8,57,9a,
19,f1,f1,9f,ee,f9,6e,48,e1,d9,3a,8c,1a,7e,bc,68,
33,7b,3a,e2,39,b4,a3,61,ca,98,fd,aa,ec,d8,6f,a5,
server transmits
process client 80
decrypt
Client checks the server message
Client check of server msg OK
Client checks if the server is authentic
Server is Authentic
Enter User ID
Sam
Enter Password
1234
Login using Sam and 1234
Client login message
Permutated Encrypted Message=
1f,f0,25,77,2,b5,d0,13,cf,63,8e,b9,ef,fe,95,e8,
73,ae,f9,88,a3,d4,0,56,32,d5,f9,c0,4c,6,5b,d9,
7c,e4,c,ef,64,ee,2c,a3,cf,dc,c3,86,d3,f,2f,3f,
57,c4,98,31,b6,ad,47,81,3a,21,ae,3f,90,22,57,69,
7c,d0,da,0,54,88,34,7c,f0,5f,ef,a0,c5,a7,e,ab,
process server
decrypt
Permutated Encrypted Message=
63,28,3e,c4,c5,3,b5,f0,7d,66,81,c8,74,99,5e,4f,
6,a3,46,29,49,a5,e,bf,79,b7,64,4f,98,4c,c4,34,
75,46,7c,7c,5e,a0,1f,af,32,9d,e6,13,2b,66,b9,18,
54,32,83,19,63,ff,3e,f1,de,ab,77,ab,f,f2,65,fb,
d8,f0,49,e9,80,16,ee,e7,b,bd,fd,63,4d,48,49,e7,
server transmits
process client 80
decrypt
Client checks the server message
Client check of server msg OK
Client checks if the server is authentic
Server is Authentic
Client sees msg 0x42
Select using digit and return key
1 Connect 6 Cshow
2 Logoff 7 LEDon
3 Creplay 8 LEDoff
4 Creset 9 Read ADC
5 Sshow 0 Exit
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
KryptoMessage3.js 25 Aug 2016
For use on Espruino Pico device
Requires: RNG.js, AEScmac.js, permutation.js (see posts above for files)
FlashEEPROM.js from Espruino web site.
Uses serial port 1 (can be changed in configuration at top) in a hardware loopback.
Connect pins B6 and B7 together.
Reads analog input on Pin B1.
There are a number of flag variables at the top of the program:
Flag to suppress server text to console:
var showserver=0;
//var showserver=1;
Where to get the cryptographic keys:
//var KeysFromRom=0; //Generate keys as before this point
var KeysFromRom=1;//read keys from ROM see previous post for the key generator and squirt programs to insert the keys into the EEROM
Serial port parameters:
//var useserialflag=0;
var useserialflag=1;
var baudrate=115200;
var Port=Serial1;
Flags used in the Msg transport function:
//var EncryptionFlag=false;
var EncryptionFlag=true;
//var PermutationFlag=false;
var PermutationFlag=true;
ReplayFlag controls the recording of msgs for replay:
var ReplayFlag=true;
//var ReplayFlag=false;
This version redirects the console in order to create a menu on the USB port to that the program can be operated from a terminal program or from the left pane of the WebIDE.
BE SURE TO TYPE 0 TO MAKE THE RUNNING PROGRAM RESTORE THE CONSOLE TO THE USB PORT! This will avoid having to reset the PICO by cycling the power.
The Menu:
Connect starts the client to server connection.
It asks for the User ID and Password Id= Sam, PW= 1234
(unless you change these in the key generator program)
Logoff tells the server that connect will be needed for access.
Creplay is used after a session to replay client messages for testing
Creset resets the replay buffers
Sshow prints the recorded server messages
Cshow prints the recorded client messages
LEDon, LEDoff operate the LED on the PICO.
Read Adc reads a 0 to 4096 (12 bits) value from pin B1.
And finally Exit restores the console to the USB port.
/*
Todo add0x32 message if wrong Id and password
Todo rework PICO commands into a User client and server functions
Todo add code for lexlevel 1 to generate keys on the client and send them to the server
Todo split into server and client versions on two different PICOs
Todo connect server and client PICOs using serial port
*/
/*
Done see if serial1 and serial2 on PICO can be used to connect
the server and client portions of this program
Solution use serial1 in loopback with flag
Done write a program that generates keys and writes the to ROM
Done read the keys from the ROM
Done add 0x30 and 0x31 code for server bad msg, client not authentic
Done add blend function to msg send and recieve functions
Done add code to do menu on USB allows terminal program to operate
1 Attachment