Как импортировать java.security.* в мое приложение gwt
Я хочу разработать плагин, используя gwt. Он должен использовать java.security.* Для генерации ключей на стороне клиента. Я сделал все требования, но это показывает следующую ошибку.
Загрузка модулей
coreservlets.GwtApp1
Loading inherited module 'coreservlets.GwtApp1' Loading inherited module 'java.security.KeyPair' [ERROR] Unable to find 'java/security/KeyPair.gwt.xml' on your classpath; >could be a typo, or maybe you forgot to include a classpath entry for source? [ERROR] Line 15: Unexpected exception while processing element 'inherits'
я унаследовал все связанные классы, такие как "java.security.KeyPair" в моем файле gwtapp1.gwt.xml
также я включил jar в сам classpath. но все еще ошибка не пошла. что я должен сделать.plz предлагает вот мой код Java
package coreservlets.client;
import java.io.UnsupportedEncodingException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
public class Keygen {
private PrivateKey privKey;
private PublicKey pubKey;
private static Keygen keygen = null;
private Keygen() {
}
public static Keygen getInstance() {
if (keygen == null) {
keygen = new Keygen();
}
return keygen;
}
public void KeyGenerator(String ALGORITHAM) {
KeyPairGenerator keyGen = null;
SecureRandom random = null;
try {
keyGen = KeyPairGenerator.getInstance(ALGORITHAM);
} catch (NoSuchAlgorithmException ex) {
ex.printStackTrace();
}
try {
random = SecureRandom.getInstance("SHA1PRNG", "SUN");
//random = SecureRandom.getInstance("SHA1PRNG");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchProviderException ex) {
ex.printStackTrace();
}
//keyGen.initialize(1024, random);
keyGen.initialize(1024);
KeyPair key = keyGen.generateKeyPair();
privKey = key.getPrivate();
pubKey = key.getPublic();
}
public String getPubKeyasString() {
//return Base64.encodeBase64String(pubKey.getEncoded());
try {
return new String(pubKey.getEncoded(),"ISO-8859-1");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public String getPriKeyasString() {
//return Base64.encodeBase64String(privKey.getEncoded());
try {
return new String(privKey.getEncoded(),"ISO-8859-1");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
2 ответа
Для генерации ключей вы можете использовать библиотеку gwt-crypto, но будьте готовы к определенным проблемам с производительностью и неподдерживаемым функциям.
[Править] Некоторое время назад мне удалось обернуть чистое решение js rsa с помощью jsni. Я взял js, это была библиотека jsbn.js
В .gwt.xml
файл <inherits ...>
относится к другому .gwt.xml
файл. Я подозреваю, что вы использовали его как Java import ...
вместо?
Что делать, если вы хотите использовать java.security.KeyPair
клиентская часть в GWT должна убедиться, что источник доступен для компилятора GWT. Это делается с помощью <source path="..." />
запись в .gwt.xml
файл.
Возможно, вы захотите посетить справочную страницу по эмуляции GWT JRE, где, к сожалению, вы увидите, что ни один из javax.*
пакеты поддерживаются, так что удачи в вашем проекте... Возможно, вам следует сохранить код, используя KeyPair
только на стороне сервера?
Надеюсь, это поможет.