51 lines
1.7 KiB
Go
51 lines
1.7 KiB
Go
package crypto
|
||
|
||
import "time"
|
||
|
||
// Encryptor 加密器接口
|
||
type Encryptor interface {
|
||
// Encrypt 加密数据
|
||
Encrypt(plaintext []byte) ([]byte, error)
|
||
|
||
// Decrypt 解密数据
|
||
Decrypt(ciphertext []byte) ([]byte, error)
|
||
|
||
// Name 返回加密算法名称
|
||
Name() string
|
||
}
|
||
|
||
// Signer 签名器接口
|
||
type Signer interface {
|
||
// Sign 生成签名
|
||
Sign(data []byte) ([]byte, error)
|
||
|
||
// Verify 验证签名
|
||
Verify(data, signature []byte) error
|
||
}
|
||
|
||
type Config struct {
|
||
SecretKey string `yaml:"secret_key" json:"secret_key"` // AES对称加密密钥
|
||
SignKey string `yaml:"sign_key" json:"sign_key"` // 签名密钥
|
||
PublicKey string `yaml:"public_key" json:"public_key"` // RSA公钥
|
||
PrivateKey string `yaml:"private_key" json:"private_key"` // RSA私钥
|
||
TimestampWindow time.Duration `yaml:"timestamp_window" json:"timestamp_window"` // 时间戳允许的时间窗口
|
||
EnableTimestamp bool `yaml:"enable_timestamp" json:"enable_timestamp"` // 是否启用时间戳验证
|
||
EnableSignature bool `yaml:"enable_signature" json:"enable_signature"` // 是否启用签名
|
||
}
|
||
|
||
type EncryptedRequest struct {
|
||
Data string `json:"data"` // 加密后的数据(Base64)
|
||
Signature string `json:"signature"` // 签名(Base64)
|
||
Timestamp int64 `json:"timestamp"` // 时间戳
|
||
RequestID string `json:"request_id"` // 请求ID
|
||
Algorithm string `json:"algorithm"` // 加密算法
|
||
}
|
||
|
||
// EncryptedResponse 加密响应体
|
||
type EncryptedResponse struct {
|
||
Data string `json:"data"`
|
||
Signature string `json:"signature"`
|
||
Timestamp int64 `json:"timestamp"`
|
||
RequestID string `json:"request_id"`
|
||
}
|