0

我正在使用“SignerTestBase”处理 SignerTTest.java :

    public class SignerTestBase extends SignatureServicesTestBase
{
    /**/
    static protected KeyingDataProvider keyingProviderMy;
    static protected KeyingDataProvider keyingProviderNist;

    static
{
    try
    {
        keyingProviderMy = createFileSystemKeyingDataProvider("pkcs12", "my/LG.pfx", "mykeypass", true);
        keyingProviderNist = createFileSystemKeyingDataProvider("pkcs12", "csrc.nist/test4.p12", "password", false);
    } catch (KeyStoreException e)
    {
        throw new NullPointerException("SignerTestBase init failed: " + e.getMessage());
    }
}

public static Document getTestDocument() throws Exception
{
    //return getDocument("document.xml");

    //==that I changed=====================================================================
    return getDocument("fv.xml");


}

我有类 SignerTTest.java

@Test
public void testSignTPtCC() throws Exception
{
    System.out.println("signTPtCitizenCard");

    if (!onWindowsPlatform())
        fail("Test written for the Windows platform");

    Document doc = getTestDocument();
    Element elemToSign = doc.getDocumentElement();
    try
    {
        PKCS11KeyStoreKeyingDataProvider ptccKeyingDataProv = new PKCS11KeyStoreKeyingDataProvider(
                //"C:\\Windows\\System32\\pteidpkcs11.dll", "PT_CC",
                "C:\\Windows\\system32\\pteidpkcs11.dll", "PT_CC",


                new FirstCertificateSelector(), null, null, false);

        SignerT signer = (SignerT)new XadesTSigningProfile(ptccKeyingDataProv).withAlgorithmsProvider(PtCcAlgorithmsProvider.class).newSigner();
        new xades4j.production.Enveloped(signer).sign(elemToSign);

        outputDocument(doc, "document.signed.t.bes.ptcc.xml");
    } catch (ProviderException ex)
    {
        fail(" !!!!!!!PT CC PKCS#11 provider not configured !!!!!!!!!!!!");
    }
}

在我的 main.class 中:

 System.out.println("============================================================================");          
        System.out.println("XADESTEST : T SIGNATURE");
        System.out.println("============================================================================");
        System.out.println();

        SignerTTest signerTTest = new SignerTTest();
        System.out.println("signerTTest : " + signerTTest.toString()); 

        /**
         *    ==== NOT OK =====
         */
        signerTTest.testSignTPtCC();

在我的控制台中,我得到:

> ============================================================================
XADESTEST : T SIGNATURE
============================================================================

signerTTest : xadestest.SignerTTest@1304043
signTPtCitizenCard
Exception in thread "main" java.lang.AssertionError:  !!!!!!!PT CC PKCS#11 provider not configured !!!!!!!!!!!!
    at org.junit.Assert.fail(Assert.java:58)
    at xadestest.SignerTTest.testSignTPtCC(SignerTTest.java:119)
    at xadestest.XadesTest.main(XadesTest.java:117)
Java Result: 1
BUILD SUCCESSFUL (total time: 3 seconds)

请您在我搜索期间就这个问题给我建议吗?

谢谢,

将要。

4

1 回答 1

1

该测试是为使用葡萄牙公民卡 PKCS#11 提供程序而编写的。正如异常消息所述,您没有安装提供程序。如果您需要使用 PKCS#11 提供程序测试该库,请更改配置以改用其本机库。

PS:lib docs和examples对此非常清楚..请仔细看看。另外,请在此处投票。

于 2012-09-03T16:08:47.823 回答