Я работаю с подписанным апплетом, который добавляет нового провайдера.Если апплет подписан, такой код считается доверенным.
В частном методе:
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, апплет работает отлично, и добавляется новый поставщик, но когда я выполняю апплет в html-файле, апплет не инициализируется.И если я раскомментирую следующие строки, в которые добавлен поставщик, инициализируется апплет в html.
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;
}
Тогда возникает проблема с добавлением поставщика.
Только эта строка приводит к тому, чтоапплет не инициализирован:
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;
}
Но, как апплет не инициализирован, я не получаю никаких исключений. Любое предложение?
Спасибо Эндрю за ваш комментарий.
Я добавил ваше предложение, и теперь я получаю сообщение об ошибке:
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поставщик:
<message>java.lang.ExceptionInInitializerError</message>
Throwable.Cause: java.security.AccessControlException: доступ запрещен (java.lang.RuntimePermission accessClassInPackage.sun.security.util)