You’ll be glad to know that in the latest patch r2.1.1-p02 we have added support for Microchip’s ATECCX08A cryptographic secure elements. At the moment ATECC508A is supported, but ATECC608A will soon be available.
Since the ATECC508A is ideal for IoT node security (among many things), we are sure that you will want to find out what the rest of its features are.
Handle complex cryptographic functions easily
This support is significant for IoT developers everywhere because it allows handling complex cryptographic functions directly on the hardware side, using simple Python code, with reduced power consumption, firmware dimension and computation time.
An easy way to provision secure elements to the field is also provided thanks to the integration with the Zerynth Toolchain in the new “provisioning” group command. More info here.
Microchip ATECCx08A crypto elements family provides a series of HW accelerated cryptographic functions, most notably ECDH (508A/608A only) and ECDSA.
The ATECC508A crypto element is the first crypto device to integrate ECDH (Elliptic Curve Diffie–Hellman) key agreement, which makes it easy to add confidentiality (encryption/decryption) to digital systems including Internet of Things (IoT) nodes used in home automation, industrial networking, accessory and consumable authentication, medical, mobile and other applications.
- Operating Voltage Range: from 2.0 V to 5.5 V
- Operating Temperature Range: from -40 °C to 85 °C
- Interface Type: Single Wire; I2C
- Operating Current Typical: 1 mA
Zerynth ATECCx08A Module features
This Zerynth module exports classes for Microchip ATECCx08A chip family and some utility functions.
Secondly, an interface to allow the use of chip-related functionalities from other Zerynth hybrid C/Python libraries is made available.
Take a look at the related documentation to see all the other features and the definitions of the class and methods of the library.
Start from ready-made examples
We’ve prepared two examples that you can “clone” in just a few clicks and let you getting started with the cryptochip in no time, using simple Python code. More info about how to clone a Zerynth example here.
The first example is called “ping” and is the simplest example to be tried for starting with the Zerynth ATECCx08A library and the ATECC508A crypto element.
The code reads the Revision bytes of the chip, checking if they are the expected ones.
Take a look at the code:
from microchip.ateccx08a import ateccx08a
PORT = I2C0
CLOCK = 100000
crypto = ateccx08a.ATECC508A(PORT, clk=CLOCK)
""" Return hex string representation of bytes/bytearray object. """
res = "0x"
for byte in data:
res += "%02X" % byte
""" Send an info command and check the result, which is a chip constant. """
expected = bytes([0x00, 0x00, 0x50, 0x00])
response = crypto.info_cmd('REVISION')
if response == expected:
print("Success. Device replied correctly.")
print("Response from device not matching:")
except Exception as err:
You can also start with this one called “HWCrypto Controller publish period” that allows you to connect your device to AWS IoT platform and start publishing at a default period, waiting for period updates requested as changes to things’ shadow.
The connection is performed by means of a hardware private key stored and generated in an ATECCX08A crypto element using simple Zerynth Toolchain commands and a seamless integration of hardware keys in Zerynth Python code.