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