import { JSEncrypt } from 'jsencrypt';

/**
 * RSA 加密工具函数
 * 使用 jsencrypt 库进行 RSA 加密
 */

/**
 * 使用 RSA 公钥加密数据
 * @param data 要加密的明文数据
 * @param publicKey RSA 公钥（Base64 编码的 PEM 格式）
 * @returns 加密后的密文（Base64 编码）
 */
export function rsaEncrypt(data: string, publicKey: string): string {
  const encrypt = new JSEncrypt();
  encrypt.setPublicKey(publicKey);
  const result = encrypt.encrypt(data);
  return result || '';
}

/**
 * RSA 公钥响应
 */
export interface PublicKeyResponse {
  publicKey: string;
  keyVersion: number;
}

/**
 * 加密登录参数
 */
export interface EncryptedLoginParams {
  username: string;
  encryptedPassword: string;
  role: string;
  keyVersion?: number;
}
