use of org.jcryptool.crypto.flexiprovider.descriptors.meta.interfaces.IMetaLength in project core by jcryptool.
the class FlexiProviderRootElement method initKeyGenerators.
@SuppressWarnings("unchecked")
private static void initKeyGenerators(RegistryType type, Element keyGeneratorParent) {
List<Element> keyGeneratorChildren = new ArrayList<Element>(keyGeneratorParent.getChildren());
Iterator<Element> it = keyGeneratorChildren.iterator();
while (it.hasNext()) {
Element current = it.next();
String className = current.getAttributeValue(AlgorithmsXMLConstants._class);
IMetaKeyGenerator meta = new MetaKeyGenerator(className);
// oid
IMetaOID oid = null;
if (current.getAttributeValue(AlgorithmsXMLConstants._oid) != null) {
oid = new MetaOID(current.getAttributeValue(AlgorithmsXMLConstants._oid));
meta.setOID(oid);
}
// names
List<String> names = new ArrayList<String>();
if (current.getChild(AlgorithmsXMLConstants._Names) != null) {
if (current.getChild(AlgorithmsXMLConstants._Names).getText().contains(",")) {
// $NON-NLS-1$
StringTokenizer tokenizer = // $NON-NLS-1$
new StringTokenizer(current.getChild(AlgorithmsXMLConstants._Names).getText(), ",");
while (tokenizer.hasMoreTokens()) {
names.add(tokenizer.nextToken());
}
} else {
names.add(current.getChild(AlgorithmsXMLConstants._Names).getText());
}
}
meta.setNames(names);
// parameter spec
if (current.getChild(AlgorithmsXMLConstants._ParameterSpec) != null) {
meta.setParameterSpecClassName(current.getChild(AlgorithmsXMLConstants._ParameterSpec).getAttributeValue(AlgorithmsXMLConstants._class));
}
// parameter generators
if (current.getChild(AlgorithmsXMLConstants._ParameterGenerator) != null) {
meta.setParameterGeneratorClassName(current.getChild(AlgorithmsXMLConstants._ParameterGenerator).getAttributeValue(AlgorithmsXMLConstants._class));
meta.setParamGenParameterSpecClassName(current.getChild(AlgorithmsXMLConstants._ParameterGenerator).getChild(AlgorithmsXMLConstants._ParameterSpec).getAttributeValue(AlgorithmsXMLConstants._class));
}
// lengths
if (current.getChild(AlgorithmsXMLConstants._KeyStrengths) != null) {
int defaultLength = Integer.valueOf(current.getChild(AlgorithmsXMLConstants._KeyStrengths).getAttributeValue(AlgorithmsXMLConstants._default));
IMetaLength metaLength = new MetaLength(defaultLength);
if (current.getChild(AlgorithmsXMLConstants._KeyStrengths).getText() != null) {
String text = current.getChild(AlgorithmsXMLConstants._KeyStrengths).getText();
if (text.contains(",")) {
// $NON-NLS-1$
List<Integer> lengths = new ArrayList<Integer>(2);
// $NON-NLS-1$
StringTokenizer tokenizer = new StringTokenizer(text, ",");
while (tokenizer.hasMoreTokens()) {
lengths.add(Integer.valueOf(tokenizer.nextToken()));
}
metaLength.setLengths(lengths);
} else if (text.contains("...")) {
// $NON-NLS-1$
// $NON-NLS-1$
int lowerBound = Integer.valueOf(text.substring(0, text.indexOf("...")));
// $NON-NLS-1$
int upperBound = Integer.valueOf(text.substring(text.indexOf("...") + 3, text.length()));
metaLength.setBounds(lowerBound, upperBound);
}
}
meta.setLengths(metaLength);
}
add(type, meta);
}
}
use of org.jcryptool.crypto.flexiprovider.descriptors.meta.interfaces.IMetaLength in project core by jcryptool.
the class KeyStoreHelper method makeSymmetricKeyByWizard.
public static KeyStoreAliasNotifier makeSymmetricKeyByWizard(String keyType) {
// $NON-NLS-1$
LogUtil.logInfo("NewSymmetricKeyAction");
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
Wizard wizard = new NewSymmetricKeyWizard(keyType);
WizardDialog dialog = new WizardDialog(shell, wizard);
dialog.setMinimumPageSize(300, 350);
final KeyStoreAliasNotifier resultAlias = new KeyStoreAliasNotifier();
int result = dialog.open();
if (result == Window.OK) {
if (wizard instanceof INewKeyWizard) {
final INewEntryDescriptor nkd = ((INewKeyWizard) wizard).getNewEntryDescriptor();
final Integer[] argument = new Integer[1];
argument[0] = nkd.getKeyLength();
final Integer keyLen = argument[0];
// $NON-NLS-1$
LogUtil.logInfo("key strength: " + argument[0]);
Job job = new // $NON-NLS-1$
Job(// $NON-NLS-1$
"New SecretKey Job") {
@Override
protected IStatus run(IProgressMonitor monitor) {
// $NON-NLS-1$
monitor.beginTask("New SecretKey Task", IProgressMonitor.UNKNOWN);
try {
IMetaKeyGenerator gen = AlgorithmsXMLManager.getInstance().getSecretKeyGenerator(nkd.getAlgorithmName());
IMetaLength validKeyLengths = gen.getLengths();
// Check if entered key length is valid
boolean isValidKeyLength = true;
if (validKeyLengths != null) {
isValidKeyLength = (validKeyLengths.getDefaultLength() == keyLen) || (keyLen >= validKeyLengths.getLowerBound() && keyLen <= validKeyLengths.getUpperBound()) || (validKeyLengths.getLengths() != null && validKeyLengths.getLengths().contains(keyLen));
}
if (!isValidKeyLength) {
throw new InvalidAlgorithmParameterException("illegal key length");
}
AlgorithmParameterSpec spec = null;
if (gen.getParameterSpecClassName() != null) {
spec = Reflector.getInstance().instantiateParameterSpec(gen.getParameterSpecClassName(), argument);
}
SecretKeyGenerator generator = Registry.getSecretKeyGenerator(nkd.getAlgorithmName());
if (spec != null) {
// $NON-NLS-1$
LogUtil.logInfo("initializing generator with spec");
generator.init(spec, FlexiProviderKeystorePlugin.getSecureRandom());
} else {
generator.init(FlexiProviderKeystorePlugin.getSecureRandom());
}
SecretKey key = generator.generateKey();
INewEntryDescriptor descriptor = new NewSecretKeyDescriptor(nkd, key);
resultAlias.notifyAboutAlias(AbstractKeyStoreHandler.addSecretKeyStatic(descriptor, ((NewSecretKeyDescriptor) descriptor).getSecretKey()));
} catch (SecurityException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "SecurityException while generating a secret key", e, true);
} catch (IllegalArgumentException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "IllegalArgumentException while generating a secret key", e, true);
} catch (ClassNotFoundException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "ClassNotFoundException while generating a secret key", e, true);
} catch (NoSuchMethodException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "NoSuchMethodException while generating a secret key", e, true);
} catch (InstantiationException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "InstantiationException while generating a secret key", e, true);
} catch (IllegalAccessException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "IllegalAccessException while generating a secret key", e, true);
} catch (InvocationTargetException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "InvocationTargetException while generating a secret key", e, true);
} catch (NoSuchAlgorithmException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "NoSuchAlgorithmException while generating a secret key", e, true);
} catch (InvalidAlgorithmParameterException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "InvalidAlgorithmParameterException while generating a secret key", e, true);
}
return Status.OK_STATUS;
}
@Override
public boolean belongsTo(Object family) {
return family == KEYSTOREHELPER_FAMILY;
}
};
job.setPriority(Job.LONG);
job.setUser(true);
job.schedule();
}
} else {
resultAlias.notifyAboutAlias(null);
}
return resultAlias;
}
use of org.jcryptool.crypto.flexiprovider.descriptors.meta.interfaces.IMetaLength in project core by jcryptool.
the class KeyStoreHelper method makeKeyPairByWizard.
public static KeyStoreAliasNotifier makeKeyPairByWizard(String keyType) {
// $NON-NLS-1$
LogUtil.logInfo("NewKeyPairAction");
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
Wizard wizard = new NewKeyPairWizard(keyType);
WizardDialog dialog = new WizardDialog(shell, wizard);
dialog.setMinimumPageSize(300, 350);
final KeyStoreAliasNotifier resultAlias = new KeyStoreAliasNotifier();
int result = dialog.open();
if (result == Window.OK) {
if (wizard instanceof INewKeyWizard) {
final INewEntryDescriptor nkd = ((INewKeyWizard) wizard).getNewEntryDescriptor();
final Integer[] argument = new Integer[1];
final Integer arg = nkd.getKeyLength();
argument[0] = arg;
final Integer keyLen = argument[0];
// $NON-NLS-1$
LogUtil.logInfo("nkd.getKeyLength: " + argument[0]);
Job job = new // $NON-NLS-1$
Job(// $NON-NLS-1$
"New Key Pair Job") {
@Override
protected IStatus run(IProgressMonitor monitor) {
// $NON-NLS-1$
monitor.beginTask("New KeyPair Task", IProgressMonitor.UNKNOWN);
try {
IMetaKeyGenerator gen = AlgorithmsXMLManager.getInstance().getKeyPairGenerator(nkd.getAlgorithmName());
IMetaLength validKeyLengths = gen.getLengths();
// Check if entered key length is valid
boolean isValidKeyLength = true;
if (validKeyLengths != null) {
isValidKeyLength = (validKeyLengths.getDefaultLength() == keyLen) || (keyLen >= validKeyLengths.getLowerBound() && keyLen <= validKeyLengths.getUpperBound()) || (validKeyLengths.getLengths() != null && validKeyLengths.getLengths().contains(keyLen));
}
if (!isValidKeyLength) {
throw new InvalidAlgorithmParameterException("illegal key length");
}
AlgorithmParameterSpec spec = null;
if (arg != -1) {
if (gen.getParameterSpecClassName() != null) {
spec = Reflector.getInstance().instantiateParameterSpec(gen.getParameterSpecClassName(), argument);
}
}
KeyPairGenerator generator = Registry.getKeyPairGenerator(nkd.getAlgorithmName());
if (spec != null) {
generator.initialize(spec, FlexiProviderKeystorePlugin.getSecureRandom());
} else if (arg != -1) {
generator.initialize(arg, FlexiProviderKeystorePlugin.getSecureRandom());
}
KeyPair keyPair = generator.genKeyPair();
PrivateKey priv = keyPair.getPrivate();
PublicKey pub = keyPair.getPublic();
NewKeyPairDescriptor descriptor = new NewKeyPairDescriptor(nkd, priv, pub);
resultAlias.notifyAboutAlias(AbstractKeyStoreHandler.addKeyPairStatic(descriptor, ((NewKeyPairDescriptor) descriptor).getPrivateKey(), ((NewKeyPairDescriptor) descriptor).getPublicKey()));
} catch (NoSuchAlgorithmException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "NoSuchAlgorithmException while generating a key pair", e, true);
} catch (InvalidAlgorithmParameterException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "InvalidAlgorithmParameterException while generating a key pair", e, true);
} catch (SecurityException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "SecurityException while generating a key pair", e, true);
} catch (IllegalArgumentException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "IllegalArgumentException while generating a key pair", e, true);
} catch (ClassNotFoundException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "ClassNotFoundException while generating a key pair", e, true);
} catch (NoSuchMethodException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "NoSuchMethodException while generating a key pair", e, true);
} catch (InstantiationException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "InstantiationException while generating a key pair", e, true);
} catch (IllegalAccessException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "IllegalAccessException while generating a key pair", e, true);
} catch (InvocationTargetException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "InvocationTargetException while generating a key pair", e, true);
} finally {
monitor.done();
}
return Status.OK_STATUS;
}
@Override
public boolean belongsTo(Object family) {
return family == KEYSTOREHELPER_FAMILY;
}
};
job.setPriority(Job.LONG);
job.setUser(true);
job.schedule();
}
} else {
resultAlias.notifyAboutAlias(null);
}
return resultAlias;
}
use of org.jcryptool.crypto.flexiprovider.descriptors.meta.interfaces.IMetaLength in project core by jcryptool.
the class NewKeyPairHandler method execute.
/**
* @see org.eclipse.jface.action.Action#run()
*/
public Object execute(ExecutionEvent event) {
// $NON-NLS-1$
LogUtil.logInfo("NewKeyPairAction");
shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
Wizard wizard = new NewKeyPairWizard();
dialog = new WizardDialog(shell, wizard);
dialog.setMinimumPageSize(300, 350);
int result = dialog.open();
if (result == Window.OK) {
if (wizard instanceof INewKeyWizard) {
final INewEntryDescriptor nkd = ((INewKeyWizard) wizard).getNewEntryDescriptor();
final Integer[] argument = new Integer[1];
final Integer arg = nkd.getKeyLength();
argument[0] = arg;
final Integer keyLen = argument[0];
// $NON-NLS-1$
LogUtil.logInfo("nkd.getKeyLength: " + argument[0]);
Job job = new Job(Messages.NewKeyPairHandler_2) {
@Override
protected IStatus run(IProgressMonitor monitor) {
monitor.beginTask(Messages.NewKeyPairHandler_3, IProgressMonitor.UNKNOWN);
try {
IMetaKeyGenerator gen = AlgorithmsXMLManager.getInstance().getKeyPairGenerator(nkd.getAlgorithmName());
IMetaLength validKeyLengths = gen.getLengths();
// Check if entered key length is valid
boolean isValidKeyLength = true;
if (validKeyLengths != null) {
isValidKeyLength = (validKeyLengths.getDefaultLength() == keyLen) || (keyLen >= validKeyLengths.getLowerBound() && keyLen <= validKeyLengths.getUpperBound()) || (validKeyLengths.getLengths() != null && validKeyLengths.getLengths().contains(keyLen));
}
if (!isValidKeyLength) {
// $NON-NLS-1$
throw new InvalidAlgorithmParameterException("illegal key length");
}
AlgorithmParameterSpec spec = null;
if (arg != -1) {
if (gen.getParameterSpecClassName() != null) {
spec = Reflector.getInstance().instantiateParameterSpec(gen.getParameterSpecClassName(), argument);
}
}
KeyPairGenerator generator = Registry.getKeyPairGenerator(nkd.getAlgorithmName());
if (spec != null) {
generator.initialize(spec, FlexiProviderKeystorePlugin.getSecureRandom());
} else if (arg != -1) {
generator.initialize(arg, FlexiProviderKeystorePlugin.getSecureRandom());
}
KeyPair keyPair = generator.genKeyPair();
PrivateKey priv = keyPair.getPrivate();
PublicKey pub = keyPair.getPublic();
performNewKeyAction(new NewKeyPairDescriptor(nkd, priv, pub));
} catch (NoSuchAlgorithmException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "NoSuchAlgorithmException while generating a key pair", e, // $NON-NLS-1$
true);
} catch (InvalidAlgorithmParameterException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "InvalidAlgorithmParameterException while generating a key pair", e, // $NON-NLS-1$
true);
} catch (SecurityException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "SecurityException while generating a key pair", e, // $NON-NLS-1$
true);
} catch (IllegalArgumentException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "IllegalArgumentException while generating a key pair", e, // $NON-NLS-1$
true);
} catch (ClassNotFoundException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "ClassNotFoundException while generating a key pair", e, // $NON-NLS-1$
true);
} catch (NoSuchMethodException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "NoSuchMethodException while generating a key pair", e, // $NON-NLS-1$
true);
} catch (InstantiationException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "InstantiationException while generating a key pair", e, // $NON-NLS-1$
true);
} catch (IllegalAccessException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "IllegalAccessException while generating a key pair", e, // $NON-NLS-1$
true);
} catch (InvocationTargetException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "InvocationTargetException while generating a key pair", e, // $NON-NLS-1$
true);
} finally {
monitor.done();
}
return Status.OK_STATUS;
}
};
job.setPriority(Job.LONG);
// job.setUser(true);
job.schedule();
}
}
return (null);
}
use of org.jcryptool.crypto.flexiprovider.descriptors.meta.interfaces.IMetaLength in project core by jcryptool.
the class NewSymmetricKeyHandler method execute.
/**
* @see org.eclipse.jface.action.Action#run()
*/
public Object execute(ExecutionEvent event) {
// $NON-NLS-1$
LogUtil.logInfo("NewSymmetricKeyAction");
shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
Wizard wizard = new NewSymmetricKeyWizard();
dialog = new WizardDialog(shell, wizard);
dialog.setMinimumPageSize(300, 350);
int result = dialog.open();
if (result == Window.OK) {
if (wizard instanceof INewKeyWizard) {
INewEntryDescriptor nkd = ((INewKeyWizard) wizard).getNewEntryDescriptor();
Integer[] argument = new Integer[1];
argument[0] = nkd.getKeyLength();
Integer keyLen = argument[0];
// $NON-NLS-1$
LogUtil.logInfo("key strength: " + argument[0]);
try {
IMetaKeyGenerator gen = AlgorithmsXMLManager.getInstance().getSecretKeyGenerator(nkd.getAlgorithmName());
IMetaLength validKeyLengths = gen.getLengths();
// Check if entered key length is valid
boolean isValidKeyLength = true;
if (validKeyLengths != null) {
isValidKeyLength = (validKeyLengths.getDefaultLength() == keyLen) || (keyLen >= validKeyLengths.getLowerBound() && keyLen <= validKeyLengths.getUpperBound()) || (validKeyLengths.getLengths() != null && validKeyLengths.getLengths().contains(keyLen));
}
if (!isValidKeyLength) {
throw new InvalidAlgorithmParameterException("illegal key length");
}
AlgorithmParameterSpec spec = null;
if (gen.getParameterSpecClassName() != null) {
spec = Reflector.getInstance().instantiateParameterSpec(gen.getParameterSpecClassName(), argument);
}
SecretKeyGenerator generator = Registry.getSecretKeyGenerator(nkd.getAlgorithmName());
if (spec != null) {
// $NON-NLS-1$
LogUtil.logInfo("initializing generator with spec");
generator.init(spec, FlexiProviderKeystorePlugin.getSecureRandom());
} else {
generator.init(FlexiProviderKeystorePlugin.getSecureRandom());
}
SecretKey key = generator.generateKey();
performNewKeyAction(new NewSecretKeyDescriptor(nkd, key));
} catch (SecurityException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "SecurityException while generating a secret key", e, true);
} catch (IllegalArgumentException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "IllegalArgumentException while generating a secret key", e, true);
} catch (ClassNotFoundException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "ClassNotFoundException while generating a secret key", e, true);
} catch (NoSuchMethodException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "NoSuchMethodException while generating a secret key", e, true);
} catch (InstantiationException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "InstantiationException while generating a secret key", e, true);
} catch (IllegalAccessException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "IllegalAccessException while generating a secret key", e, true);
} catch (InvocationTargetException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "InvocationTargetException while generating a secret key", e, true);
} catch (NoSuchAlgorithmException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "NoSuchAlgorithmException while generating a secret key", e, true);
} catch (InvalidAlgorithmParameterException e) {
LogUtil.logError(FlexiProviderKeystorePlugin.PLUGIN_ID, "InvalidAlgorithmParameterException while generating a secret key", e, true);
}
}
}
return (null);
}
Aggregations