Skip to content

Commit 723684b

Browse files
authored
Berry: add crypto modules ED25519 and Chacha20-Poly1305 (#23338)
* add crypto modules for Berry * remove Berry examples from PR
1 parent 115cefc commit 723684b

File tree

4 files changed

+4662
-0
lines changed

4 files changed

+4662
-0
lines changed

lib/libesp32/berry_tasmota/src/be_crypto_lib.c

+28
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ extern int m_aes_ctr_tag(bvm *vm);
3232
extern int m_aes_cbc_encrypt1(bvm *vm);
3333
extern int m_aes_cbc_decrypt1(bvm *vm);
3434

35+
extern int m_chacha20_run(bvm *vm);
36+
extern int m_poly1305_run(bvm *vm);
37+
3538
extern int m_ec_p256_pubkey(bvm *vm);
3639
extern int m_ec_p256_sharedkey(bvm *vm);
3740
extern int m_ec_p256_ecdsa_sign_sha256(bvm *vm);
@@ -46,6 +49,10 @@ extern int m_ec_p256_mul(bvm *vm);
4649
extern int m_ec_c25519_pubkey(bvm *vm);
4750
extern int m_ec_c25519_sharedkey(bvm *vm);
4851

52+
extern int m_ed25519_sign(bvm *vm);
53+
extern int m_ed25519_verify(bvm *vm);
54+
extern int m_ed25519_secret_key(bvm *vm);
55+
4956
extern int m_hash_sha256_init(bvm *vm);
5057
extern int m_hash_sha256_update(bvm *vm);
5158
extern int m_hash_sha256_out(bvm *vm);
@@ -68,8 +75,10 @@ extern const bclass be_class_md5;
6875
#include "be_fixed_be_class_aes_gcm.h"
6976
#include "be_fixed_be_class_aes_ctr.h"
7077
#include "be_fixed_be_class_aes_cbc.h"
78+
#include "be_fixed_be_class_chacha_poly.h"
7179
#include "be_fixed_be_class_ec_p256.h"
7280
#include "be_fixed_be_class_ec_c25519.h"
81+
#include "be_fixed_be_class_ed25519.h"
7382
#include "be_fixed_be_class_sha256.h"
7483
#include "be_fixed_be_class_hmac_sha256.h"
7584
#include "be_fixed_be_class_pbkdf2_hmac_sha256.h"
@@ -95,6 +104,10 @@ const be_const_member_t be_crypto_members[] = {
95104
{ "/AES_GCM", (intptr_t) &be_class_aes_gcm },
96105
#endif // USE_BERRY_CRYPTO_AES_GCM
97106

107+
#ifdef USE_BERRY_CRYPTO_CHACHA_POLY
108+
{ "/CHACHA20_POLY1305", (intptr_t) &be_class_chacha_poly },
109+
#endif // USE_BERRY_CRYPTO_CHACHA_POLY
110+
98111
#ifdef USE_BERRY_CRYPTO_EC_C25519
99112
{ "/EC_C25519", (intptr_t) &be_class_ec_c25519 },
100113
#endif // USE_BERRY_CRYPTO_EC_C25519
@@ -103,6 +116,10 @@ const be_const_member_t be_crypto_members[] = {
103116
{ "/EC_P256", (intptr_t) &be_class_ec_p256 },
104117
#endif // USE_BERRY_CRYPTO_EC_P256
105118

119+
#ifdef USE_BERRY_CRYPTO_ED25519
120+
{ "/ED25519", (intptr_t) &be_class_ed25519 },
121+
#endif // USE_BERRY_CRYPTO_ED25519
122+
106123
#ifdef USE_BERRY_CRYPTO_HKDF_SHA256
107124
{ "/HKDF_SHA256", (intptr_t) &be_class_hkdf_sha256 },
108125
#endif // USE_BERRY_CRYPTO_HKDF_SHA256
@@ -175,6 +192,11 @@ class be_class_aes_cbc (scope: global, name: AES_CBC) {
175192
encrypt1, static_func(m_aes_cbc_encrypt1)
176193
}
177194
195+
class be_class_chacha_poly (scope: global, name: CHACHA20_POLY1305) {
196+
chacha_run, static_func(m_chacha20_run)
197+
poly_run, static_func(m_poly1305_run)
198+
}
199+
178200
class be_class_ec_p256 (scope: global, name: EC_P256) {
179201
public_key, static_func(m_ec_p256_pubkey)
180202
shared_key, static_func(m_ec_p256_sharedkey)
@@ -193,6 +215,12 @@ class be_class_ec_c25519 (scope: global, name: EC_C25519) {
193215
shared_key, func(m_ec_c25519_sharedkey)
194216
}
195217
218+
class be_class_ed25519 (scope: global, name: ED25519) {
219+
sign, func(m_ed25519_sign)
220+
verify, func(m_ed25519_verify)
221+
secret_key, func(m_ed25519_secret_key)
222+
}
223+
196224
class be_class_sha256 (scope: global, name: SHA256) {
197225
.p, var
198226

0 commit comments

Comments
 (0)