一、我的贡献
Ruby
实现ASN.1
编解码- 使用
QT5
编写软件界面 - 编译,打包,测试
二、列出设计中遇到的问题及解决方法
2.1 树形结构 QTreeWidget
如何存储数据
查阅资料,使用 setData(col, row, data)
函数存储数据,使用 data(col, row)
读取数据
2.2 渲染树形结构,需要将子节点插入到父节点下,如何找到父节点?
asn1_dump_parse
函数解析结果有 d:
一项,表示此节点在树中的深度。使用一个哈希表 HashMap<int, QTreeWigetItem*>
,产生一个新节点就将其 深度 和 指向其的指针 插入哈希表中,同时读取其 深度减一 所对应的值,这就是指向其父节点的指针
三、列出调试过程中遇到的主要问题
3.1 数据类型中存在空格( 如 BIT STRING
)时,解析出的结果不对
查看代码,发现正则表达式(数据类型部分)未匹配空格,添加 "//s"
3.2 软件 linux
下打包出现困难
-
使用
linuxdeployqt
打包程序( github 搜索 ) -
在启动脚本中添加
export LD_LIBRARY_PATH=/app/lib:$LD_LIBRARY_PATH export QT_PLUGIN_PATH=/app/plugins:$QT_PLUGIN_PATH export QML2_IMPORT_PATH=/app/qml:$QML2_IMPORT_PATH
把软件的依赖库添加到系统路径中,成功启动
四、设计体会及收获
- 学会了如何在
linux
环境下打包QT
,以前只会windows
打包 - 学习了
ASN.1
标准,对证书结构有了进一步了解