你好,谢谢回复!是我自己眼拙,没注意到,一个小问题引起的"0x08 超时断开", 已经解决了。
现在我有一个新的问题,在这个项目里,我们目前一直讨论都是围绕着pairing这个话题,作为 Server 端的ESP32S3(模拟Nuki Lock)自身要产生 一对 key(public key, privat key). 且各自都是32bytes长度的 key。 即:
Code: Select all
public_key[32] = {....}; privat_key[32] = {.....}
这两个 Key 在后面的Pairing 过程中的各种加密算法要用到的。这里 加密 有用到如下 函数:
crypto_scalarmult_curve25519(s,sk,pk)
crypto_core_hsalsa20(k,_0,s,sigma)
HMAC-SHA256
crypto_secretbox_xsalsa20poly1305 (c,m,mlen,n,k)
我以为我用简单的 random 函数 , 比如 esp_fill_random(), 生成 public/privat Key, 就能解决此问题,事实并非如此,会导致后面的pairing 过程,加密pairing演算出错,对不上。
我看了一个Nuki 公司提供的一个 Nuki Lock 模拟程序,但是用 JS 写的,关于 public key 和 privat key 的生成处理 如下
Code: Select all
var slKeys = new sodium.Key.ECDH();
keys.slPk = slKeys.pk().get();
keys.slSk = slKeys.sk().get();
他们似乎用到了一个 ECDH() 函数,我查了一下,是一种protocol ,基于此关系生成的 public key 和 privat key.
但是我似乎没有查到在ESP32方面有关于此的应用,我的问题就是,怎样在ESP32这边生成一对 相互关联的 key(public key, privat key)?
期待你的回答。