package com.ruoyi.security.service;

import java.util.List;

import javax.crypto.SecretKey;

/**
 * 密钥管理服务接口
 * 提供密钥生命周期管理和HSM集成
 * 
 * @author ruoyi
 */
public interface KeyManagementService {
    
    /**
     * 创建新的加密密钥
     * 
     * @param keyType 密钥类型
     * @return 密钥ID
     */
    String createKey(String keyType);
    
    /**
     * 获取密钥
     * 
     * @param keyId 密钥ID
     * @return 密钥对象
     */
    SecretKey getKey(String keyId);
    
    /**
     * 删除密钥
     * 
     * @param keyId 密钥ID
     * @return 删除结果
     */
    boolean deleteKey(String keyId);
    
    /**
     * 列出所有密钥
     * 
     * @return 密钥ID列表
     */
    List<String> listKeys();
    
    /**
     * 启用密钥
     * 
     * @param keyId 密钥ID
     * @return 操作结果
     */
    boolean enableKey(String keyId);
    
    /**
     * 禁用密钥
     * 
     * @param keyId 密钥ID
     * @return 操作结果
     */
    boolean disableKey(String keyId);
    
    /**
     * 检查密钥状态
     * 
     * @param keyId 密钥ID
     * @return 密钥状态
     */
    String getKeyStatus(String keyId);
    
    /**
     * 密钥轮换
     * 
     * @param oldKeyId 旧密钥ID
     * @return 新密钥ID
     */
    String rotateKey(String oldKeyId);
    
    /**
     * 备份密钥到HSM
     * 
     * @param keyId 密钥ID
     * @return 备份结果
     */
    boolean backupToHsm(String keyId);
    
    /**
     * 从HSM恢复密钥
     * 
     * @param keyId 密钥ID
     * @return 恢复结果
     */
    boolean restoreFromHsm(String keyId);
}