/** * Make a DSA public key out of a public key and three parameters. * The p, q, and g parameters may be null, but if so, parameters will need * to be supplied from some other source before this key can be used in * cryptographic operations. PKIX RFC2459bis explicitly allows DSA public * keys without parameters, where the parameters are provided in the * issuer's DSA public key. * * @param y the actual key bits * @param p DSA parameter p, may be null if all of p, q, and g are null. * @param q DSA parameter q, may be null if all of p, q, and g are null. * @param g DSA parameter g, may be null if all of p, q, and g are null. */ public DSAPublicKey(BigInteger y, BigInteger p, BigInteger q, BigInteger g) throws InvalidKeyException { this.y = y; algid = new AlgIdDSA(p, q, g); try { byte[] keyArray = new DerValue(DerValue.tag_Integer, y.toByteArray()).toByteArray(); setKey(new BitArray(keyArray.length*8, keyArray)); encode(); } catch (IOException e) { throw new InvalidKeyException("could not DER encode y: " + e.getMessage()); } }
/** * Make a DSA private key out of a private key and three parameters. */ public DSAPrivateKey(BigInteger x, BigInteger p, BigInteger q, BigInteger g) throws InvalidKeyException { this.x = x; algid = new AlgIdDSA(p, q, g); try { key = new DerValue(DerValue.tag_Integer, x.toByteArray()).toByteArray(); encode(); } catch (IOException e) { InvalidKeyException ike = new InvalidKeyException( "could not DER encode x: " + e.getMessage()); ike.initCause(e); throw ike; } }
/** * Make a DSA public key out of a public key and three parameters. * The p, q, and g parameters may be null, but if so, parameters will need * to be supplied from some other source before this key can be used in * cryptographic operations. PKIX RFC2459bis explicitly allows DSA public * keys without parameters, where the parameters are provided in the * issuer's DSA public key. * * @param y the actual key bits * @param p DSA parameter p, may be null if all of p, q, and g are null. * @param q DSA parameter q, may be null if all of p, q, and g are null. * @param g DSA parameter g, may be null if all of p, q, and g are null. */ public DSAPublicKey(BigInteger y, BigInteger p, BigInteger q, BigInteger g) throws InvalidKeyException { this.y = y; algid = new AlgIdDSA(p, q, g); try { key = new DerValue(DerValue.tag_Integer, y.toByteArray()).toByteArray(); encode(); } catch (IOException e) { throw new InvalidKeyException("could not DER encode y: " + e.getMessage()); } }