package com.project.whatsappchatbot.security.jwt;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;

public class RsaKeyUtil {

//    public static PrivateKey getPrivateKey(InputStream inputStream) throws Exception {
//        String key = Files.readString(Paths.get(path))
//                .replace("-----BEGIN PRIVATE KEY-----", "")
//                .replace("-----END PRIVATE KEY-----", "")
//                .replaceAll("\\s", "");
//        byte[] decoded = Base64.getDecoder().decode(key);
//        return KeyFactory.getInstance("RSA")
//                .generatePrivate(new PKCS8EncodedKeySpec(decoded));
//    }

  
    
	 public static PrivateKey getPrivateKey(InputStream inputStream) throws Exception {
	        byte[] keyBytes = inputStream.readAllBytes();
	        String privateKeyPem = new String(keyBytes, StandardCharsets.UTF_8)
	                .replace("-----BEGIN PRIVATE KEY-----", "")
	                .replace("-----END PRIVATE KEY-----", "")
	                .replaceAll("\\s+", "");

	        byte[] decoded = Base64.getDecoder().decode(privateKeyPem);
	        PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(decoded);
	        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
	        return keyFactory.generatePrivate(keySpec);
	    }

	    public static PublicKey getPublicKey(InputStream inputStream) throws Exception {
	        byte[] keyBytes = inputStream.readAllBytes();
	        String publicKeyPem = new String(keyBytes, StandardCharsets.UTF_8)
	                .replace("-----BEGIN PUBLIC KEY-----", "")
	                .replace("-----END PUBLIC KEY-----", "")
	                .replaceAll("\\s+", "");

	        byte[] decoded = Base64.getDecoder().decode(publicKeyPem);
	        X509EncodedKeySpec keySpec = new X509EncodedKeySpec(decoded);
	        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
	        return keyFactory.generatePublic(keySpec);
	    }

}