在Android中使用XAdeS-BES进行签名

时间:2016-08-19 09:26:07

标签: java android xades4j type-signature

我正在尝试使用Android中的XADES-BES签名文件。我找到了一个关于它的图书馆。构建和创建APK工作正常。选择文件并单击“签名”按钮后,会出现运行时错误。经过调试后,我发现上下文存在错误。我在程序崩溃的地方添加了评论。代码的相关部分如下:

 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 lib转换此代码。

1 个答案:

答案 0 :(得分:0)

我不知道您正在使用的库,但是关于xades4j,您可以关注project wiki上的文档。从你的代码来看,xades4j似乎应该支持一个简单的场景。