feat: register simplified crypto capabilities to jsmod
This commit is contained in:
parent
0d17076c8a
commit
39f2708ec0
@ -1,5 +1,10 @@
|
||||
# Changelog: @go/crypto
|
||||
|
||||
## [v1.3.2] - 2026-05-30
|
||||
|
||||
### Added
|
||||
- **JSMOD 注册**:将核心加解密与 Hash 能力注册到 `jsmod`。提供极简的无状态 API,支持 AES (GCM/CBC), RSA (加解密/签名) 以及各类 Hash/HMAC 算法。
|
||||
|
||||
## [v1.1.2] - 2026-05-12
|
||||
|
||||
### Added
|
||||
|
||||
1
go.mod
1
go.mod
@ -5,6 +5,7 @@ go 1.25.0
|
||||
require (
|
||||
apigo.cc/go/cast v1.3.3
|
||||
apigo.cc/go/encoding v1.3.1
|
||||
apigo.cc/go/jsmod v1.0.0
|
||||
apigo.cc/go/safe v1.3.1
|
||||
golang.org/x/crypto v0.51.0
|
||||
)
|
||||
|
||||
2
go.sum
2
go.sum
@ -2,6 +2,8 @@ apigo.cc/go/cast v1.3.3 h1:aln5eDR5DZVWVzZ/y5SJh1gQNgWv2sT82I25NaO9g34=
|
||||
apigo.cc/go/cast v1.3.3/go.mod h1:lGlwImiOvHxG7buyMWhFzcdvQzmSaoKbmr7bcDfUpHk=
|
||||
apigo.cc/go/encoding v1.3.1 h1:y8O58KYAyulkThg1O2ji2BqjnFoSvk42sit9I3z+K7Y=
|
||||
apigo.cc/go/encoding v1.3.1/go.mod h1:xAJk5b83VZ31mXMTnyp0dfMoBKfT/AHDn0u+cQfojgY=
|
||||
apigo.cc/go/jsmod v1.0.0 h1:lVQMq0tCno4kbHlQ3j5wzsm+v24J+bznIoHxpton0pE=
|
||||
apigo.cc/go/jsmod v1.0.0/go.mod h1:bmyeZtOAP/j5am+YRnaiM89smysK24K7ebk0koFtsSw=
|
||||
apigo.cc/go/rand v1.3.1 h1:7FvsI6PtQ5XrWER0dTiLVo0p7GIxRidT/TBKhVy93j8=
|
||||
apigo.cc/go/rand v1.3.1/go.mod h1:mZ/4Soa3bk+XvDaqPWJuUe1bfEi4eThBj1XmEAuYxsk=
|
||||
apigo.cc/go/safe v1.3.1 h1:irTCqPAC97gGsX/Lw5AzLelDt1xXLEZIAaVhLELWe9Q=
|
||||
|
||||
105
js_export.go
Normal file
105
js_export.go
Normal file
@ -0,0 +1,105 @@
|
||||
package crypto
|
||||
|
||||
import (
|
||||
"apigo.cc/go/jsmod"
|
||||
)
|
||||
|
||||
func init() {
|
||||
jsmod.Register("crypto", map[string]any{
|
||||
// Hash
|
||||
"md5": MD5,
|
||||
"md5ToHex": MD5ToHex,
|
||||
"md5ToBase64": MD5ToBase64,
|
||||
"md5ToUrlBase64": MD5ToUrlBase64,
|
||||
"sha1": Sha1,
|
||||
"sha1ToHex": Sha1ToHex,
|
||||
"sha1ToBase64": Sha1ToBase64,
|
||||
"sha1ToUrlBase64": Sha1ToUrlBase64,
|
||||
"sha256": Sha256,
|
||||
"sha256ToHex": Sha256ToHex,
|
||||
"sha256ToBase64": Sha256ToBase64,
|
||||
"sha256ToUrlBase64": Sha256ToUrlBase64,
|
||||
"sha512": Sha512,
|
||||
"sha512ToHex": Sha512ToHex,
|
||||
"sha512ToBase64": Sha512ToBase64,
|
||||
"sha512ToUrlBase64": Sha512ToUrlBase64,
|
||||
|
||||
// HMAC
|
||||
"hmacMd5": HmacMD5,
|
||||
"hmacSha1": HmacSha1,
|
||||
"hmacSha256": HmacSha256,
|
||||
"hmacSha512": HmacSha512,
|
||||
|
||||
// Token
|
||||
"makeToken": MakeToken,
|
||||
|
||||
// AES GCM (Stateless)
|
||||
"encrypt": func(data, key, iv []byte) ([]byte, error) {
|
||||
s, err := NewAESGCMAndEraseKey(key, iv)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.EncryptBytes(data)
|
||||
},
|
||||
"decrypt": func(data, key, iv []byte) ([]byte, error) {
|
||||
s, err := NewAESGCMAndEraseKey(key, iv)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.DecryptBytes(data)
|
||||
},
|
||||
|
||||
// AES CBC (Stateless)
|
||||
"encryptCBC": func(data, key, iv []byte) ([]byte, error) {
|
||||
s, err := NewAESCBCAndEraseKey(key, iv)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.EncryptBytes(data)
|
||||
},
|
||||
"decryptCBC": func(data, key, iv []byte) ([]byte, error) {
|
||||
s, err := NewAESCBCAndEraseKey(key, iv)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.DecryptBytes(data)
|
||||
},
|
||||
|
||||
// RSA (Stateless)
|
||||
"rsaEncrypt": func(data, pubKey []byte) ([]byte, error) {
|
||||
a, err := NewRSAAndEraseKey(nil, pubKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return a.EncryptBytes(data)
|
||||
},
|
||||
"rsaDecrypt": func(data, privKey []byte) ([]byte, error) {
|
||||
a, err := NewRSAAndEraseKey(privKey, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return a.DecryptBytes(data)
|
||||
},
|
||||
"rsaSign": func(data, privKey []byte) ([]byte, error) {
|
||||
a, err := NewRSAAndEraseKey(privKey, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return a.Sign(data)
|
||||
},
|
||||
"rsaVerify": func(data, sig, pubKey []byte) (bool, error) {
|
||||
a, err := NewRSAAndEraseKey(nil, pubKey)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
return a.Verify(data, sig)
|
||||
},
|
||||
|
||||
// Key Generation
|
||||
"generateRSAKeyPair": GenerateRSAKeyPair,
|
||||
"generateECDSAKeyPair": GenerateECDSAKeyPair,
|
||||
"generateEd25519KeyPair": GenerateEd25519KeyPair,
|
||||
"generateX25519KeyPair": GenerateX25519KeyPair,
|
||||
"deriveKey": DeriveKey,
|
||||
})
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user