2013-07-23 66 views
0

我從eToken SDK獲得了一個樣本,它生成RSA密鑰,創建數字簽名並驗證它。 樣品中的算法如下:智能卡eToken PRO CardOS/M4數字簽名APDU

  • 生成RSA密鑰(GENERATE_KEY_PAIR);
  • 創建簽名安全環境(PUT_DATA_SECI);
  • 恢復安全環境(MSE RESTORE);
  • 簽名數據(PSO_CDS);
  • 創建驗證安全環境(PUT_DATA_SECI);
  • 恢復安全環境(MSE RESTORE);
  • 驗證簽名(PDO_VDS)。

我已經導入外部密鑰容器證書令牌,我需要擺脫算法中的RSA密鑰生成項目。 如何查找我的私鑰的對象ID以將其傳遞給PUT_DATA_SECI APDU命令?

+0

雖然我知道CardOS,但我不熟悉阿拉丁中間件。有一個機會,可以從PKCS15信息文件中讀取密鑰ID。如果不是,那麼至少應在那裏說明所需安全環境的ID。因此,在後一種情況下,您不知道密鑰ID,您可以簡單地恢復現有的安全環境。 – guidot

+0

是的,我發現,安全環境設置爲選擇私鑰文件。 PKCS#11私鑰索引文件(0x3XXX)還包含可以綁定到公鑰的容器UID。 – user2609706

回答

0

存儲在令牌中的私有RSA是RSA_PURE(0x0c)。它不能用於PSO_CDS操作。他們必須正確填充散列值(rfc-2313:塊類型1 +散列OID)並使用PSO_DEC來獲取簽名。結果將是與PSO_CDS相同的二進制數據。