在签名的applet中添加提供程序

时间:2011-12-02 21:03:10

标签: java applet provider signed-applet

我正在使用已签名的applet添加新的提供程序。 如果小程序已签名,则此类代码被视为可信任。

在私人方法中:

private Provider addProvider() throws Exception {

    logger.log(Level.INFO, "addProvider ... "); 

    Provider p = new sun.security.pkcs11.SunPKCS11(
                     new ByteArrayInputStream(config.getBytes())
                     );
    //Security.addProvider(p);

    return p;
}

config是一个包含PKCS11名称和库的字符串。

当我使用netbeans进行调试时,applet完美运行并添加了新的提供程序,但是当我在html文件中执行applet时,applet未初始化。如果我取消注释添加提供程序的下一行,则初始化html中的applet。

private Provider addProvider() throws Exception {

    logger.log(Level.INFO, "addProvider ... "); 

    //Provider p = new sun.security.pkcs11.SunPKCS11(
                 //     new ByteArrayInputStream(config.getBytes())
                 //   );
    // Security.addProvider(p);

    return p;
}

然后添加提供程序时出现问题。

只有这一行会导致applet未初始化:

Provider p = new sun.security.pkcs11.SunPKCS11(
                 new ByteArrayInputStream(config.getBytes())
                 );

我已插入try {}

private Provider addProvider() throws Exception {

    logger.log(Level.INFO, "addProvider ... "); 

    try{
        Provider p = new sun.security.pkcs11.SunPKCS11(
                         new ByteArrayInputStream(config.getBytes())
                     );
        Security.addProvider(p);

    } catch (Exception ex) {
        logger.log(Level.SEVERE, "Excepcion provider: {0}", ex);
    }    
    return p;
}

但是就像applet没有被初始化一样,我没有得到任何异常 有什么建议吗?

感谢Andrew的评论。

我已添加您的建议,现在我收到了错误消息:

            try{

                provider = new sun.security.pkcs11.SunPKCS11(
                                new ByteArrayInputStream(config.getBytes())
                                );
                Security.addProvider(provider);

            } catch (Throwable t) {                    
                logger.log(Level.SEVERE, "Excepcion provider:", t);
                logger.log(Level.SEVERE, "Throwable.Cause: ", t.getCause());                          

            } 

日志显示:

Excepcion provider:

<message>java.lang.ExceptionInInitializerError</message>

Throwable.Cause:java.security.AccessControlException:access denied(java.lang.RuntimePermission accessClassInPackage.sun.security.util)

0 个答案:

没有答案