public void initialize( AlgorithmParameterSpec params, SecureRandom random) throws InvalidAlgorithmParameterException { if (!(params instanceof DSAParameterSpec)) { throw new InvalidAlgorithmParameterException("parameter object not a DSAParameterSpec"); } DSAParameterSpec dsaParams = (DSAParameterSpec)params; param = new DSAKeyGenerationParameters(random, new DSAParameters(dsaParams.getP(), dsaParams.getQ(), dsaParams.getG())); engine.init(param); initialised = true; }
@Override public P11ObjectIdentifier generateDSAKeypair(int plength, int qlength, String label, P11NewKeyControl control) throws P11TokenException { ParamUtil.requireMin("plength", plength, 1024); if (plength % 1024 != 0) { throw new IllegalArgumentException("key size is not multiple of 1024: " + plength); } assertWritable("generateDSAKeypair"); assertMechanismSupported(PKCS11Constants.CKM_DSA_KEY_PAIR_GEN); if (getObjectIdForLabel(label) != null) { throw new P11DuplicateEntityException("identity with label " + label + " already exists"); } DSAParameterSpec dsaParams = DSAParameterCache.getDSAParameterSpec(plength, qlength, random); P11Identity identity = generateDSAKeypair0(dsaParams.getP(), dsaParams.getQ(), dsaParams.getG(), label, control); addIdentity(identity); P11ObjectIdentifier objId = identity.identityId().objectId(); LOG.info("generated DSA keypair {}", objId); return objId; }
/** * Returns the DSA parameters associated with this key, or null if the * parameters could not be parsed. */ public DSAParams getParams() { try { if (algid instanceof DSAParams) { return (DSAParams)algid; } else { DSAParameterSpec paramSpec; AlgorithmParameters algParams = algid.getParameters(); if (algParams == null) { return null; } paramSpec = algParams.getParameterSpec(DSAParameterSpec.class); return (DSAParams)paramSpec; } } catch (InvalidParameterSpecException e) { return null; } }
protected <T extends AlgorithmParameterSpec> T engineGetParameterSpec(Class<T> paramSpec) throws InvalidParameterSpecException { try { Class<?> dsaParamSpec = Class.forName ("java.security.spec.DSAParameterSpec"); if (dsaParamSpec.isAssignableFrom(paramSpec)) { return paramSpec.cast( new DSAParameterSpec(this.p, this.q, this.g)); } else { throw new InvalidParameterSpecException ("Inappropriate parameter Specification"); } } catch (ClassNotFoundException e) { throw new InvalidParameterSpecException ("Unsupported parameter specification: " + e.getMessage()); } }
/** * Generates a pair of keys usable by any JavaSecurity compliant * DSA implementation. */ public KeyPair generateKeyPair() { if (random == null) { random = JCAUtil.getSecureRandom(); } DSAParameterSpec spec; try { if (forceNewParameters) { // generate new parameters each time spec = ParameterCache.getNewDSAParameterSpec(plen, qlen, random); } else { if (params == null) { params = ParameterCache.getDSAParameterSpec(plen, qlen, random); } spec = params; } } catch (GeneralSecurityException e) { throw new ProviderException(e); } return generateKeyPair(spec.getP(), spec.getQ(), spec.getG(), random); }
private static void checkParamStrength(AlgorithmParameters param, DSAGenParameterSpec genParam) throws Exception { String algo = param.getAlgorithm(); if (!algo.equalsIgnoreCase("DSA")) { throw new RuntimeException("Unexpected type of parameters: " + algo); } DSAParameterSpec spec = param.getParameterSpec(DSAParameterSpec.class); int valueL = spec.getP().bitLength(); int strength = genParam.getPrimePLength(); if (strength != valueL) { System.out.println("P: Expected " + strength + " but actual " + valueL); throw new RuntimeException("Wrong P strength"); } int valueN = spec.getQ().bitLength(); strength = genParam.getSubprimeQLength(); if (strength != valueN) { System.out.println("Q: Expected " + strength + " but actual " + valueN); throw new RuntimeException("Wrong Q strength"); } }
/** * Initializes the DSA key pair generator. If <code>genParams</code> * is false, a set of pre-computed parameters is used. */ @Override public void initialize(int modlen, boolean genParams, SecureRandom random) throws InvalidParameterException { if (genParams) { super.init(modlen, random, true); } else { DSAParameterSpec cachedParams = ParameterCache.getCachedDSAParameterSpec(modlen, getDefDSASubprimeSize(modlen)); if (cachedParams == null) { throw new InvalidParameterException ("No precomputed parameters for requested modulus" + " size available"); } super.init(cachedParams, random, false); } }
JDKDSAPublicKey( SubjectPublicKeyInfo info) { ASN1Integer derY; try { derY = (ASN1Integer)info.parsePublicKey(); } catch (IOException e) { throw new IllegalArgumentException("invalid info structure in DSA public key"); } this.y = derY.getValue(); if (isNotNull(info.getAlgorithm().getParameters())) { DSAParameter params = DSAParameter.getInstance(info.getAlgorithm().getParameters()); this.dsaSpec = new DSAParameterSpec(params.getP(), params.getQ(), params.getG()); } }
public BCDSAPublicKey( SubjectPublicKeyInfo info) { ASN1Integer derY; try { derY = (ASN1Integer)info.parsePublicKey(); } catch (IOException e) { throw new IllegalArgumentException("invalid info structure in DSA public key"); } this.y = derY.getValue(); if (isNotNull(info.getAlgorithm().getParameters())) { DSAParameter params = DSAParameter.getInstance(info.getAlgorithm().getParameters()); this.dsaSpec = new DSAParameterSpec(params.getP(), params.getQ(), params.getG()); } }
public void initialize(AlgorithmParameterSpec params, SecureRandom random) throws InvalidAlgorithmParameterException { HashMap attributes = new HashMap(); if (params != null) { if (! (params instanceof DSAParameterSpec)) throw new InvalidAlgorithmParameterException( "Parameters argument is not a non-null instance, or " + "sub-instance, of java.security.spec.DSAParameterSpec"); attributes.put(DSSKeyPairGenerator.DSS_PARAMETERS, params); } if (random != null) attributes.put(DSSKeyPairGenerator.SOURCE_OF_RANDOMNESS, random); attributes.put(DSSKeyPairGenerator.PREFERRED_ENCODING_FORMAT, Integer.valueOf(Registry.ASN1_ENCODING_ID)); try { adaptee.setup(attributes); } catch (IllegalArgumentException x) { throw new InvalidAlgorithmParameterException(x.getMessage(), x); } }
public void initialize(DSAParams params, SecureRandom random) throws InvalidParameterException { if (params == null || !(params instanceof DSAParameterSpec)) throw new InvalidParameterException( "Parameters argument is either null or is not an instance, or " + "sub-instance, of java.security.spec.DSAParameterSpec"); DSAParameterSpec spec = (DSAParameterSpec) params; try { this.initialize((AlgorithmParameterSpec) spec, random); } catch (InvalidAlgorithmParameterException x) { InvalidParameterException y = new InvalidParameterException(x.getMessage()); y.initCause(x); throw y; } }