2016-07-07 103 views
0

我正试图通过此脚本与远程计算机建立连接。该脚本正在远程计算机上运行,​​试图打开一个会话,我相信我做错了。我试图通过智能卡(00000010300000A2)访问库opt/PTK/lib/libcryptoki.so中的插槽0,其中包含一个密钥存储区。但可用插槽返回零。与HSM通讯python

正确的脚本

#!/usr/bin/python 
from PyKCS11.LowLevel import * 

a = CPKCS11Lib() 
info = CK_INFO() 
slotInfo = CK_SLOT_INFO() 
lib='/opt/PTK/lib/libcryptoki.so' 
slotList = ckintlist() 

print("Load of " + lib + ": " + str(a.Load(lib, 1))) 
a.C_Initialize() 
print("C_GetInfo:", hex(a.C_GetInfo(info))) 
print("Library manufacturerID:", info.GetManufacturerID()) 

del info 

print("C_GetSlotList(NULL): " + hex(a.C_GetSlotList(0, slotList))) 
print("\tAvailable Slots: " + str(len(slotList))) 

输出

ctstat ProtectToolkit C Status Utility 4.3.0 Copyright (c) Safenet, Inc. 2009-2013 ShowAllSlots:4 slots, 4 with tokens Slot ID 0 Description : ProtectServer K5E:00045 Manufacturer : SafeNet Inc. Hardware Version : 65.00 Firmware Version : 3.20 Token for Slot ID 0 Label : CKM Manufacturer : SafeNet Inc. Model : K5E:PL25 Serial Number : 502152:00045 Hardware Version : 65.00 Firmware Version : 3.20

+0

“pkcs11.getInfo()”是否有意思? – viraptor

+0

它返回以下回溯:'回溯(最近一次通话最后): 文件“Cryptoki.py”,第18行,在 info = pkcs11.getInfo() 文件“/usr/local/lib/python3.5 /site-packages/PyKCS11/__init__.py“,第475行,在getInfo中 raise PyKCS11Error(rv) PyKCS11.PyKCS11Error:CKR_SLOT_ID_INVALID(0x00000003)'@viraptor – DJ2

+0

此脚本在远程机器上直接运行时是否检测到任何插槽?当直接在远程机器上运行时(例如,您的HSM是否正确安装),像'ctstat' /'hsmstate'这样的命令是否工作?他们是否远程工作?注意:此评论假设SafeNet/Gemalto ProtectProcessing产品。 – vlp

回答

0

这完全适用于我。就连接而言。

import subprocess 
proc = subprocess.Popen(("ssh", "[email protected]", "echo", "1"), 
stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
stdout, stderr = proc.communicate()