Search in sources :

Example 1 with IMetaLength

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);
    }
}
Also used : IMetaOID(org.jcryptool.crypto.flexiprovider.descriptors.meta.interfaces.IMetaOID) MetaLength(org.jcryptool.crypto.flexiprovider.descriptors.meta.MetaLength) IMetaLength(org.jcryptool.crypto.flexiprovider.descriptors.meta.interfaces.IMetaLength) Element(org.jdom.Element) MetaKeyGenerator(org.jcryptool.crypto.flexiprovider.descriptors.meta.MetaKeyGenerator) IMetaKeyGenerator(org.jcryptool.crypto.flexiprovider.descriptors.meta.interfaces.IMetaKeyGenerator) ArrayList(java.util.ArrayList) IMetaKeyGenerator(org.jcryptool.crypto.flexiprovider.descriptors.meta.interfaces.IMetaKeyGenerator) MetaOID(org.jcryptool.crypto.flexiprovider.descriptors.meta.MetaOID) IMetaOID(org.jcryptool.crypto.flexiprovider.descriptors.meta.interfaces.IMetaOID) IMetaLength(org.jcryptool.crypto.flexiprovider.descriptors.meta.interfaces.IMetaLength) StringTokenizer(java.util.StringTokenizer)

Example 2 with IMetaLength

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;
}
Also used : NoSuchAlgorithmException(de.flexiprovider.api.exceptions.NoSuchAlgorithmException) IMetaKeyGenerator(org.jcryptool.crypto.flexiprovider.descriptors.meta.interfaces.IMetaKeyGenerator) Shell(org.eclipse.swt.widgets.Shell) INewKeyWizard(org.jcryptool.crypto.keystore.descriptors.interfaces.INewKeyWizard) Job(org.eclipse.core.runtime.jobs.Job) NewSecretKeyDescriptor(org.jcryptool.crypto.keystore.descriptors.NewSecretKeyDescriptor) InvalidAlgorithmParameterException(de.flexiprovider.api.exceptions.InvalidAlgorithmParameterException) InvocationTargetException(java.lang.reflect.InvocationTargetException) IMetaLength(org.jcryptool.crypto.flexiprovider.descriptors.meta.interfaces.IMetaLength) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) SecretKey(de.flexiprovider.api.keys.SecretKey) NewSymmetricKeyWizard(org.jcryptool.crypto.flexiprovider.keystore.wizards.NewSymmetricKeyWizard) SecretKeyGenerator(de.flexiprovider.api.keys.SecretKeyGenerator) NewSymmetricKeyWizard(org.jcryptool.crypto.flexiprovider.keystore.wizards.NewSymmetricKeyWizard) Wizard(org.eclipse.jface.wizard.Wizard) INewKeyWizard(org.jcryptool.crypto.keystore.descriptors.interfaces.INewKeyWizard) NewKeyPairWizard(org.jcryptool.crypto.flexiprovider.keystore.wizards.NewKeyPairWizard) WizardDialog(org.eclipse.jface.wizard.WizardDialog) AlgorithmParameterSpec(de.flexiprovider.api.parameters.AlgorithmParameterSpec) INewEntryDescriptor(org.jcryptool.crypto.keystore.descriptors.interfaces.INewEntryDescriptor)

Example 3 with IMetaLength

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;
}
Also used : PrivateKey(de.flexiprovider.api.keys.PrivateKey) NoSuchAlgorithmException(de.flexiprovider.api.exceptions.NoSuchAlgorithmException) IMetaKeyGenerator(org.jcryptool.crypto.flexiprovider.descriptors.meta.interfaces.IMetaKeyGenerator) Shell(org.eclipse.swt.widgets.Shell) INewKeyWizard(org.jcryptool.crypto.keystore.descriptors.interfaces.INewKeyWizard) Job(org.eclipse.core.runtime.jobs.Job) NewKeyPairWizard(org.jcryptool.crypto.flexiprovider.keystore.wizards.NewKeyPairWizard) KeyPair(de.flexiprovider.api.keys.KeyPair) InvalidAlgorithmParameterException(de.flexiprovider.api.exceptions.InvalidAlgorithmParameterException) PublicKey(de.flexiprovider.api.keys.PublicKey) KeyPairGenerator(de.flexiprovider.api.keys.KeyPairGenerator) InvocationTargetException(java.lang.reflect.InvocationTargetException) IMetaLength(org.jcryptool.crypto.flexiprovider.descriptors.meta.interfaces.IMetaLength) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) NewKeyPairDescriptor(org.jcryptool.crypto.keystore.descriptors.NewKeyPairDescriptor) NewSymmetricKeyWizard(org.jcryptool.crypto.flexiprovider.keystore.wizards.NewSymmetricKeyWizard) Wizard(org.eclipse.jface.wizard.Wizard) INewKeyWizard(org.jcryptool.crypto.keystore.descriptors.interfaces.INewKeyWizard) NewKeyPairWizard(org.jcryptool.crypto.flexiprovider.keystore.wizards.NewKeyPairWizard) WizardDialog(org.eclipse.jface.wizard.WizardDialog) AlgorithmParameterSpec(de.flexiprovider.api.parameters.AlgorithmParameterSpec) INewEntryDescriptor(org.jcryptool.crypto.keystore.descriptors.interfaces.INewEntryDescriptor)

