Generate the public key, create the message signature and verify the signature
from m5stack import *
from m5stack_ui import *
from uiflow import *
import unit
screen = M5Screen()
screen.clean_screen()
screen.set_screen_bg_color(0xFFFFFF)
ID_0 = unit.get(unit.ID, unit.PORTA)
public = None
signature = None
message = None
recv_msg = None
message=[0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F]
if ID_0.get_info():
print('Read Device Info Sucess')
else:
print('Read Device Info Unsucess')
if ID_0.readConfigZone():
print('Read Config Sucess')
else:
print('Read Config Unsucess')
if (ID_0.configLockStatus) or (ID_0.dataOTPLockStatus) or (ID_0.slot0LockStatus):
print('Read Config Status Sucess')
if ID_0.generatePublicKey(0x0000):
public = ID_0.publicKey64Bytes
if ID_0.createSignature(message, 0x0000):
signature = ID_0.signature
recv_msg=[0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F]
if ID_0.verifySignature(recv_msg, signature, public):
print('Verify Sucess')
else:
print('Verify UnSucess') print((str('status:') + str((ID_0.configLockStatus)))) print(ID_0.configZone) print((str('new key pair:') + str((ID_0.createNewKeyPair(0x0000))))) print((str('create signature:') + str((ID_0.createSignature(, 0x0000))))) print((str('status:') + str((ID_0.dataOTPLockStatus)))) print((str('public key:') + str((ID_0.generatePublicKey(0x0000))))) print(ID_0.get_info()) print(ID_0.KeyConfig) print(ID_0.lock_config()) print(ID_0.lockDataAndOTP()) print(ID_0.lockDataSlot0()) print((str('key:') + str((ID_0.publicKey64Bytes)))) print(ID_0.random_min_max(0, 0)) print(ID_0.readConfigZone()) print(ID_0.revisionNumber) print(ID_0.serialNumber) print((str('sha256 message:') + str((ID_0.sha256(, 0))))) print(ID_0.signature) print(ID_0.SlotConfig) print((str('status:') + str((ID_0.slot0LockStatus)))) print(ID_0.updateRandom32Bytes()) print((str('create message:') + str((ID_0.verifySignature(, , ))))) print(ID_0.wakeup()) print(ID_0.writeConfigZone())