Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. C/C++
  3. micro-ecc

micro-ecc

BSD-2-ClausePHPv1.1

A small, fast ECDH and ECDSA implementation in C for 8-bit, 32-bit, and 64-bit embedded processors.

GitHubGitHub
1.4k stars499 forks0 contributors

What is micro-ecc?

micro-ecc is a compact, high-performance cryptographic library implementing Elliptic Curve Diffie-Hellman (ECDH) and Elliptic Curve Digital Signature Algorithm (ECDSA). It solves the need for secure key exchange and digital signatures on resource-constrained devices like microcontrollers and embedded systems, where traditional crypto libraries are too large or slow.

Target Audience

Embedded systems developers, IoT engineers, and firmware programmers working on AVR, ARM, or other low-power processors requiring cryptographic functionality.

Value Proposition

Developers choose micro-ecc for its minimal code size, side-channel attack resistance, and support for multiple processor architectures—offering a reliable, portable alternative to heavier crypto libraries in constrained environments.

Overview

ECDH and ECDSA for 8-bit, 32-bit, and 64-bit processors.

Use Cases

Best For

  • Securing communication on 8-bit microcontrollers like AVR
  • Implementing ECDH key exchange in IoT devices
  • Adding ECDSA signatures to embedded firmware
  • Cryptographic operations on ARM Cortex-M series processors
  • Projects requiring side-channel resistant elliptic curve cryptography
  • Resource-constrained environments where OpenSSL is too large

Not Ideal For

  • Servers or applications requiring full TLS/SSL stacks or additional cryptographic algorithms like AES or SHA
  • Projects needing modern elliptic curves such as Curve25519 for EdDSA or X25519 for key exchange
  • Dynamic systems where flexible memory management is preferred over static allocation

Pros & Cons

Pros

Side-Channel Resistance

Implements protections against timing and power analysis attacks, as highlighted in the README, ensuring robust security for embedded devices vulnerable to such threats.

Multi-Architecture Optimization

Supports 8-bit AVR, 32-bit ARM/Thumb, and 64-bit processors with optional GCC inline assembly, offering performance tweaks for diverse hardware platforms.

Minimal Resource Footprint

Features small code size and no dynamic memory allocation, making it ideal for memory-constrained environments like microcontrollers, as stated in the key features.

Standard Curve Compliance

Includes support for standard SECG curves (secp160r1 to secp256k1), ensuring interoperability with other cryptographic systems per the README.

Cons

Limited Cryptographic Scope

Only provides ECDH and ECDSA implementations, missing other common functions like encryption, hashing, or protocol support, which may require additional libraries.

Compilation Complexity

Requires specific GCC flags for optimal performance on platforms like ARM/Thumb and AVR, such as -fomit-frame-pointer, which can complicate setup for less experienced developers.

Outdated Curve Selection

Lacks support for modern curves like Curve25519, limiting its relevance in applications that prefer contemporary cryptographic standards over the included SECG curves.

Frequently Asked Questions

Quick Stats

Stars1,397
Forks499
Contributors0
Open Issues47
Last commit1 year ago
CreatedSince 2013

Tags

#c-library#embedded-systems#ecdh#arm#cryptography#ecdsa#avr#elliptic-curve

Built With

G
GCC
C
C++

Included in

C/C++70.6k
Auto-fetched 2 days ago

Related Projects

OpenSSLOpenSSL

General purpose TLS and crypto library

Stars30,087
Forks11,244
Last commit16 hours ago
TinkTink

Tink is a multi-language, cross-platform, open source library that provides cryptographic APIs that are secure, easy to use correctly, and hard(er) to misuse.

Stars13,541
Forks1,183
Last commit2 years ago
mbedTLSmbedTLS

An open source, portable, easy to use, readable and flexible TLS library, and reference implementation of the PSA Cryptography API. Releases are on a varying cadence, typically around 3 - 6 months between releases.

Stars6,619
Forks2,867
Last commit1 day ago
Tiny AES in CTiny AES in C

Small portable AES128/192/256 in C

Stars4,936
Forks1,392
Last commit1 year ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub