package cn.skcks.matrix.v2.services.jwt;

import cn.skcks.matrix.v2.model.jwt.dto.Claims;
import org.springframework.stereotype.Service;

import java.security.KeyPair;
import java.security.PrivateKey;
import java.security.PublicKey;

@Service
@SuppressWarnings({"unused"})
public interface JwtService {
    /**
     * 初始化
     */
    void init();

    /**
     * 获取公私密钥对
     * @return 公私密钥对
     */
    KeyPair getKeyPair();

    /**
     * 获取公钥
     * @return 公钥
     */
    PublicKey getPublicKey();

    /**
     * 获取私钥
     * @return 私钥
     */
    PrivateKey getPrivateKey();

    /**
     * 重新加载
     */
    void reload();

    String generateToken(Claims claims);

    boolean verifyToken(String token);

    Claims parseToken(String token);
}
