List of usage examples for org.bouncycastle.crypto.params DSAParameters getP
public BigInteger getP()
From source file:dorkbox.build.util.jar.JarSigner.java
License:Apache License
private static void writeDsaKeysToFile(DSAPrivateKeyParameters wimpyPrivateKey, DSAPublicKeyParameters wimpyPublicKey, File wimpyKeyRawFile) throws IOException, FileNotFoundException { DSAParameters parameters = wimpyPublicKey.getParameters(); // has to convert to DSAParameter so encoding works. byte[] publicKeyBytes = new SubjectPublicKeyInfo(new AlgorithmIdentifier(X9ObjectIdentifiers.id_dsa, new DSAParameter(parameters.getP(), parameters.getQ(), parameters.getG()).toASN1Primitive()), new ASN1Integer(wimpyPublicKey.getY())).getEncoded(); // SAME AS://from w w w .j ava2 s .c o m // Certificate[] certificates = Launcher.class.getProtectionDomain().getCodeSource().getCertificates(); // if (certificates.length != 1) { // // WHOOPS! // Exit.FailedSecurity("Incorrect certificate length!"); // } // // Certificate certificate = certificates[0]; // PublicKey publicKey = certificate.getPublicKey(); // byte[] publicKeyBytes = publicKey.getEncoded(); // // digest.reset(); // digest.update(publicKeyBytes, 0, publicKeyBytes.length); // hashPublicKeyBytes = digest.digest(); parameters = wimpyPrivateKey.getParameters(); byte[] privateKeyBytes = new PrivateKeyInfo(new AlgorithmIdentifier(X9ObjectIdentifiers.id_dsa, new DSAParameter(parameters.getP(), parameters.getQ(), parameters.getG()).toASN1Primitive()), new ASN1Integer(wimpyPrivateKey.getX())).getEncoded(); // write public length to bytes. byte[] publicKeySize = new byte[] { (byte) (publicKeyBytes.length >>> 24), (byte) (publicKeyBytes.length >>> 16), (byte) (publicKeyBytes.length >>> 8), (byte) (publicKeyBytes.length >>> 0) }; ByteArrayOutputStream keyOutputStream = new ByteArrayOutputStream( 4 + publicKeyBytes.length + privateKeyBytes.length); keyOutputStream.write(publicKeyBytes, 0, publicKeyBytes.length); keyOutputStream.write(privateKeyBytes, 0, privateKeyBytes.length); keyOutputStream.write(publicKeySize, 0, publicKeySize.length); // mess with people staring at the keys (store length at the end). displayByteHash(publicKeyBytes); // write out the file OutputStream outputStream = new FileOutputStream(wimpyKeyRawFile); keyOutputStream.writeTo(outputStream); Sys.close(outputStream); }
From source file:dorkbox.util.crypto.DsaTest.java
License:Apache License
@Test public void DsaJceSerializaion() throws IOException { AsymmetricCipherKeyPair generateKeyPair = CryptoDSA .generateKeyPair(new SecureRandom(entropySeed.getBytes()), 1024); DSAPrivateKeyParameters privateKey = (DSAPrivateKeyParameters) generateKeyPair.getPrivate(); DSAPublicKeyParameters publicKey = (DSAPublicKeyParameters) generateKeyPair.getPublic(); // public key as bytes. DSAParameters parameters = publicKey.getParameters(); byte[] bs = new SubjectPublicKeyInfo(new AlgorithmIdentifier(X9ObjectIdentifiers.id_dsa, new DSAParameter(parameters.getP(), parameters.getQ(), parameters.getG()).toASN1Primitive()), new ASN1Integer(publicKey.getY())).getEncoded(); parameters = privateKey.getParameters(); byte[] bs2 = new PrivateKeyInfo(new AlgorithmIdentifier(X9ObjectIdentifiers.id_dsa, new DSAParameter(parameters.getP(), parameters.getQ(), parameters.getG()).toASN1Primitive()), new ASN1Integer(privateKey.getX())).getEncoded(); DSAPrivateKeyParameters privateKey2 = (DSAPrivateKeyParameters) PrivateKeyFactory.createKey(bs2); DSAPublicKeyParameters publicKey2 = (DSAPublicKeyParameters) PublicKeyFactory.createKey(bs); // test via signing byte[] bytes = "hello, my name is inigo montoya".getBytes(); BigInteger[] signature = CryptoDSA.generateSignature(privateKey, new SecureRandom(entropySeed.getBytes()), bytes);/* ww w. j a v a 2 s . c o m*/ boolean verify1 = CryptoDSA.verifySignature(publicKey, bytes, signature); if (!verify1) { fail("failed signature verification"); } boolean verify2 = CryptoDSA.verifySignature(publicKey2, bytes, signature); if (!verify2) { fail("failed signature verification"); } // now reverse who signs what. BigInteger[] signatureB = CryptoDSA.generateSignature(privateKey2, new SecureRandom(entropySeed.getBytes()), bytes); boolean verifyB1 = CryptoDSA.verifySignature(publicKey, bytes, signatureB); if (!verifyB1) { fail("failed signature verification"); } boolean verifyB2 = CryptoDSA.verifySignature(publicKey2, bytes, signatureB); if (!verifyB2) { fail("failed signature verification"); } }
From source file:org.jruby.ext.openssl.impl.PKCS10Request.java
License:LGPL
public PublicKey getPublicKey() throws IOException { AsymmetricKeyParameter keyParams = PublicKeyFactory.createKey(publicKeyInfo); KeySpec keySpec = null;/* www. j a v a 2 s . c om*/ KeyFactory keyFact = null; try { if (keyParams instanceof RSAKeyParameters) { RSAKeyParameters rsa = (RSAKeyParameters) keyParams; keySpec = new RSAPublicKeySpec(rsa.getModulus(), rsa.getExponent()); keyFact = KeyFactory.getInstance("RSA"); } else if (keyParams instanceof DSAPublicKeyParameters) { DSAPublicKeyParameters dsa = (DSAPublicKeyParameters) keyParams; DSAParameters params = dsa.getParameters(); keySpec = new DSAPublicKeySpec(dsa.getY(), params.getP(), params.getQ(), params.getG()); keyFact = KeyFactory.getInstance("DSA"); } if (keySpec != null && keyFact != null) { return keyFact.generatePublic(keySpec); } } catch (NoSuchAlgorithmException e) { } catch (InvalidKeySpecException e) { } throw new IOException("Could not read public key"); }
From source file:org.xipki.commons.security.util.DSAParameterCache.java
License:Open Source License
public static DSAParameterSpec getNewDSAParameterSpec(final int plength, final int qlength, final SecureRandom random) { final int certainty = 80; SecureRandom tmpRandom = (random == null) ? new SecureRandom() : random; DSAParametersGenerator paramGen = new DSAParametersGenerator(new SHA512Digest()); DSAParameterGenerationParameters genParams = new DSAParameterGenerationParameters(plength, qlength, certainty, tmpRandom);//from w w w .j a va 2 s. c o m paramGen.init(genParams); DSAParameters dsaParams = paramGen.generateParameters(); return new DSAParameterSpec(dsaParams.getP(), dsaParams.getQ(), dsaParams.getG()); }
From source file:org.xipki.commons.security.util.KeyUtil.java
License:Open Source License
public static KeyPair generateDSAKeypair(final DSAParameters dsaParams, final SecureRandom random) throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException { DSAParameterSpec dsaParamSpec = new DSAParameterSpec(dsaParams.getP(), dsaParams.getQ(), dsaParams.getG()); KeyPairGenerator kpGen = getKeyPairGenerator("DSA"); synchronized (kpGen) { kpGen.initialize(dsaParamSpec, random); return kpGen.generateKeyPair(); }/* ww w. j av a2 s .c om*/ }
From source file:org.xipki.security.KeyUtil.java
License:Open Source License
public static KeyPair generateDSAKeypair(final int pLength, final int qLength, final int certainty) throws Exception { DSAParametersGenerator paramGen = new DSAParametersGenerator(new SHA512Digest()); DSAParameterGenerationParameters genParams = new DSAParameterGenerationParameters(pLength, qLength, certainty, new SecureRandom()); paramGen.init(genParams);// ww w . ja v a2 s .c o m DSAParameters dsaParams = paramGen.generateParameters(); KeyPairGenerator kpGen = KeyPairGenerator.getInstance("DSA", "BC"); DSAParameterSpec dsaParamSpec = new DSAParameterSpec(dsaParams.getP(), dsaParams.getQ(), dsaParams.getG()); kpGen.initialize(dsaParamSpec, new SecureRandom()); return kpGen.generateKeyPair(); }
From source file:org.xipki.security.p11.iaik.IaikP11Slot.java
License:Open Source License
private PrivateKeyAndPKInfo generateDSAKeyPair(final Session session, final int pLength, final int qLength, final byte[] id, final String label) throws Exception { DSAParametersGenerator paramGen = new DSAParametersGenerator(new SHA512Digest()); DSAParameterGenerationParameters genParams = new DSAParameterGenerationParameters(pLength, qLength, 80, new SecureRandom()); paramGen.init(genParams);/* w w w. j a va 2s.c o m*/ DSAParameters dsaParams = paramGen.generateParameters(); DSAPrivateKey privateKey = new DSAPrivateKey(); DSAPublicKey publicKey = new DSAPublicKey(); setKeyAttributes(id, label, PKCS11Constants.CKK_DSA, privateKey, publicKey); publicKey.getPrime().setByteArrayValue(dsaParams.getP().toByteArray()); publicKey.getSubprime().setByteArrayValue(dsaParams.getQ().toByteArray()); publicKey.getBase().setByteArrayValue(dsaParams.getG().toByteArray()); KeyPair kp = session.generateKeyPair(Mechanism.get(PKCS11Constants.CKM_DSA_KEY_PAIR_GEN), publicKey, privateKey); publicKey = (DSAPublicKey) kp.getPublicKey(); BigInteger value = new BigInteger(1, publicKey.getValue().getByteArrayValue()); ASN1EncodableVector v = new ASN1EncodableVector(); v.add(new ASN1Integer(dsaParams.getP())); v.add(new ASN1Integer(dsaParams.getQ())); v.add(new ASN1Integer(dsaParams.getG())); ASN1Sequence dssParams = new DERSequence(v); SubjectPublicKeyInfo pkInfo = new SubjectPublicKeyInfo( new AlgorithmIdentifier(X9ObjectIdentifiers.id_dsa, dssParams), new ASN1Integer(value)); return new PrivateKeyAndPKInfo((DSAPrivateKey) kp.getPrivateKey(), pkInfo); }
From source file:org.xwiki.crypto.internal.asymmetric.generator.BcDSAKeyParameterGenerator.java
License:Open Source License
@Override public KeyGenerationParameters generate(KeyParametersGenerationParameters parameters) { if (!(parameters instanceof DSAKeyParametersGenerationParameters)) { throw new IllegalArgumentException( "Invalid parameters for DSA key parameters generator: " + parameters.getClass().getName()); }/*from ww w . j av a 2s .c om*/ org.bouncycastle.crypto.params.DSAParameters dsaParams = getDsaParameters(random.get(), (DSAKeyParametersGenerationParameters) parameters); org.bouncycastle.crypto.params.DSAValidationParameters dsaValidParams = dsaParams.getValidationParameters(); return new DSAKeyGenerationParameters(dsaParams.getP(), dsaParams.getQ(), dsaParams.getG(), new DSAKeyValidationParameters(dsaValidParams.getSeed(), dsaValidParams.getCounter(), getUsage(dsaValidParams.getUsageIndex()))); }