crypto

package
v1.1.19 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 13, 2026 License: MIT Imports: 16 Imported by: 1

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

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 Cipher

type Cipher interface {
	GetPrivateKey() (interface{}, string)
	GetPublicKey() (interface{}, string)
	Encrypt(msg, aad []byte) (string, error)
	Decrypt(msg string, aad []byte) ([]byte, error)
	Sign(msg []byte) ([]byte, error)
	Verify(msg, sign []byte) error
}

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 (self *RsaObj) CreateRsa1024() error

func (*RsaObj) CreateRsa2048

func (self *RsaObj) CreateRsa2048() error

func (*RsaObj) CreateRsaFile

func (self *RsaObj) CreateRsaFile(keyfile, pemfile string) error

func (*RsaObj) CreateRsaFileBase64

func (self *RsaObj) CreateRsaFileBase64(b ...int) error

func (*RsaObj) CreateRsaPemFile

func (self *RsaObj) CreateRsaPemFile(pemfile string) error

func (*RsaObj) Decrypt

func (self *RsaObj) Decrypt(msg string, aad []byte) ([]byte, error)

func (*RsaObj) Encrypt

func (self *RsaObj) Encrypt(msg, aad []byte) (string, error)

func (*RsaObj) GetPrivateKey

func (self *RsaObj) GetPrivateKey() (interface{}, string)

func (*RsaObj) GetPublicKey

func (self *RsaObj) GetPublicKey() (interface{}, string)

func (*RsaObj) LoadRsaFile

func (self *RsaObj) LoadRsaFile(filePath string) error

func (*RsaObj) LoadRsaKeyFileBase64

func (self *RsaObj) LoadRsaKeyFileBase64(fileBase64 string) error

func (*RsaObj) LoadRsaPemFile

func (self *RsaObj) LoadRsaPemFile(filePath string) error

func (*RsaObj) LoadRsaPemFileBase64

func (self *RsaObj) LoadRsaPemFileBase64(fileBase64 string) error

func (*RsaObj) Sign

func (self *RsaObj) Sign(msg []byte) ([]byte, error)

func (*RsaObj) Verify

func (self *RsaObj) Verify(msg, sign []byte) error

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL