课程设计个人报告
小组贡献排序及依据(每个人的工作量)
排序 | 学号 | 工作量 | 工作内容 |
---|---|---|---|
1 | 20175210 | 35% | ruby解析asn1、最终软件的GUI部分、软件测试 |
2 | 20175211 | 35% | 整体规划分工、python解析asn1、openssl API学习使用、实现最终软件的解析部分、软件测试 |
3 | 20175219 | 30% | c解析asn1、openssl API学习使用、实现最终软件的解析部分、软件测试 |
个人报告(20175211)
列出自己的贡献
- 整体规划、分工
- 第二周学习asn1格式互转时,实现python解析asn1
- 查找资料、研究openssl中关于asn1解析的API
- 实现最终软件的解析部分
- 软件测试
列出设计中遇到的问题及解决方法
问题:最大的问题是openssl文档中里没有找到直接解析asn1的API。在官方文档中只有上层一点的解析API,比如X509证书的解析,但是这样就无法解析非证书文件,比如我们自己生成的der文件。
解决方法:我想到openssl自带了asn1parse的功能,所以肯定是用了相关的接口的,所以用ltrace命令看看
ltrace openssl asn1parse -inform der -in test.der
成功找到调用的函数是ASN1_parse_dump
,接下来就可以去网上查找有关这个函数的资料。可惜官方文档上还是没有关于这个接口的信息,所以之后只能靠自己分析。
列出调试过程中遇到的主要问题,并说明解决方法
ASN1_parse_dump
函数内部调用了很多其他辅助函数,而且数据的交互主要依靠BIO类型实现,我们最后决定还是直接调用这个函数而不是重构API来和GUI交互。
在最后软件实现过程中,我主要负责解析部分的代码,比较简单,所以没有什么问题。
设计体会及收获
ASN1格式和JSON差不多是一类东西,但是要复杂的多。通过这次课程设计,我学习了ASN1的格式,openssl和python对ASN1数据的编解码操作以及openssl的c语言API。我的编程能力、分析设计能力和查找资料的能力都得到了提升。
参考资料
https://www.openssl.org/docs/man1.0.2/man3/
https://gearyyoung.gitbooks.io/openssl-program/ASN1库/ASN1库.html
https://docs.huihoo.com/doxygen/openssl/1.0.1c/asn1__par_8c_source.html