package tech.easyflow.auth.service;

import com.alibaba.fastjson2.JSONObject;
import com.mybatisflex.core.service.IService;
import tech.easyflow.auth.entity.AuthCredentialKey;
import tech.easyflow.auth.entity.CredentialKeyVO;
import tech.easyflow.auth.entity.EncryptedCredentialDTO;

/**
 * 认证传输密钥服务。
 */
public interface AuthCredentialKeyService extends IService<AuthCredentialKey> {

    /**
     * 获取当前前端加密材料。
     *
     * @return 公钥、指纹、nonce 和轮换链
     */
    CredentialKeyVO getCurrentCredentialKey();

    /**
     * 解密前端加密信封。
     *
     * @param encryptedCredential 加密信封
     * @return 明文 JSON 载荷
     */
    JSONObject decryptPayload(EncryptedCredentialDTO encryptedCredential);

    /**
     * 触发一次密钥轮换。
     *
     * @param emergency 是否紧急吊销旧密钥
     */
    void rotate(boolean emergency);

    /**
     * 自动轮换与旧密钥清理。
     */
    void maintainKeyRing();
}
