2017-02-15 30 views
0

我正在嘗試將SigWeb API集成到我的應用程序中。我想在所有現代瀏覽器中使用數字簽名。現在它只能在IE中使用ActiveX對象。問題是我無法使用加密密鑰。 讓我解釋一下:無法使用Topaz SigWeb API加密簽名

舊版本的js代碼如下所示:(使用SigWebTablet.js)

SigPlus1.AutoKeyStart(); 
    SigPlus1.AutoKeyData = "Some Key Data"; 
    SigPlus1.AutoKeyFinish(); 
    SigPlus1.EncryptionMode = 2; 
    SigPlus1.SigCompressionMode = 1; 
    var strSignature = SigPlus1.SigString; 

新版本:

AutoKeyStart(); 
    SetAutoKeyData("Some Key Data"); 
    AutoKeyFinish(); 
    SetEncryptionMode(2); 
    SetSigCompressionMode(1); 
    var strSignature = GetSigString(); 

strSignature值傳遞到服務器並轉換到.jpg文件。在服務器端(JAVA)我使用下面的代碼:

ClassLoader firma = (com.topaz.sigplus.SigPlus.class).getClassLoader(); 
      sigObj = (SigPlus)Beans.instantiate(firma, "com.topaz.sigplus.SigPlus"); 
      sigObj.autoKeyStart(); 
      sigObj.setAutoKeyData("Some Key Data"); // the same data in front-end 
      sigObj.autoKeyFinish(); 
      sigObj.setEncryptionMode (2); 
      sigObj.setSigCompressionMode(1); 
      sigObj.setSigString(strSignature); 

setSigString方法的問題 - 它不設置新的值(與舊代碼SigPlus1.SigString作品),但如果我禁用setAutoKeyData - 它工作正常。 平板電腦型號:T-LBK766SE-BHSB-R

回答

0

我找到了適用於我的解決方案。在簽名捕獲之前,它需要重置加密模式,即要呼叫SetEncryptionMode(0)

UPD(05/03/2017)。來自開發支持的人推薦我使用AutoKeyAddData函數,而不是AutoKeyStartAutoKeyFinish函數。我已經測試過,它適用於我。我認爲這個問題更好的解決方案。 http://www.sigplusweb.com/sigwebtablet_autokeydemo.htm