libksi的python包装器,用于访问guardtime ksi服务的库
ksi-python的Python项目详细描述
这是ksi c sdk上的一个薄包装。实验性的,不支持的代码。
概要
同步歌唱和验证的例子。
importksiimporthashlib# Instantiate service parameters from the environmentKSI=ksi.KSI(**ksi.ksi_env())# Sign a text stringsig=KSI.sign_hash(hashlib.sha256(b"Tere!"))# Print some signature propertiesprint(sig.get_signing_time(),sig.get_signer_id())# Now verify this text string, first obtaining a data hasherh=sig.get_hasher()h.update(b"Tere!")print(KSI.verify_hash(sig,h))# Obtain a binary blob which can be stored for long termserialized_signature=sig.get_binary()# Some time have passed, fetch the signature and verify againsig2=KSI.new_signature_object(serialized_signature)print(KSI.verify_hash(sig2,h))
请注意,当请求多个签名时,异步签名可以显著加快速度。 用gevent异步唱歌的例子。
importksiimporthashlibfromgevent.poolimportPool# Instantiate service parameters from the environmentKSI=ksi.KSI(**ksi.ksi_env())# Multiple strings to be signedstring_list=["This","is","a","list","of","strings"]# Define a signer function.defsign_hash(h):sig=KSI.sign_hash(h)# Verification and/or storing could be done hereprint(KSI.verify_hash(sig,h))# Create a gevent pool. Note that for optimal efficiency# pool size should not be smaller than# ``KSI.get_async_config()['max_pending_count']``pool=Pool(100)# Sign all strings asynchronouslyforstringinstring_list:pool.spawn(sign_hash,hashlib.sha256(string.encode()))pool.join()
如果ksi网关允许,也可以进行客户端聚合(登录块)。这意味着 多个散列可以由一个对网关服务器的请求单独签名。此外,如果 允许块签名,异步签名服务默认情况下将根据 如果签名请求需求太大而无法逐个有效地签名,则打开。 同步签名哈希块的示例(也支持异步块签名)。
importksiimporthashlib# Instantiate service parameters from the environmentKSI=ksi.KSI(**ksi.ksi_env())# Multiple strings to be signedstring_list=["This","is","a","list","of","strings"]# Hashes of stringshash_list=[hashlib.sha256(string.encode())forstringinstring_list]# Sign hashes in a blocksigs=KSI.sign_hash_list(hash_list)# Verify hashesforiinrange(len(sigs)):print(KSI.verify_hash(sigs[i],hash_list[i]))
安装
要求:Python2.7+或Python3.1+。不支持Jython和IronPython。
安装新的libksi aka ksi c sdk;请参见https://github.com/guardtime/libksi/
安装python-devel包
运行:
> pip install ksi-python
或
> easy_install ksi-python
测试
指定ksi网关访问参数并运行
> python setup.py test
要测试ksi python sdk是否与gevent异步签名,请确保已安装gevent。
文档
http://guardtime.github.io/ksi-python/
类型:
> pydoc ksi
在安装后阅读文档。生成HTML或PDF文档: 确保安装了sphinx(pip install sphinx)之类的依赖项,扩展名 生成(python setup.py build)并运行:
> cd docs > make html or > make latexpdf
许可证
阿帕奇2.0。有关支持的选项,请与GuardTime联系。