我正在寻找这些实现,以便可以验证签名的二进制文件,
RSA,
DSA或
ECDSA
#1 楼
您可以从此处下载OpenSSL libcrypto的源代码,并使用-带有适当的署名-启动ROM中所需的部分。支持的算法,(根据Wikipedea):
密码
AES,河豚,山茶,SEED,CAST-128,DES,IDEA,RC2,RC4,RC5,三重DES,GOST 28147-89
加密哈希函数
MD5,MD4,MD2,SHA-1,SHA-2,RIPEMD-160,MDC-2,GOST R 34.11-94
公共密钥加密
RSA,DSA,Diffie–Hellman密钥交换,椭圆曲线,GOST R 34.10-2001
它已获得Apache / BSD许可,因此您可以在其他产品中使用它,但请注意某些国家的密码/加密技术出口限制。
评论
人们通常会这样做吗?我希望会有专门的RSA或EC库。
–user220201
15年7月30日在12:46
这取决于项目的性质和预算等,如果您正在执行“开源”,则几乎总是在预算高的商业项目中使用VxWorks或QNX之类的东西,那么它们中就有可用的库。
–史蒂夫·巴恩斯(Steve Barnes)
15年7月30日在17:22
#2 楼
Easy-ecc为我工作,在简单性方面,它比其他一切都快两个数量级。https://github.com/esxgx/easy-ecc
我的第二个选择是libtomcrypt(+ libtommath),尽管上次尝试使用它时,我无法在32位DSP上将它迅速切成小于100 kB的二进制文件,因此对于引导程序来说可能不可行。 />
#3 楼
我将临时建议mbed TLS,以前称为PolarSSL。暂时尝试一下,因为我从未在嵌入式项目中实际使用过它。它是由ARM维护的,旨在很好地适合于低端平台。源代码相当干净,可移植C。您可以轻松选择感兴趣的源文件,而忽略其余文件。支持RSA和ECDSA,但不支持传统的DSA。
对于开源项目,该库是根据GNU GPL(不是LGPL)许可的,这是限制性的,但是有一些例外情况允许与非GPL开源代码。还可以付费使用允许进行闭源分发的许可证。
评论
另请参见是否存在可以为嵌入式应用程序执行RSA-2048加密的轻量级库? (我不会重复,因为要求不完全相同,并且每个问题都接受不适合另一个问题的答案)