Example 4 with IMetaLength

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);
}
Also used : PrivateKey(de.flexiprovider.api.keys.PrivateKey) NoSuchAlgorithmException(de.flexiprovider.api.exceptions.NoSuchAlgorithmException) IMetaKeyGenerator(org.jcryptool.crypto.flexiprovider.descriptors.meta.interfaces.IMetaKeyGenerator) INewKeyWizard(org.jcryptool.crypto.keystore.descriptors.interfaces.INewKeyWizard) Job(org.eclipse.core.runtime.jobs.Job) NewKeyPairWizard(org.jcryptool.crypto.flexiprovider.keystore.wizards.NewKeyPairWizard) KeyPair(de.flexiprovider.api.keys.KeyPair) InvalidAlgorithmParameterException(de.flexiprovider.api.exceptions.InvalidAlgorithmParameterException) PublicKey(de.flexiprovider.api.keys.PublicKey) KeyPairGenerator(de.flexiprovider.api.keys.KeyPairGenerator) InvocationTargetException(java.lang.reflect.InvocationTargetException) IMetaLength(org.jcryptool.crypto.flexiprovider.descriptors.meta.interfaces.IMetaLength) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) NewKeyPairDescriptor(org.jcryptool.crypto.keystore.descriptors.NewKeyPairDescriptor) Wizard(org.eclipse.jface.wizard.Wizard) INewKeyWizard(org.jcryptool.crypto.keystore.descriptors.interfaces.INewKeyWizard) NewKeyPairWizard(org.jcryptool.crypto.flexiprovider.keystore.wizards.NewKeyPairWizard) WizardDialog(org.eclipse.jface.wizard.WizardDialog) AlgorithmParameterSpec(de.flexiprovider.api.parameters.AlgorithmParameterSpec) INewEntryDescriptor(org.jcryptool.crypto.keystore.descriptors.interfaces.INewEntryDescriptor)

Example 5 with IMetaLength

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);
}
Also used : NewSecretKeyDescriptor(org.jcryptool.crypto.keystore.descriptors.NewSecretKeyDescriptor) InvalidAlgorithmParameterException(de.flexiprovider.api.exceptions.InvalidAlgorithmParameterException) NoSuchAlgorithmException(de.flexiprovider.api.exceptions.NoSuchAlgorithmException) IMetaKeyGenerator(org.jcryptool.crypto.flexiprovider.descriptors.meta.interfaces.IMetaKeyGenerator) InvocationTargetException(java.lang.reflect.InvocationTargetException) IMetaLength(org.jcryptool.crypto.flexiprovider.descriptors.meta.interfaces.IMetaLength) SecretKey(de.flexiprovider.api.keys.SecretKey) NewSymmetricKeyWizard(org.jcryptool.crypto.flexiprovider.keystore.wizards.NewSymmetricKeyWizard) SecretKeyGenerator(de.flexiprovider.api.keys.SecretKeyGenerator) INewKeyWizard(org.jcryptool.crypto.keystore.descriptors.interfaces.INewKeyWizard) NewSymmetricKeyWizard(org.jcryptool.crypto.flexiprovider.keystore.wizards.NewSymmetricKeyWizard) Wizard(org.eclipse.jface.wizard.Wizard) INewKeyWizard(org.jcryptool.crypto.keystore.descriptors.interfaces.INewKeyWizard) WizardDialog(org.eclipse.jface.wizard.WizardDialog) AlgorithmParameterSpec(de.flexiprovider.api.parameters.AlgorithmParameterSpec) INewEntryDescriptor(org.jcryptool.crypto.keystore.descriptors.interfaces.INewEntryDescriptor)

Aggregations

IMetaKeyGenerator (org.jcryptool.crypto.flexiprovider.descriptors.meta.interfaces.IMetaKeyGenerator)5 IMetaLength (org.jcryptool.crypto.flexiprovider.descriptors.meta.interfaces.IMetaLength)5 InvalidAlgorithmParameterException (de.flexiprovider.api.exceptions.InvalidAlgorithmParameterException)4 NoSuchAlgorithmException (de.flexiprovider.api.exceptions.NoSuchAlgorithmException)4 AlgorithmParameterSpec (de.flexiprovider.api.parameters.AlgorithmParameterSpec)4 InvocationTargetException (java.lang.reflect.InvocationTargetException)4 Wizard (org.eclipse.jface.wizard.Wizard)4 WizardDialog (org.eclipse.jface.wizard.WizardDialog)4 INewEntryDescriptor (org.jcryptool.crypto.keystore.descriptors.interfaces.INewEntryDescriptor)4 INewKeyWizard (org.jcryptool.crypto.keystore.descriptors.interfaces.INewKeyWizard)4 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)3 Job (org.eclipse.core.runtime.jobs.Job)3 NewKeyPairWizard (org.jcryptool.crypto.flexiprovider.keystore.wizards.NewKeyPairWizard)3 NewSymmetricKeyWizard (org.jcryptool.crypto.flexiprovider.keystore.wizards.NewSymmetricKeyWizard)3 KeyPair (de.flexiprovider.api.keys.KeyPair)2 KeyPairGenerator (de.flexiprovider.api.keys.KeyPairGenerator)2 PrivateKey (de.flexiprovider.api.keys.PrivateKey)2 PublicKey (de.flexiprovider.api.keys.PublicKey)2 SecretKey (de.flexiprovider.api.keys.SecretKey)2 SecretKeyGenerator (de.flexiprovider.api.keys.SecretKeyGenerator)2