package cn.hztech.sdk.crypto.envelope;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

/**
 * 统一国密报文包
 *
 * 报文结构：
 * - appId: 发送方应用ID
 * - version: 协议版本号（"1.0"）
 * - timestamp: 请求时间戳（毫秒）
 * - nonce: 随机数（UUID）
 * - encryptKey: SM2加密后的SM4密钥（Base64编码）
 * - encryptData: SM4加密后的业务数据（Base64编码）
 * - sign: SM2签名（Base64编码）
 */
@Data
public class GmPacket {

    /**
     * 发送方应用ID
     */
    @JsonProperty("appId")
    private String appId;

    /**
     * 协议版本号
     */
    @JsonProperty("version")
    private String version;

    /**
     * 请求时间戳（毫秒）
     */
    @JsonProperty("timestamp")
    private Long timestamp;

    /**
     * 随机数
     */
    @JsonProperty("nonce")
    private String nonce;

    /**
     * [数字信封] SM2加密后的SM4密钥
     */
    @JsonProperty("encryptKey")
    private String encryptKey;

    /**
     * [数据信封] SM4加密后的业务数据
     */
    @JsonProperty("encryptData")
    private String encryptData;

    /**
     * [防抵赖] SM2签名
     */
    @JsonProperty("sign")
    private String sign;
}
