2016-08-19 86 views
0

我想在Android中使用XADES-BES簽名文件。我找到了一個關於這個的圖書館。建立和創建APK工作正常。選擇文件並單擊Sign按鈕後,它會產生運行時錯誤。調試後,我發現有一個關於上下文的錯誤。我在程序崩潰的地方添加了一條評論。代碼的相關部分如下:在Android中使用XAdeS-BES簽名

String sourceFilePath = filePathView.getText().toString(); 
       if(sourceFilePath.isEmpty()){ 
        exc = new Exception("No File Picked"); 
        return null; 
       } 
       mAPDUSmartCard.login(pwdText); 
       Pair<CardTerminal,ECertificate> selection = certListAdapter.getSelection(); 
       ECertificate signCert = selection.second; 
       BaseSigner signer = mAPDUSmartCard.getSigner(signCert.asX509Certificate(), Algorithms.SIGNATURE_RSA_SHA256); 
       Context context = new Context(); 
       XMLSignature signature = new XMLSignature(context); // THIS IS WHERE THE APP CRASHES. 
       signature.addDocument(sourceFilePath,"application/xml", false);   
       signature.getSignedInfo().setSignatureMethod(SignatureMethod.RSA_SHA256); 
       signature.addKeyInfo(signCert); 
       signature.sign(signer); 
       signature.write(new FileOutputStream(sourceFilePath + ".xsig")); 

我沒有用Xades4j lib中,因爲我不知道如何將此代碼轉換成合適的形式cades4j庫。

回答

0

我不知道你正在使用的庫,但關於xades4j,你可以按照project wiki上的文檔。從你的代碼看,這似乎是一個應該由xades4j支持的簡單場景。

+0

好的,我會仔細閱讀文檔,並嘗試將我的代碼轉換爲xades4j。謝謝。 –