Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/*
 * 
 * Copyright (C) 2015 Orange Labs
 * 
 * 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
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * 
 */

import java.math.BigInteger;

import java.security.KeyFactory;
import java.security.KeyPair;

import java.security.SecureRandom;

import java.security.spec.RSAPrivateKeySpec;
import java.security.spec.RSAPublicKeySpec;

import org.json.JSONArray;
import org.json.JSONObject;
import android.util.Base64;

public class Main {
    public static String getJwkPrivate(KeyPair kp) {
        try {
            JSONObject jk = new JSONObject();
            jk.put("kty", "RSA");
            // generate random kid 
            SecureRandom random = new SecureRandom();
            String kid = new BigInteger(130, random).toString(32);
            jk.put("kid", kid);
            jk.put("e", "AQAB");

            KeyFactory kfactory = KeyFactory.getInstance("RSA");

            RSAPrivateKeySpec privkspec = (RSAPrivateKeySpec) kfactory.getKeySpec(kp.getPrivate(),
                    RSAPrivateKeySpec.class);
            RSAPublicKeySpec pubkspec = (RSAPublicKeySpec) kfactory.getKeySpec(kp.getPublic(),
                    RSAPublicKeySpec.class);

            // Log.d("getJwkPrivate n",pubkspec.getPublicExponent().toString());
            // Log.d("getJwkPrivate d",privkspec.getPrivateExponent().toString());

            jk.put("n", encodeB64(pubkspec.getModulus().toByteArray()));
            jk.put("d", encodeB64(privkspec.getPrivateExponent().toByteArray()));
            JSONArray ja = new JSONArray();
            ja.put(jk);
            JSONObject jo = new JSONObject();
            jo.put("keys", ja);

            return jo.toString();

        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    static String encodeB64(byte[] bytes) {
        try {
            return Base64.encodeToString(bytes, Base64.URL_SAFE | Base64.NO_PADDING | Base64.NO_WRAP);
        } catch (Exception e) {
        }
        return null;
    }
}