Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
46f9b1f6d9 |
@ -1,5 +1,11 @@
|
||||
# Changelog: @go/crypto-sm
|
||||
|
||||
## v1.5.2 (2026-06-08)
|
||||
- **JS 对齐 & 重命名**:
|
||||
- 注册模块名更正为极简的 `"sm"`。
|
||||
- 所有 JS 导出方法统一为 PascalCase + 缩写全大写(如 `SM3`, `SM4EncryptCBC`, `GenerateSM2KeyPair`)。
|
||||
- **Go 源码纠偏**: 修正了 Go 层级的方法命名(`Sm3` -> `SM3` 等),确保全库命名规范绝对统一。
|
||||
|
||||
## [v1.3.2] - 2026-05-30
|
||||
|
||||
### Added
|
||||
|
||||
58
js_export.go
58
js_export.go
@ -5,22 +5,36 @@ import (
|
||||
)
|
||||
|
||||
func init() {
|
||||
jsmod.Register("cryptoSM", map[string]any{
|
||||
jsmod.Register("sm", map[string]any{
|
||||
// SM3 Hash
|
||||
"sm3": Sm3,
|
||||
"sm3ToHex": Sm3ToHex,
|
||||
"sm3ToBase64": Sm3ToBase64,
|
||||
"sm3ToUrlBase64": Sm3ToUrlBase64,
|
||||
"SM3": SM3,
|
||||
"SM3ToHex": SM3ToHex,
|
||||
"SM3ToBase64": SM3ToBase64,
|
||||
"SM3ToURLBase64": SM3ToURLBase64,
|
||||
|
||||
// SM4 GCM (Stateless)
|
||||
"encrypt": func(data, key, iv []byte) ([]byte, error) {
|
||||
// SM4 Symmetric (Stateless)
|
||||
"SM4EncryptCBC": func(data, key, iv []byte) ([]byte, error) {
|
||||
s, err := NewSM4CBCAndEraseKey(key, iv)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.EncryptBytes(data)
|
||||
},
|
||||
"SM4DecryptCBC": func(data, key, iv []byte) ([]byte, error) {
|
||||
s, err := NewSM4CBCAndEraseKey(key, iv)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.DecryptBytes(data)
|
||||
},
|
||||
"SM4EncryptGCM": func(data, key, iv []byte) ([]byte, error) {
|
||||
s, err := NewSM4GCMAndEraseKey(key, iv)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.EncryptBytes(data)
|
||||
},
|
||||
"decrypt": func(data, key, iv []byte) ([]byte, error) {
|
||||
"SM4DecryptGCM": func(data, key, iv []byte) ([]byte, error) {
|
||||
s, err := NewSM4GCMAndEraseKey(key, iv)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@ -28,45 +42,29 @@ func init() {
|
||||
return s.DecryptBytes(data)
|
||||
},
|
||||
|
||||
// SM4 CBC (Stateless)
|
||||
"encryptCBC": func(data, key, iv []byte) ([]byte, error) {
|
||||
s, err := NewSM4CBCAndEraseKey(key, iv)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.EncryptBytes(data)
|
||||
},
|
||||
"decryptCBC": func(data, key, iv []byte) ([]byte, error) {
|
||||
s, err := NewSM4CBCAndEraseKey(key, iv)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return s.DecryptBytes(data)
|
||||
},
|
||||
|
||||
// SM2 (Stateless)
|
||||
"encryptSM2": func(data, pubKey []byte) ([]byte, error) {
|
||||
// SM2 Asymmetric (Stateless)
|
||||
"SM2Encrypt": func(data, pubKey []byte) ([]byte, error) {
|
||||
a, err := NewSM2AndEraseKey(nil, pubKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return a.EncryptBytes(data)
|
||||
},
|
||||
"decryptSM2": func(data, privKey []byte) ([]byte, error) {
|
||||
"SM2Decrypt": func(data, privKey []byte) ([]byte, error) {
|
||||
a, err := NewSM2AndEraseKey(privKey, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return a.DecryptBytes(data)
|
||||
},
|
||||
"signSM2": func(data, privKey []byte) ([]byte, error) {
|
||||
"SM2Sign": func(data, privKey []byte) ([]byte, error) {
|
||||
a, err := NewSM2AndEraseKey(privKey, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return a.Sign(data)
|
||||
},
|
||||
"verifySM2": func(data, sig, pubKey []byte) (bool, error) {
|
||||
"SM2Verify": func(data, sig, pubKey []byte) (bool, error) {
|
||||
a, err := NewSM2AndEraseKey(nil, pubKey)
|
||||
if err != nil {
|
||||
return false, err
|
||||
@ -75,6 +73,6 @@ func init() {
|
||||
},
|
||||
|
||||
// Key Generation
|
||||
"generateSM2KeyPair": GenerateSM2KeyPair,
|
||||
"GenerateSM2KeyPair": GenerateSM2KeyPair,
|
||||
})
|
||||
}
|
||||
|
||||
14
sm3.go
14
sm3.go
@ -5,7 +5,7 @@ import (
|
||||
"github.com/emmansun/gmsm/sm3"
|
||||
)
|
||||
|
||||
func Sm3(data ...[]byte) []byte {
|
||||
func SM3(data ...[]byte) []byte {
|
||||
hash := sm3.New()
|
||||
for _, v := range data {
|
||||
hash.Write(v)
|
||||
@ -13,14 +13,14 @@ func Sm3(data ...[]byte) []byte {
|
||||
return hash.Sum(nil)
|
||||
}
|
||||
|
||||
func Sm3ToHex(data []byte) string {
|
||||
return encoding.Hex(Sm3(data))
|
||||
func SM3ToHex(data []byte) string {
|
||||
return encoding.Hex(SM3(data))
|
||||
}
|
||||
|
||||
func Sm3ToBase64(data []byte) string {
|
||||
return encoding.Base64(Sm3(data))
|
||||
func SM3ToBase64(data []byte) string {
|
||||
return encoding.Base64(SM3(data))
|
||||
}
|
||||
|
||||
func Sm3ToUrlBase64(data []byte) string {
|
||||
return encoding.URLBase64(Sm3(data))
|
||||
func SM3ToURLBase64(data []byte) string {
|
||||
return encoding.URLBase64(SM3(data))
|
||||
}
|
||||
|
||||
@ -36,8 +36,8 @@ func TestSM2(t *testing.T) {
|
||||
|
||||
func TestSM3(t *testing.T) {
|
||||
data := []byte("hello sm3")
|
||||
h1 := sm.Sm3(data)
|
||||
h2 := sm.Sm3(data)
|
||||
h1 := sm.SM3(data)
|
||||
h2 := sm.SM3(data)
|
||||
if !bytes.Equal(h1, h2) { t.Error("SM3 non-deterministic") }
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user