package fr.uga.miashs.projetqcm.util;

import java.io.IOException;
import java.io.Writer;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;

public class KeyGenerator {

    public static void main(String args[]) {
        try {
            KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
            kpg.initialize(2048);
            KeyPair kp = kpg.generateKeyPair();

            Base64.Encoder encoder = Base64.getMimeEncoder();

            Path privatePath = Paths.get("privateKey.pem");
            Writer pw = Files.newBufferedWriter(privatePath,StandardOpenOption.CREATE,StandardOpenOption.TRUNCATE_EXISTING);
            pw.write("-----BEGIN PRIVATE KEY-----\n");
            pw.write(encoder.encodeToString(kp.getPrivate().getEncoded()));
            pw.write("\n-----END PRIVATE KEY-----\n");
            pw.close();


            Path publicPath = Paths.get("publicKey.pem");
            pw = Files.newBufferedWriter(publicPath,StandardOpenOption.CREATE,StandardOpenOption.TRUNCATE_EXISTING);
            pw.write("-----BEGIN PUBLIC KEY-----\n");
            pw.write(encoder.encodeToString(kp.getPublic().getEncoded()));
            pw.write("\n-----END PUBLIC KEY-----\n");
            pw.close();

        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
