• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..10-Feb-2022-

scripts/H10-Feb-2022-1,108868

test/H10-Feb-2022-498405

.gitignoreH A D10-Feb-202268 88

README.mdH A D10-Feb-20222.4 KiB4229

asm_arm.incH A D10-Feb-202228.4 KiB821714

asm_arm_mult_square.incH A D10-Feb-202297.1 KiB2,3122,295

asm_arm_mult_square_umaal.incH A D10-Feb-202250.5 KiB1,2031,186

asm_avr.incH A D10-Feb-202231.5 KiB1,090942

asm_avr_mult_square.incH A D10-Feb-2022908.4 KiB26,31226,295

curve-specific.incH A D10-Feb-202249.8 KiB1,2491,081

emk_project.pyH A D10-Feb-20224.3 KiB12899

emk_rules.pyH A D10-Feb-202254 42

platform-specific.incH A D10-Feb-20221.6 KiB6853

types.hH A D10-Feb-20222.9 KiB10987

uECC.cH A D10-Feb-202254.1 KiB1,6351,324

uECC.hH A D10-Feb-202213.1 KiB363105

uECC_vli.hH A D10-Feb-20226.8 KiB17396

README.md

1micro-ecc
2==========
3
4A small and fast ECDH and ECDSA implementation for 8-bit, 32-bit, and 64-bit processors.
5
6The static version of micro-ecc (ie, where the curve was selected at compile-time) can be found in the "static" branch.
7
8Features
9--------
10
11 * Resistant to known side-channel attacks.
12 * Written in C, with optional GCC inline assembly for AVR, ARM and Thumb platforms.
13 * Supports 8, 32, and 64-bit architectures.
14 * Small code size.
15 * No dynamic memory allocation.
16 * Support for 5 standard curves: secp160r1, secp192r1, secp224r1, secp256r1, and secp256k1.
17 * BSD 2-clause license.
18
19Usage Notes
20-----------
21### Point Representation ###
22Compressed points are represented in the standard format as defined in http://www.secg.org/collateral/sec1_final.pdf; uncompressed points are represented in standard format, but without the `0x04` prefix. All functions except `uECC_compress()` only accept uncompressed points; use `uECC_compress()` and `uECC_decompress()` to convert between compressed and uncompressed point representations.
23
24Private keys are represented in the standard format.
25
26### Using the Code ###
27
28I recommend just copying (or symlink) the uECC files into your project. Then just `#include "uECC.h"` to use the micro-ecc functions.
29
30For use with Arduino, you can just create a symlink to the `uECC` directory in your Arduino `libraries` directory. You can then use uECC just like any other Arduino library (uECC should show up in the **Sketch**=>**Import Library** submenu).
31
32See uECC.h for documentation for each function.
33
34### Compilation Notes ###
35
36 * Should compile with any C/C++ compiler that supports stdint.h (this includes Visual Studio 2013).
37 * If you want to change the defaults for any of the uECC compile-time options (such as `uECC_OPTIMIZATION_LEVEL`), you must change them in your Makefile or similar so that uECC.c is compiled with the desired values (ie, compile uECC.c with `-DuECC_OPTIMIZATION_LEVEL=3` or whatever).
38 * When compiling for a Thumb-1 platform, you must use the `-fomit-frame-pointer` GCC option (this is enabled by default when compiling with `-O1` or higher).
39 * When compiling for an ARM/Thumb-2 platform with `uECC_OPTIMIZATION_LEVEL` >= 3, you must use the `-fomit-frame-pointer` GCC option (this is enabled by default when compiling with `-O1` or higher).
40 * When compiling for AVR, you must have optimizations enabled (compile with `-O1` or higher).
41 * When building for Windows, you will need to link in the `advapi32.lib` system library.
42