From d7e68d1d015f796bce0a6bb7b2c60236cc3cafc4 Mon Sep 17 00:00:00 2001 From: Benjamin Valentin Date: Tue, 20 Oct 2020 18:22:33 +0200 Subject: [PATCH] pkg/micro-ecc: bump version micro-ecc now has upstream RIOT support, we can drop the patch. --- pkg/micro-ecc/Makefile | 2 +- pkg/micro-ecc/Makefile.dep | 2 + pkg/micro-ecc/Makefile.include | 4 + pkg/micro-ecc/README.md | 37 ----- ...-Include-RIOT-Hardware-RNG-interface.patch | 145 ------------------ ...2-Silence-warning-of-unused-variable.patch | 53 ------- 6 files changed, 7 insertions(+), 236 deletions(-) delete mode 100644 pkg/micro-ecc/README.md delete mode 100644 pkg/micro-ecc/patches/0001-Include-RIOT-Hardware-RNG-interface.patch delete mode 100644 pkg/micro-ecc/patches/0002-Silence-warning-of-unused-variable.patch diff --git a/pkg/micro-ecc/Makefile b/pkg/micro-ecc/Makefile index 4640effdfb..51b00f82c3 100644 --- a/pkg/micro-ecc/Makefile +++ b/pkg/micro-ecc/Makefile @@ -1,6 +1,6 @@ PKG_NAME=micro-ecc PKG_URL=https://github.com/kmackay/micro-ecc.git -PKG_VERSION=b6c0cdbe7d20af48b0c2a909a66ff00b093d1542 +PKG_VERSION=4b1709c17abbe938d6d8811f4c7c5d082a144799 PKG_LICENSE=BSD-2-Clause include $(RIOTBASE)/pkg/pkg.mk diff --git a/pkg/micro-ecc/Makefile.dep b/pkg/micro-ecc/Makefile.dep index 2f9de711f6..8228009742 100644 --- a/pkg/micro-ecc/Makefile.dep +++ b/pkg/micro-ecc/Makefile.dep @@ -1,2 +1,4 @@ # micro-ecc is not 16 bit compatible FEATURES_BLACKLIST += arch_16bit + +USEMODULE += random diff --git a/pkg/micro-ecc/Makefile.include b/pkg/micro-ecc/Makefile.include index a8206c73cf..e63b996ddd 100644 --- a/pkg/micro-ecc/Makefile.include +++ b/pkg/micro-ecc/Makefile.include @@ -1,5 +1,9 @@ INCLUDES += -I$(PKGDIRBASE)/micro-ecc +CFLAGS += -Wno-unused-parameter +CFLAGS += -Wno-unused-function +CFLAGS += -Wno-unused-variable + ifneq (,$(filter cortex-m0%,$(CPU_CORE))) # LLVM/clang can't handle the inline assembler instructions on M0 in this # package diff --git a/pkg/micro-ecc/README.md b/pkg/micro-ecc/README.md deleted file mode 100644 index 29fa96e148..0000000000 --- a/pkg/micro-ecc/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# Micro-ECC for RIOT - -This port of Micro-ECC to RIOT is based on the Micro-ECC -[upstream](https://github.com/kmackay/micro-ecc) and adds `hwrng_read` -(provided by RIOT) as the default RNG function if it is available on the target -platform. This port also fixes a minor issue with unused variables in the -upstream code. - -# Usage - -## Build - -Add -```Makefile -USEPKG += micro-ecc -``` -to your Makefile. - -## Choosing the right API - -Before using the Micro-ECC library, you need to check the `Makefile.features` -of your target board to see if `periph_hwrng` is provided. - -If it is provided, you may safely use `uECC_make_key` to generate ECDSA key -pairs and call `uECC_sign`/`uECC_verify` to sign/verify the ECDSA signatures. - -If not, you cannot use `uECC_make_key` or `uECC_sign` APIs anymore. The ECDSA -keys have to be generated on a platform with HWRNG support (e.g., `native`) and -transferred to your target device. You need to use `uECC_sign_deterministic` to -perform ECDSA deterministic signing (standardized by RFC 6979). You can still -use `uECC_verify` to verify the signatures from both signing APIs. - -**WARNING** Calling `uECC_make_key` and `uECC_sign` APIs on platforms without -HWRNG support will lead to compile failure. - -Examples of using these uECC APIs can be found in the `test` folder of the -Micro-ECC upstream. \ No newline at end of file diff --git a/pkg/micro-ecc/patches/0001-Include-RIOT-Hardware-RNG-interface.patch b/pkg/micro-ecc/patches/0001-Include-RIOT-Hardware-RNG-interface.patch deleted file mode 100644 index aa6676bfc2..0000000000 --- a/pkg/micro-ecc/patches/0001-Include-RIOT-Hardware-RNG-interface.patch +++ /dev/null @@ -1,145 +0,0 @@ -From ba4cf2343f4a0d821dc4e30aabfb05f17f57543f Mon Sep 17 00:00:00 2001 -From: Wentao Shang -Date: Mon, 12 Dec 2016 16:19:34 -0800 -Subject: [PATCH 1/2] Include RIOT Hardware RNG interface - ---- - platform-specific.inc | 4 ++++ - uECC.c | 22 ++++++++++++++++++++++ - uECC.h | 8 ++++++++ - 3 files changed, 34 insertions(+) - -diff --git a/platform-specific.inc b/platform-specific.inc -index 1bb595a..cb0ac42 100644 ---- a/platform-specific.inc -+++ b/platform-specific.inc -@@ -5,6 +5,8 @@ - - #include "types.h" - -+#ifdef MODULE_PERIPH_HWRNG -+ - #if (defined(_WIN32) || defined(_WIN64)) - /* Windows */ - -@@ -64,4 +66,6 @@ static int default_RNG(uint8_t *dest, unsigned size) { - - #endif /* platform */ - -+#endif /* MODULE_PERIPH_HWRNG */ -+ - #endif /* _UECC_PLATFORM_SPECIFIC_H_ */ -diff --git a/uECC.c b/uECC.c -index 7717533..c559a48 100644 ---- a/uECC.c -+++ b/uECC.c -@@ -2,6 +2,9 @@ - - #include "uECC.h" - #include "uECC_vli.h" -+#ifdef MODULE_PERIPH_HWRNG -+#include "periph/hwrng.h" -+#endif - - #ifndef uECC_RNG_MAX_TRIES - #define uECC_RNG_MAX_TRIES 64 -@@ -181,9 +184,20 @@ static cmpresult_t uECC_vli_cmp_unsafe(const uECC_word_t *left, - #include "asm_avr.inc" - #endif - -+#ifdef MODULE_PERIPH_HWRNG -+int riot_hwrng(uint8_t *dest, unsigned size) { -+ hwrng_read(dest, size); -+ return 1; -+} -+#endif -+ -+#ifdef MODULE_PERIPH_HWRNG - #if default_RNG_defined - static uECC_RNG_Function g_rng_function = &default_RNG; - #else -+static uECC_RNG_Function g_rng_function = &riot_hwrng; -+#endif -+#else - static uECC_RNG_Function g_rng_function = 0; - #endif - -@@ -1001,6 +1015,8 @@ uECC_VLI_API int uECC_generate_random_int(uECC_word_t *random, - return 0; - } - -+#ifdef MODULE_PERIPH_HWRNG -+ - int uECC_make_key(uint8_t *public_key, - uint8_t *private_key, - uECC_Curve curve) { -@@ -1031,6 +1047,8 @@ int uECC_make_key(uint8_t *public_key, - return 0; - } - -+#endif /* MODULE_PERIPH_HWRNG */ -+ - int uECC_shared_secret(const uint8_t *public_key, - const uint8_t *private_key, - uint8_t *secret, -@@ -1303,6 +1321,8 @@ static int uECC_sign_with_k(const uint8_t *private_key, - return 1; - } - -+#ifdef MODULE_PERIPH_HWRNG -+ - int uECC_sign(const uint8_t *private_key, - const uint8_t *message_hash, - unsigned hash_size, -@@ -1323,6 +1343,8 @@ int uECC_sign(const uint8_t *private_key, - return 0; - } - -+#endif /* MODULE_PERIPH_HWRNG */ -+ - /* Compute an HMAC using K as a key (as in RFC 6979). Note that K is always - the same size as the hash result size. */ - static void HMAC_init(const uECC_HashContext *hash_context, const uint8_t *K) { -diff --git a/uECC.h b/uECC.h -index 1193ce8..dc40721 100644 ---- a/uECC.h -+++ b/uECC.h -@@ -142,6 +142,8 @@ Returns the size of a public key for the curve in bytes. - */ - int uECC_curve_public_key_size(uECC_Curve curve); - -+#ifdef MODULE_PERIPH_HWRNG -+ - /* uECC_make_key() function. - Create a public/private key pair. - -@@ -160,6 +162,8 @@ Returns 1 if the key pair was generated successfully, 0 if an error occurred. - */ - int uECC_make_key(uint8_t *public_key, uint8_t *private_key, uECC_Curve curve); - -+#endif /* MODULE_PERIPH_HWRNG */ -+ - /* uECC_shared_secret() function. - Compute a shared secret given your secret key and someone else's public key. - Note: It is recommended that you hash the result of uECC_shared_secret() before using it for -@@ -233,6 +237,8 @@ Returns 1 if the key was computed successfully, 0 if an error occurred. - */ - int uECC_compute_public_key(const uint8_t *private_key, uint8_t *public_key, uECC_Curve curve); - -+#ifdef MODULE_PERIPH_HWRNG -+ - /* uECC_sign() function. - Generate an ECDSA signature for a given hash value. - -@@ -256,6 +262,8 @@ int uECC_sign(const uint8_t *private_key, - uint8_t *signature, - uECC_Curve curve); - -+#endif /* MODULE_PERIPH_HWRNG */ -+ - /* uECC_HashContext structure. - This is used to pass in an arbitrary hash function to uECC_sign_deterministic(). - The structure will be used for multiple hash computations; each time a new hash --- -2.25.1 - diff --git a/pkg/micro-ecc/patches/0002-Silence-warning-of-unused-variable.patch b/pkg/micro-ecc/patches/0002-Silence-warning-of-unused-variable.patch deleted file mode 100644 index d5b972ce94..0000000000 --- a/pkg/micro-ecc/patches/0002-Silence-warning-of-unused-variable.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 4b0160178eda4fb57ec8ab26a93426d3d3ec8601 Mon Sep 17 00:00:00 2001 -From: Wentao Shang -Date: Wed, 1 Jun 2016 15:00:43 -0700 -Subject: [PATCH 2/2] Silence warning of unused variable - ---- - asm_avr.inc | 2 +- - curve-specific.inc | 2 +- - uECC.c | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/asm_avr.inc b/asm_avr.inc -index c988040..cd194da 100644 ---- a/asm_avr.inc -+++ b/asm_avr.inc -@@ -986,7 +986,7 @@ uECC_VLI_API void uECC_vli_mult(uECC_word_t *result, - "st z+, %[r0] \n\t" /* Store last result byte. */ - "eor r1, r1 \n\t" /* fix r1 to be 0 again */ - -- : "+z" (result), "+x" (left), "+y" (right), -+ : "+z" (r), "+x" (left), "+y" (right), - [r0] "+r" (r0), [r1] "+r" (r1), [r2] "+r" (r2), - [zero] "+r" (zero), [num] "+r" (num_words), - [k] "=&r" (k), [i] "=&r" (i) -diff --git a/curve-specific.inc b/curve-specific.inc -index 0453b21..e17e75c 100644 ---- a/curve-specific.inc -+++ b/curve-specific.inc -@@ -563,7 +563,7 @@ static void mod_sqrt_secp224r1(uECC_word_t *a, uECC_Curve curve) { - } - } - uECC_vli_modInv(f1, e0, curve_secp224r1.p, num_words_secp224r1); /* f1 <-- 1 / e0 */ -- uECC_vli_modMult_fast(a, d0, f1, &curve_secp224r1); /* a <-- d0 / e0 */ -+ uECC_vli_modMult_fast(a, d0, f1, curve); /* a <-- d0 / e0 */ - } - #endif /* uECC_SUPPORT_COMPRESSED_POINT */ - -diff --git a/uECC.c b/uECC.c -index c559a48..ca331a9 100644 ---- a/uECC.c -+++ b/uECC.c -@@ -379,7 +379,7 @@ uECC_VLI_API uECC_word_t uECC_vli_sub(uECC_word_t *result, - - #if !asm_mult || (uECC_SQUARE_FUNC && !asm_square) || \ - (uECC_SUPPORTS_secp256k1 && (uECC_OPTIMIZATION_LEVEL > 0) && \ -- ((uECC_WORD_SIZE == 1) || (uECC_WORD_SIZE == 8))) -+ (uECC_WORD_SIZE == 8)) - static void muladd(uECC_word_t a, - uECC_word_t b, - uECC_word_t *r0, --- -2.25.1 -