The generatePrivate() method of java.security.KeyPairGenerator class is used to generates a private key object from the provided key specification (key material).
Syntax:
public final PrivateKey generatePrivate(KeySpec keySpec)
throws InvalidKeySpecException
Parameters: This method takes keySpec(the specification (key material) of the private key) as a parameter.
Return Value: This method returns the private key.
Exception: This method throws InvalidKeySpecException if the given key specification is inappropriate for this key factory to produce a private key.
Below are the examples to illustrate the generatePrivate() method
Note: The following program will not run on online IDE
Example 1:
// Java program to demonstrate// generatePrivate() method  import java.security.*;import java.util.*;import java.security.spec.*;  public class GFG1 {    public static void main(String[] argv) throws Exception    {        try {              // creating the object of KeyPairGenerator            KeyPairGenerator kpg = KeyPairGenerator                                       .getInstance("DSA");              // initializing with 1024            kpg.initialize(1024);              // getting key pairs            // using generateKeyPair() method            KeyPair kp = kpg.genKeyPair();              // getting public key            PrivateKey prv = kp.getPrivate();              // getting byte data of private key            byte[] private KeyBytes = prv.getEncoded();              // creating keyspec object            EncodedKeySpec                private KeySpec                = new PKCS8EncodedKeySpec(private KeyBytes);              // creating object of keyfactory            KeyFactory keyFactory = KeyFactory.getInstance("DSA");              // generating private key from the provided key spec.            // using generatePrivate() method            PrivateKey private Key = keyFactory                                        .generatePrivate(private KeySpec);              // printing private key            System.out.println("PrivateKey : " + private Key);        }          catch (NoSuchAlgorithmException e) {              System.out.println("Exception thrown : " + e);        }        catch (ProviderException e) {              System.out.println("Exception thrown : " + e);        }    }} |
PrivateKey : sun.security.provider.DSAPrivateKey@fff96ed9
Example 2: For InvalidKeySpecException
// Java program to demonstrate// generatePrivate() method  import java.security.*;import java.util.*;import java.security.spec.*;  public class GFG1 {    public static void main(String[] argv) throws Exception    {        try {              // creating the object of KeyPairGenerator            KeyPairGenerator kpg = KeyPairGenerator                                       .getInstance("DSA");              // initializing with 1024            kpg.initialize(1024);              // getting key pairs            // using generateKeyPair() method            KeyPair kp = kpg.genKeyPair();              // getting public key            PrivateKey prv = kp.getPrivate();              // getting byte data of private key            byte[] private KeyBytes = prv.getEncoded();              // creating keyspec object            EncodedKeySpec                private KeySpec                = new X509EncodedKeySpec(private KeyBytes);              // creating object of keyfactory            KeyFactory keyFactory = KeyFactory.getInstance("DSA");              // generating private key from the provided key spec.            // using generatePrivate() method            PrivateKey private Key = keyFactory                                        .generatePrivate(private KeySpec);              // printing private key            System.out.println("Private Key : " + private Key);        }          catch (NoSuchAlgorithmException e) {              System.out.println("Exception thrown : " + e);        }        catch (ProviderException e) {              System.out.println("Exception thrown : " + e);        }        catch (InvalidKeySpecException e) {              System.out.println("Exception thrown : " + e);        }    }} |
Exception thrown : java.security.spec.InvalidKeySpecException: Inappropriate key specification
