Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//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);
        }
    }
}