但是我们国家总是喜欢搞zg特色,正如我们国家搞双证书体系一样,我们国家的双证书体系为的是方便官方取证,这在别的国家是不存在的,在别的国家,你的私钥是任何机构都无权查看的,可是...公正乎?哀哉!正是因为我们的ecc标准没有公布椭圆曲线参数,于是我们就不能使用openssl了,但是openssl实在太棒了,我无法舍弃它,于是就要想办法将openssl改造成支持国家密码局的ecc标准的框架。要做到这个,首先的想法就是让EC_METHO支持engine,由于国家不公布椭圆曲线标准,那么我们只好调用国家的接口来自己实现。怎么让EC_METHOD支持engine呢?很简单,首先将自己的engine注册进openssl,然后修改获取group的代码,如果需要处理的密钥的oid是我们国家的标准,那么就获取我们实现的engine,之后就用我们的engine的实现的方法来实现曲线操作。
实现了曲线操作,接下来的密钥操作就简单了,密钥操作都是在“曲线”上进行的,只要我们加载自己的engine,那么很容易就可以使得我们自己的engine得到使用,这个就不必多说了,详细情况请看关于engine的介绍。这个工作简单的原因在于ecdh或者ecdsa等本来就是支持engine的。为了实现国密的ecc算法,或者说将国密ecc整合进openssl,我们需要很多的工作要做,我们之所以值得做这些工作原因有二:第一,国家的标准我们必须实现;第二,openssl实在太棒了!
本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1271924