title: RSA key pairs generating using bouncy castle. Making code runnable from java program
body: <p>I am using a Java code that I found that generates a public and a private key via the bouncy castle library.  My problem is implementing it into code runnable by my android device.  My code does not display the RSA keys like I programmed it to and through most of my troubleshooting I am still unable to make my code do as I ask, although I get no errors. My suspicion is the way I put all of my code into a <code>try</code>/<code>catch</code> block but I am not really sure. 
  Edit: Lower in code</p>
  
  <p>This is the Java class that generates the RSA public and private key. (It works)</p>
  
  <pre><code>public class ClassMain {
      public static void main(String[]args) throws Exception {
          String ST = "Ebenezersawesome";
          byte[] plainText = "ST".getBytes("UTF8");
          // Generating RSA Key
          System.out.println("\nStart generating RSA key");
          KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
          keyGen.initialize(4096);
          KeyPair key = keyGen.generateKeyPair();
          System.out.println("Finish generating RSA key");
          //
          // Creates an RSA Cipher object (specifying the algorithm, mode, and
          // padding).
          Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
          //
          // Print the provider information
          System.out.println("\n" + cipher.getProvider().getInfo());
          System.out.println("\nStart encryption");
          //
          // Initializes the Cipher object.
          cipher.init(Cipher.ENCRYPT_MODE, key.getPublic());
          //
          // Encrypt the plaintext using the public key
          byte[] cipherText = cipher.doFinal(plainText);
          System.out.println("Finish encryption: ");
          System.out.println(new String(cipherText, "UTF8"));
          System.out.println("\nStart decryption");
          //
          // Initializes the Cipher object.
          cipher.init(Cipher.DECRYPT_MODE, key.getPrivate());
          //
          // Decrypt the ciphertext using the private key
          byte[] newPlainText = cipher.doFinal(cipherText);
          System.out.println("Finish decryption: ");
          System.out.println(new String(newPlainText, "UTF8"));
      }
  }
  </code></pre>
  
  <p>This is my attempt at trying to display the code in an android application.
  Edit: The code works but for some reason my try/catch stops and does not generate code in tv3.</p>
  
  <pre><code>  TextView tv1;
      TextView tv2;
      TextView tv3;
      Button convert;
      String publicKeyFilename = null;
      String privateKeyFilename = null;
      String ST = "Ebenezersawesome";
  
      @Override public void onCreate(Bundle savedInstanceState)
      {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
          Log.d("Ebz", "Made it to onCreate");
          tv1 = (TextView) findViewById(R.id.tv1);
          tv2 = (TextView) findViewById(R.id.tv2);
          tv3 = (TextView) findViewById(R.id.tv3);
          convert = (Button) findViewById(R.id.button1);
  
          // tv2.setText(ST);
          convert.setOnClickListener(new OnClickListener() {
              public void onClick(View v) {
                  Log.d("Ebz", "Made it to onCreate");
                  try {
                      byte[] plainText = "ST".getBytes("UTF8");
                      Log.d("Ebz", "made it to Try Block");
                      KeyPairGenerator keyGen = KeyPairGenerator
                              .getInstance("RSA");
                      keyGen.initialize(2048);
                      KeyPair key = keyGen.generateKeyPair();
                      Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
                      tv1.setText(cipher.getProvider().getInfo().toString());
                      Log.d("Ebz", "Made it passed tv1");
                      //tv1.setText(ST);
                      cipher.init(Cipher.ENCRYPT_MODE, key.getPublic());
                      byte[] cipherText = cipher.doFinal(plainText);
                      tv2.setText(new String(cipherText, "UTF8").toString());
                      Log.d("Ebz", "Made it passed tv2");
                      // tv2.setText(ST);
                      byte[] newPlainText = cipher.doFinal(cipherText);
                       //tv3.setText(new String(newPlainText, "UTF8").toString());
                      // tv3.setText(ST);
                      Log.d("Ebz", "Made it passed tv3");
                  } catch (Exception e) {
                      System.out.println("error");
                  }
              }
          });
      }
  </code></pre>