课程设计个人报告

小组贡献排序及依据(每个人的工作量)

排序学号工作量工作内容
12017521035%ruby解析asn1、最终软件的GUI部分、软件测试
22017521135%整体规划分工、python解析asn1、openssl API学习使用、实现最终软件的解析部分、软件测试
32017521930%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

相关推荐