package com.sunyard.ssp.modules.sdk;

import com.sunyard.ssp.UnionMessage;

/**
 * @author:tsz
 * @date:2020/5/21
 * @description:
 */
public interface KeyLifecycleService {
    /**
     * @param : sln 密钥方案
     * @param : tmpl 密钥模板
     * @param : startTime 开始时间
     * @param : period 有效期
     * @return :
     * @date :2020/05/21 14:50
     * @description : 根据密钥方案密钥模板批量生成密钥
     */
    Long genBatchKeyByTmpl(String sln, String tmpl, Long startTime, Long period);

    /**
     * @param : sln 密钥方案
     * @param : tmpl 密钥模板
     * @return :
     * @date :2020/05/21 14:50
     * @description : 根据密钥方案密钥模板批量更新密钥
     */
    Long genBatchKeyByTmpl(String sln, String tmpl);

    /**
     * @param : sln 密钥方案
     * @param : tmpl 密钥模板
     * @param : node 密钥节点
     * @param : startTime 开始时间
     * @param : period 有效期
     * @return :
     * @date :2020/05/21 14:52
     * @description : 根据密钥方案密钥模板生成指定节点密钥
     */
    UnionMessage genKeyByTmpl(String sln, String tmpl, String node, Long startTime, Long period);

    /**
     * @param : sln 密钥方案
     * @param : tmpl 密钥模板
     * @param : node 密钥节点
     * @return :
     * @date :2020/05/21 14:52
     * @description : 根据密钥方案密钥模板 更新指定节点密钥
     */
    UnionMessage genKeyByTmpl(String sln, String tmpl, String node);

    /**
     * @param :
     * @return :
     * @date :2020/05/21 15:06
     * @description : 工作密钥更新 web暂时不需要
     */
    UnionMessage applyKeyByZMK(String zmk, String node, String tmpl);

    /**
     * @param :
     * @return :
     * @date :2020/05/21 15:06
     * @description : 保护密钥更新 web暂时不需要
     */
    UnionMessage applyZMKByZMK(String zmk, String tmpl);

    /**
    *@date   :2020/05/21 15:07
    *@description : 保护密钥回滚
    * @param :
    * @return :
    */
    void rollbackZMK(String zmk);

    /**
    *@date   :2020/05/21 15:07
    *@description : 密钥作废
    * @param : key 完整密钥名称
    * @return :
    */
    void disableKeyNow(String key);
}
