Java tutorial
//package com.java2s; /* Copyright (c) Microsoft Open Technologies, Inc. All Rights Reserved Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT. See the Apache 2 License for the specific language governing permissions and limitations under the License. */ import java.security.*; public class Main { public final static String KeyTypeIdentifier = "RSA"; public final static int KeySizeInBits = 2048; /** * Generates a public/private key pair that meets Thali's security requirements * @return */ public static KeyPair GenerateThaliAcceptablePublicPrivateKeyPair() { KeyPairGenerator keyPairGenerator = null; try { keyPairGenerator = KeyPairGenerator.getInstance(KeyTypeIdentifier); // TODO: http://android-developers.blogspot.com/2013/08/some-securerandom-thoughts.html talks about security // failures in Android caused by improperly initialized RNGs. It would appear that this issue doesn't // apply to the latest version of Android. But obviously this is something that has to be further investigated // to make sure we are doing this correctly. keyPairGenerator.initialize(KeySizeInBits, new SecureRandom()); return keyPairGenerator.generateKeyPair(); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e.getMessage(), e); } } }