/py-edhoc

Python implementation of EDHOC

Primary LanguagePythonBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

py-edhoc:snake: -- Ephemeral Diffie-Hellman Over COSE

Python package Python 3.6+

This project provides a Python implementation of the EDHOC key exchange protocol for constrained devices. Currently the protocol is still in draft status at the IETF.

The repository provides an implementation of:

Installation

$ pip install edhoc

Running the test suite

The py-edhoc test suite is based on the official test vectors provided by the LAKE working group.

To run the test suite you'll need pytest:

$ pip install pytest

When you move to the root of the py-edhoc project you can run the test by simply typing:

$ pytest

Supported Cipher Suites

Cipher Suites COSE algorithms Support
SUITE 0 (AES-CCM-16-64-128, SHA-256, X25519, EdDSA, Ed25519, AES-CCM-16-64-128, SHA-256) ✔️
SUITE 1 (AES-CCM-16-128-128, SHA-256, X25519, EdDSA, Ed25519, AES-CCM-16-64-128, SHA-256) ✔️
SUITE 2 (AES-CCM-16-64-128, SHA-256, P-256, ES256, P-256, AES-CCM-16-64-128, SHA-256)
SUITE 3 (AES-CCM-16-128-128, SHA-256, P-256, ES256, P-256, AES-CCM-16-64-128, SHA-256)

Authentication Methods

Method Support
SIGN-SIGN ✔️
STATIC-SIGN ✔️
SIGN-STATIC ✔️
STATIC-STATIC ✔️

Cryptography

The project depends on the python cose package. cose uses pyca/cryptography for all cryptographic operations, except the deterministic ECDSA algorithm. For deterministic ECDSA cose uses python-ecdsa.