Python 调用CAPICOM 读取 USB KEY数字证书
import win32com.client
store = win32com.client.Dispatch('CAPICOM.Store')
# 打开证书存储区
# 2 -> CAPICOM_CURRENT_USER_STORE
# 0 -> CAPICOM_STORE_OPEN_READ_ONLY
store.Open(2, "My", 0)
# 查找有效证书
# 12 -> CAPICOM_CERTIFICATE_FIND_KEY_USAGE
# 0x00000080 -> CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE
# 9 -> CAPICOM_CERTIFICATE_FIND_TIME_VALID
# 6,6 -> CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY,CERT_KEY_SPEC_PROP_ID
stores = store.Certificates.Find(12,0x00000080).Find(9).Find(6,6)
stores = store.Certificates.Find(0,szThumbprint) # szThumbprint -> 按缩略图查询
# 0 -> CAPICOM_CERTIFICATE_FIND_SHA1_HASH
# 找到证书计数
stores.Count
# 获取证书信息
for data in stores:
data.GetInfo(0) # 颁发给
data.GetInfo(1) # 颁发者
data.GetInfo(2) # 主题(E) Email
data.GetInfo(3) # ''
data.GetInfo(4) # 主要名称= RFC822 Name=
data.GetInfo(5) # ''
data.GetInfo(6) # 主题(CN)
data.GetInfo(7) # 颁发者
data.Thumbprint # 缩略图
或者
stores.Item(idx).GetInfo(idx2) # idx 1-stores.Count
# idx2 0-7
# 证书选择
selCert = soters.Select()
selCert.GetInfo(0-7)
selCert.Thumbprint
# 数据签名
SignedData = win32com.client.Dispatch('CAPICOM.SignedData')
Signer = win32com.client.Dispatch('CAPICOM.Signer')
TimeAttribute = win32com.client.Dispatch('CAPICOM.Attribute')
SignedData.Content = 'Test' # 签名内容
Signer.Certificate = ret.Item(1) # 选择的证书
TimeAttribute.Name = 0 # 0 -> CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME
import datetime
TimeAttribute.Value = datetime.datetime('2010-04-22')
Signer.AuthenticatedAttributes.Add(TimeAttribute)
szSignature = SignedData.Sign(Signer, True, 0) # 0 -> CAPICOM_ENCODE_BASE64
# 签名校验
SignedData.Content='Test';
SignedData.Verify(szSignature, true, 1); # 1 -> CAPICOM_VERIFY_SIGNATURE_AND_CERTIFIC
相关文档:
http://bbs.chinaunix.net/thread-1586782-1-1.html
我刚刚用python写了一段操作excel的脚本,目的是把一个excel文件按照某一列中的字段拆分成多个文件,例如按照城市或者省份等,但是发现处理一个1700行的文件拆分成40多个文件时要运行30分钟左右,性能太慢,请高手帮忙看看怎么才能优化性能,谢谢。
新手写的脚本,请不 ......
urllib模块提供的上层接口,使我们可以像读取本地文件一样读取www和ftp上的数据。每当使用这个模块的时候,老是会想起公司产品的客户端,同事用C++下载Web上的图片,那种“痛苦”的表情。我以前翻译过libcurl教程,这是在C/C++环境下比较方便实用的网络操作库,相比起libcurl,Python的url ......
#将一些类型的文件压缩为7z.py
#for folder all file do 7z
import os
import sys
import distutils.file_util
def ImportOkFile():
if(os.path.isfile("D:\\Records\\将一些类型的文件压缩为7z_record.txt")==False):
f=open("D:\\Reco ......
conn = httplib.HTTPConnection(EPG_IP + ":" + HTTP_PORT)
url = FAV_URL_PARTH +"userid=" + USER_ID + FAV_DIR_MODIFY
param = '''<ps100request id="Favorite.Category.modify">
<categoryid>'''+categoryid+'''</categoryid>
<categoryname>'''+categoryname+'''</ ......