2016-07-20 5 views
1

私は、cryptokiのライブラリから情報を取得するのpythonでスクリプトを書きました。PKCS11のPython FindObjects

  1. C_getInfo
  2. C_GetSlotList
  3. C_SlotInfo
  4. C_OpenSession
  5. C_GetTokenInfo
  6. C_Logout
  7. C_CloseSession
  8. :そこから私は、次のような(のみ)低レベルAPI呼び出しを行うことができます
  9. C_Initialize

ここで私は、APIコールがスロットリスト内のオブジェクトを見つけるために必要とされているかを把握することができないよう、実装上のいくつかの例

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))) 

for x in range(len(slotList)): 
    print("\tC_SlotInfo(): " + hex(a.C_GetSlotInfo(slotList[x], slotInfo))) 
    print("\t\tSlot N." + str(x) + ": ID=" + str(slotList[x]) + ", name='" + slotInfo.GetSlotDescription() + "'") 
    print("\tC_OpenSession(): " + hex(a.C_OpenSession(slotList[x], CKF_SERIAL_SESSION | CKF_RW_SESSION, session))) 
    print("\t\tSession:" + str(session)) 
    #print("\tMechList:" + hex(a.C_GetMechanismList(0, slotList[x]))) 
    print("\tC_GetTokenInfo(): " + hex(a.C_GetTokenInfo(slotList[x], tokenInfo))) 
    print("\t\tTokenInfo: Label=" + tokenInfo.GetLabel() + ", ManufacturerID=" + tokenInfo.GetManufacturerID()) 
    print("\t\tTokenInfo: flags=" + hex(tokenInfo.flags) + ", Model=" + tokenInfo.GetModel()) 

    print("\tC_Login(): " + hex(a.C_Login(session, CKU_USER, pin))) 
    print("\t\tSessionInfo: state=" + hex(sessionInfo.state) + ", flags=" + hex(sessionInfo.flags)) 

QUESTION

です..私は、私はよく分からないprint("Finding objects: " + hex(a.C_FindObjects(slotList[x], CKA_CLASS, CKO_CERTIFICATE)))

のようなものは何引数渡したりする必要がある場合正しい方法で構造化されています。 イムあなたは確認する必要があり

答えて

0
SearchResult = PyKCS11.LowLevel.ckobjlist(10) 
SearchTemplate = PyKCS11.LowLevel.ckattrlist(0) 
print "C_FindObjectsInit: " + hex(a.C_FindObjectsInit(session,SearchTemplate)) 
print "C_FindObjects: " + hex(a.C_FindObjects(session, SearchResult)) 
print "C_FindObjectsFinal: " + hex(a.C_FindObjectsFinal(session)) 

まず..私は署名し、データを検証するために、その秘密鍵と証明書を使用して...特定のOMNIKEYスマートカードトークンを抽出しようとしている最終的には、この文書LowLevel API pkcs11

を使用して結果変数を作成し、それを使用してオブジェクトリストを検索します。私はリストにオブジェクトとトークンがほんの一握りしかないことを知っていたので、10インチを過ぎました。あなたはそれが、プライベート変更可能、鍵のタイプ、暗号化などされている場合、テンプレートの仕様により、セッション内で検索を初期化するために(a.C_FindObjectsInit(session,SearchTemplate))呼び出しを行う必要があり、このような、特定の属性のために、各オブジェクトを検索し、テンプレート変数を構築することができます。 LowLevel APIを操作することは混乱する可能性がありますが、事実上ドキュメントはありません。お役に立てれば。

関連する問題