Documentation
¶
Overview ¶
Ed25519 / X25519(Curve25519)封装,依赖 github.com/godaddy-x/eccrypto。
能力划分:
- Ed25519Object:HTTP、WebSocket、gRPC rpcx 的「外层」身份与签名(rpcx:s=SHA256(规范串),e=Ed25519(s),仅 P=0 明文)。
- X25519Object:Plan2 匿名通道,临时密钥 + ecc.EncryptX25519 混合加密。
- X25519RPCObject:静态 X25519(ECDH 共享密钥、EncryptX25519 载荷),供自建协议或扩展;当前 rpcx 包 CommonWorker 未使用。
Index ¶
- func PrintEd25519Base64()
- type Cipher
- type Ed25519Object
- func (self *Ed25519Object) CreateEd25519() error
- func (self *Ed25519Object) Decrypt(msg string, aad []byte) ([]byte, error)
- func (self *Ed25519Object) Encrypt(msg, aad []byte) (string, error)
- func (self *Ed25519Object) GetPrivateKey() (interface{}, string)
- func (self *Ed25519Object) GetPublicKey() (interface{}, string)
- func (self *Ed25519Object) LoadEd25519(b64 string) error
- func (self *Ed25519Object) Sign(msg []byte) ([]byte, error)
- func (self *Ed25519Object) Verify(msg, sign []byte) error
- type RsaObj
- func (self *RsaObj) CreateRsa1024() error
- func (self *RsaObj) CreateRsa2048() error
- func (self *RsaObj) CreateRsaFile(keyfile, pemfile string) error
- func (self *RsaObj) CreateRsaFileBase64(b ...int) error
- func (self *RsaObj) CreateRsaPemFile(pemfile string) error
- func (self *RsaObj) Decrypt(msg string, aad []byte) ([]byte, error)
- func (self *RsaObj) Encrypt(msg, aad []byte) (string, error)
- func (self *RsaObj) GetPrivateKey() (interface{}, string)
- func (self *RsaObj) GetPublicKey() (interface{}, string)
- func (self *RsaObj) LoadRsaFile(filePath string) error
- func (self *RsaObj) LoadRsaKeyFileBase64(fileBase64 string) error
- func (self *RsaObj) LoadRsaPemFile(filePath string) error
- func (self *RsaObj) LoadRsaPemFileBase64(fileBase64 string) error
- func (self *RsaObj) Sign(msg []byte) ([]byte, error)
- func (self *RsaObj) Verify(msg, sign []byte) error
- type X25519Object
- func (self *X25519Object) CreateX25519() error
- func (self *X25519Object) Decrypt(msg string, aad []byte) ([]byte, error)
- func (self *X25519Object) Encrypt(msg, aad []byte) (string, error)
- func (self *X25519Object) GetPrivateKey() (interface{}, string)
- func (self *X25519Object) GetPublicKey() (interface{}, string)
- func (self *X25519Object) LoadX25519PrivateFromBase64(b64 string) error
- func (self *X25519Object) SetPeerPublicKeyForEncrypt(peer *ecdh.PublicKey)
- func (self *X25519Object) Sign(msg []byte) ([]byte, error)
- func (self *X25519Object) Verify(msg, sign []byte) error
- type X25519RPCObject
- func (o *X25519RPCObject) Decrypt(msg string, aad []byte) ([]byte, error)
- func (o *X25519RPCObject) Encrypt(msg, aad []byte) (string, error)
- func (o *X25519RPCObject) GetPrivateKey() (interface{}, string)
- func (o *X25519RPCObject) GetPublicKey() (interface{}, string)
- func (o *X25519RPCObject) RPCXCacheKeyBytes() []byte
- func (o *X25519RPCObject) RPCXDecryptPayload(ciphertext, additionalData []byte) ([]byte, error)
- func (o *X25519RPCObject) RPCXEncryptPayload(plaintext, additionalData []byte) ([]byte, error)
- func (o *X25519RPCObject) RPCXSharedSecret() ([]byte, error)
- func (o *X25519RPCObject) Sign(msg []byte) ([]byte, error)
- func (o *X25519RPCObject) Verify(msg, sign []byte) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func PrintEd25519Base64 ¶ added in v1.1.10
func PrintEd25519Base64()
PrintEd25519Base64 本地快速打印一对 Base64 Ed25519 密钥(调试用)
Types ¶
type Ed25519Object ¶ added in v1.1.10
type Ed25519Object struct {
PrivateKeyBase64 string
PublicKeyBase64 string
// contains filtered or unexported fields
}
Ed25519Object 双向身份:Sign 用本端私钥,Verify 用对端公钥(CreateEd25519WithBase64 镜像配置时 PublicKeyBase64 字段存对端公钥)。
func CreateEd25519WithBase64 ¶ added in v1.1.10
func CreateEd25519WithBase64(prkB64, peerPubB64 string) (*Ed25519Object, error)
CreateEd25519WithBase64 按「本端私钥 + 对端公钥」加载身份(Sign/Verify)。
用途:HTTP、WebSocket 外层签名;gRPC rpcx.AddCipher 同样注册本类型(与 X25519 / X25519RPCObject 独立)。 镜像:服务端(服务端私钥, 客户端公钥),客户端(客户端私钥, 服务端公钥)。
func (*Ed25519Object) CreateEd25519 ¶ added in v1.1.10
func (self *Ed25519Object) CreateEd25519() error
func (*Ed25519Object) Decrypt ¶ added in v1.1.10
func (self *Ed25519Object) Decrypt(msg string, aad []byte) ([]byte, error)
func (*Ed25519Object) Encrypt ¶ added in v1.1.10
func (self *Ed25519Object) Encrypt(msg, aad []byte) (string, error)
func (*Ed25519Object) GetPrivateKey ¶ added in v1.1.10
func (self *Ed25519Object) GetPrivateKey() (interface{}, string)
func (*Ed25519Object) GetPublicKey ¶ added in v1.1.10
func (self *Ed25519Object) GetPublicKey() (interface{}, string)
func (*Ed25519Object) LoadEd25519 ¶ added in v1.1.10
func (self *Ed25519Object) LoadEd25519(b64 string) error
func (*Ed25519Object) Sign ¶ added in v1.1.10
func (self *Ed25519Object) Sign(msg []byte) ([]byte, error)
func (*Ed25519Object) Verify ¶ added in v1.1.10
func (self *Ed25519Object) Verify(msg, sign []byte) error
type RsaObj ¶
type RsaObj struct {
// 16字节string字段组
PrivateKeyBase64 string
PublicKeyBase64 string
// contains filtered or unexported fields
}
func (*RsaObj) CreateRsa1024 ¶
func (*RsaObj) CreateRsa2048 ¶
func (*RsaObj) CreateRsaFile ¶
func (*RsaObj) CreateRsaFileBase64 ¶
func (*RsaObj) CreateRsaPemFile ¶
func (*RsaObj) GetPrivateKey ¶
func (*RsaObj) GetPublicKey ¶
func (*RsaObj) LoadRsaFile ¶
func (*RsaObj) LoadRsaKeyFileBase64 ¶
func (*RsaObj) LoadRsaPemFile ¶
func (*RsaObj) LoadRsaPemFileBase64 ¶
type X25519Object ¶ added in v1.1.10
type X25519Object struct {
PrivateKeyBase64 string
PublicKeyBase64 string
// contains filtered or unexported fields
}
X25519Object 匿名通道(Plan2)使用的临时 X25519 密钥对,基于标准库 crypto/ecdh(Curve25519)。
func (*X25519Object) CreateX25519 ¶ added in v1.1.10
func (self *X25519Object) CreateX25519() error
CreateX25519 生成新的 X25519 密钥对,并填充 PublicKeyBase64。
func (*X25519Object) Decrypt ¶ added in v1.1.10
func (self *X25519Object) Decrypt(msg string, aad []byte) ([]byte, error)
func (*X25519Object) Encrypt ¶ added in v1.1.10
func (self *X25519Object) Encrypt(msg, aad []byte) (string, error)
func (*X25519Object) GetPrivateKey ¶ added in v1.1.10
func (self *X25519Object) GetPrivateKey() (interface{}, string)
func (*X25519Object) GetPublicKey ¶ added in v1.1.10
func (self *X25519Object) GetPublicKey() (interface{}, string)
func (*X25519Object) LoadX25519PrivateFromBase64 ¶ added in v1.1.10
func (self *X25519Object) LoadX25519PrivateFromBase64(b64 string) error
LoadX25519PrivateFromBase64 从 Base64 加载 X25519 私钥,并推导公钥与 PublicKeyBase64。
func (*X25519Object) SetPeerPublicKeyForEncrypt ¶ added in v1.1.10
func (self *X25519Object) SetPeerPublicKeyForEncrypt(peer *ecdh.PublicKey)
SetPeerPublicKeyForEncrypt 设置接收方 X25519 公钥;调用 Encrypt 前必须设置。 使用 ecc.EncryptX25519(nil, …) 路径,避免 eccrypto 在加密后清零传入的私钥导致本对象私钥损坏。
func (*X25519Object) Sign ¶ added in v1.1.10
func (self *X25519Object) Sign(msg []byte) ([]byte, error)
func (*X25519Object) Verify ¶ added in v1.1.10
func (self *X25519Object) Verify(msg, sign []byte) error
type X25519RPCObject ¶ added in v1.1.10
type X25519RPCObject struct {
PrivateKeyBase64 string
PublicKeyBase64 string
PeerPublicKeyB64 string
// contains filtered or unexported fields
}
X25519RPCObject 本端 X25519 私钥 + 对端 X25519 公钥:可 ECDH 出共享密钥(RPCXSharedSecret), 并可对业务载荷做 ecc.EncryptX25519 / DecryptX25519。 注意:当前 github.com/godaddy-x/freego/rpcx 的 CommonWorker 使用 Ed25519Object + SHA256(s)+e,不注册本类型。
func (*X25519RPCObject) Decrypt ¶ added in v1.1.10
func (o *X25519RPCObject) Decrypt(msg string, aad []byte) ([]byte, error)
func (*X25519RPCObject) Encrypt ¶ added in v1.1.10
func (o *X25519RPCObject) Encrypt(msg, aad []byte) (string, error)
func (*X25519RPCObject) GetPrivateKey ¶ added in v1.1.10
func (o *X25519RPCObject) GetPrivateKey() (interface{}, string)
func (*X25519RPCObject) GetPublicKey ¶ added in v1.1.10
func (o *X25519RPCObject) GetPublicKey() (interface{}, string)
func (*X25519RPCObject) RPCXCacheKeyBytes ¶ added in v1.1.10
func (o *X25519RPCObject) RPCXCacheKeyBytes() []byte
RPCXCacheKeyBytes 对端 X25519 公钥 32 字节,用于本地缓存索引。
func (*X25519RPCObject) RPCXDecryptPayload ¶ added in v1.1.10
func (o *X25519RPCObject) RPCXDecryptPayload(ciphertext, additionalData []byte) ([]byte, error)
RPCXDecryptPayload 解密 RPCXEncryptPayload 密文(本端私钥)。
func (*X25519RPCObject) RPCXEncryptPayload ¶ added in v1.1.10
func (o *X25519RPCObject) RPCXEncryptPayload(plaintext, additionalData []byte) ([]byte, error)
RPCXEncryptPayload ecc.EncryptX25519(nil, 对端公钥, …),与 RPCXDecryptPayload 配对。
func (*X25519RPCObject) RPCXSharedSecret ¶ added in v1.1.10
func (o *X25519RPCObject) RPCXSharedSecret() ([]byte, error)
RPCXSharedSecret 返回共享秘密的副本(调用方可安全 ClearData,不影响对象内缓存)。
func (*X25519RPCObject) Sign ¶ added in v1.1.10
func (o *X25519RPCObject) Sign(msg []byte) ([]byte, error)
func (*X25519RPCObject) Verify ¶ added in v1.1.10
func (o *X25519RPCObject) Verify(msg, sign []byte) error