使用国密函数读取金税盘信息

本文介绍了如何在C++环境下利用国密SKF函数读取航天发票税控软件金税盘中的数字证书信息。文章详细阐述了开发环境、航天开票软件的金税盘值守程序及国密库模块,展示了获取金税盘基本信息和数字证书的C++类设计,以及实际操作流程和解析结果。
摘要由CSDN通过智能技术生成

一、开发环境及工具

本文所示代码环境:Windows10  x64专业版(19042.746)+ VS2015 Enterprise Update3。

本文所使用到的工具:Process Explorer v16.42  +  CFF Explorer 。

二、航天发票税控软件概述

2021年年初,航天发布新一代增值税发票税控开票软件(金税盘版)软件3.0版,自3.0版开始使用了开源组件SOUI来开发界面,SOUI是C++轻量级Windows桌面开源DirectUI库,UI展示使用xml布局、配置,使UI界面与逻辑分离,类似于Duilib的开源UI库,相较于QT庞大的库文件着实轻量许多。

2.0版时代,安装航天开票程序后会启动一个 wtautoreg.exe 的进程,该进程是金税盘的值守程序,以响应金税盘的插入、拔出事件,当金税盘插入或拔出时会在系统托盘区提示相应信息,图1为通过Process Explorer查看的进程信息。

查看该进程相关信息可以看到其中加载了航天金税盘版国密库模块ai109b_gm.dll,如图2所示。

使用CFF Explorer加载查看该模块相关信息,当前系统是64位Win10,可以看到航天安装程序将该模块安装在系统文件夹(C:\Windows\SysWOW64)中,如图3所示。继续查看该模块导出函数,导出函数大约有170个左右,该模块既包含标准的国密SKF函数又夹杂着标准的pkcs11库,是个混合库,如图4所示。本文将简要谈谈利用这个模块中的国密SKF函数来读取金税盘中的数字证书,并解析出金税盘的基本信息。

3.0版取消了2.0版的值守程序wtautoreg.exe,但3.0版(目前最新版是V3.2.00.220104)安装程序仍自带该模块,因此本文示例代码适用于航天税控开票软件2.0/3.0版。

图1   航天开票软件值守进程

图2   航天金税盘版国密库模块

图3   航天金税盘版国密函数库模块

图4   航天金税盘版国密模块导出函数

三、金税盘信息获取程序(C++版)

金税盘中保存了二个数字证书:签名和加密证书。作为示例,本文主要展示如何读取金税盘数字证书的基本信息,如果需要获取其他信息可以从数字证书的二进制数据中进一步解析。下面我们来看看

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴说扒道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值