Openssl的DSA实现源码在crypto/dsa目录下。主要源码如下:
1) dsa_asn1.c
DSA密钥参数(p、q和g)、DSA公钥(pub_key、p、q和g)以及DSA私钥(priv_key、pub_key、p、q和g)的DER编解码实现。
2)dsa_depr.c
生成DSA密钥参数。
3)dsa_err.c
DSA错误处理。
4)dsa_gen.c
生成DSA密钥参数。
5)dsa_key.c
根据DSA中的密钥参数产生公钥和私钥。
6)dsa_lib.c
实现了DSA通用的一些函数。
7)dsa_ossl.c
实现了一个DSA_METHOD,该DSA_METHOD为openssl默认的DSA方法,主要实现了如下三个回调函数:dsa_do_sign(签名)、dsa_sign_setup(根据密钥参数生成公私钥)和dsa_do_verify(验签)。
8)dsa_sign.c
实现了DSA签名和根据密钥参数生成公私钥。
9)dsa_vrf.c
实现了DSA验签。