티스토리 뷰
사용하기 전에 레이블을 확인하여 하나의 토큰으로 만 작업 할 수 있습니다. 예 :
tokenInfo = pkcs11.getTokenInfo(slot)
if 'DesiredTokenLabel' == tokenInfo.label.decode('ascii').strip():
# Start working with this particular token
session = pkcs11.openSession(s)
findObjects
호출에 대한 템플릿 인수를 사용하여 특정 개체 만 열거 할 수 있습니다 . 예 :
# get objects labelled "PRIV"
objects = session.findObjects([(CKA_LABEL, "PRIV")])
# get all private key objects
objects = session.findObjects([(CKA_CLASS, CKO_PRIVATE_KEY)])
# get all private key objects labelled "PRIV"
objects = session.findObjects([(CKA_CLASS, CKO_PRIVATE_KEY),(CKA_LABEL, "PRIV")])
# get all RSA private key objects labelled "PRIV"
objects = session.findObjects([(CKA_CLASS, CKO_PRIVATE_KEY),(CKA_KEY_TYPE, CKK_RSA),(CKA_LABEL, "PRIV")])
다음은 하드 코딩 된 매개 변수가있는 예제 코드입니다.
from PyKCS11 import *
pkcs11 = PyKCS11.PyKCS11Lib()
pkcs11.load("your module path...")
slots = pkcs11.getSlotList()
for s in slots:
t = pkcs11.getTokenInfo(s)
if 'CKM' == t.label.decode('ascii').strip():
session = pkcs11.openSession(s)
objects = session.findObjects([(CKA_LABEL, "00000103000003A1")])
print ("Found %d objects: %s" % (len(objects), [x.value() for x in objects]))
지금은 Python 2.x에서 PyKCS11을 사용할 수 없으므로 Python 3입니다.
Soma 추가 (무작위) 메모 :
핸들에 의존하지 마십시오. 프로그램 실행에 따라 다를 수 있습니다.
프로그램의 명령 줄 인수는 사용자에게 달려 있습니다. 프로그램에 다음과 같은 인수가 필요한지 스스로 결정해야합니다.
--token-label
면책 조항 : 나는 파이썬이 아니므로 내 생각을 확인하십시오.
행운을 빕니다!
편집 (최근 편집에 대하여)>
예외가 포착되고 무시되기 때문에 오류가 표시되지 않습니다.
try:
attributes = session.getAttributeValue(o, all_attributes)
except PyKCS11.PyKCS11Error as e:
continue
출처
https://stackoverflow.com/questions/39920023
댓글