Skip to content

Commit

Permalink
优化
Browse files Browse the repository at this point in the history
  • Loading branch information
deatil committed Aug 8, 2024
1 parent 6af83d9 commit ea8893c
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 18 deletions.
8 changes: 4 additions & 4 deletions pkg/lakego-pkg/go-cryptobin/pkcs8/pbes2/pkcs8.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,11 @@ type pbes2Params struct {

// 加密 PKCS8
func EncryptPKCS8PrivateKey(
rand io.Reader,
rand io.Reader,
blockType string,
data []byte,
password []byte,
opts ...Opts,
data []byte,
password []byte,
opts ...Opts,
) (*pem.Block, error) {
opt := &DefaultOpts
if len(opts) > 0 {
Expand Down
35 changes: 22 additions & 13 deletions pkg/lakego-pkg/go-cryptobin/pkcs8/pkcs8.go
Original file line number Diff line number Diff line change
Expand Up @@ -135,9 +135,10 @@ var (

type (
// 配置
Opts = pbes2.Opts
PBKDF2Opts = pbes2.PBKDF2Opts
ScryptOpts = pbes2.ScryptOpts
Opts = pbes2.Opts
PBKDF2Opts = pbes2.PBKDF2Opts
SMPBKDF2Opts = pbes2.SMPBKDF2Opts
ScryptOpts = pbes2.ScryptOpts
)

var (
Expand All @@ -147,20 +148,28 @@ var (
GetHashFromName = pbes2.GetHashFromName
)

// 默认配置 PBKDF2
var DefaultPBKDF2Opts = pbes2.DefaultPBKDF2Opts
var (
// 默认 Hash
DefaultHash = pbes2.DefaultHash
DefaultSMHash = pbes2.DefaultSMHash
)

// 默认配置 GmSM PBKDF2
var DefaultSMPBKDF2Opts = pbes2.DefaultSMPBKDF2Opts
var (
// 默认配置 PBKDF2
DefaultPBKDF2Opts = pbes2.DefaultPBKDF2Opts

// 默认配置 Scrypt
var DefaultScryptOpts = pbes2.DefaultScryptOpts
// 默认配置 GmSM PBKDF2
DefaultSMPBKDF2Opts = pbes2.DefaultSMPBKDF2Opts

// 默认配置
var DefaultOpts = pbes2.DefaultOpts
// 默认配置 Scrypt
DefaultScryptOpts = pbes2.DefaultScryptOpts

// 默认 GmSM 配置
var DefaultSMOpts = pbes2.DefaultSMOpts
// 默认配置
DefaultOpts = pbes2.DefaultOpts

// 默认 GmSM 配置
DefaultSMOpts = pbes2.DefaultSMOpts
)

// 解析设置
// opt, err := ParseOpts("AES256CBC", "SHA256")
Expand Down
46 changes: 45 additions & 1 deletion pkg/lakego-pkg/go-cryptobin/pkcs8/pkcs8_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package pkcs8

import (
"bytes"
"testing"
"crypto/rsa"
"crypto/rand"
Expand Down Expand Up @@ -1105,14 +1106,48 @@ func Test_EncryptPEMBlock_Gost(t *testing.T) {
}

func Test_EncryptPEMBlock_GmSMOpts(t *testing.T) {
t.Run("DefaultSMOpts", func(t *testing.T) {
test_EncryptPEMBlock_GmSMOpts(t, DefaultSMOpts)
})

t.Run("DefaultSMPBKDF2Opts SM4CFB", func(t *testing.T) {
test_EncryptPEMBlock_GmSMOpts(t, Opts{
Cipher: SM4CFB,
KDFOpts: DefaultSMPBKDF2Opts,
})
})

t.Run("SMPBKDF2Opts SM4CFB", func(t *testing.T) {
test_EncryptPEMBlock_GmSMOpts(t, Opts{
Cipher: SM4CFB,
KDFOpts: SMPBKDF2Opts{
SaltSize: 8,
IterationCount: 5000,
HMACHash: DefaultSMHash,
},
})
})

t.Run("SMPBKDF2Opts no HMACHash", func(t *testing.T) {
test_EncryptPEMBlock_GmSMOpts(t, Opts{
Cipher: SM4CFB,
KDFOpts: SMPBKDF2Opts{
SaltSize: 8,
IterationCount: 6000,
},
})
})
}

func test_EncryptPEMBlock_GmSMOpts(t *testing.T, opts Opts) {
block, _ := pem.Decode([]byte(testKey_des_EDE3_CBC))

bys, err := DecryptPEMBlock(block, []byte("123"))
if err != nil {
t.Fatal("PEM data decrypted error: " + err.Error())
}

enblock, err := EncryptPEMBlock(rand.Reader, "ENCRYPTED PRIVATE KEY", bys, []byte("test-passsss"), DefaultSMOpts)
enblock, err := EncryptPEMBlock(rand.Reader, "ENCRYPTED PRIVATE KEY", bys, []byte("test-passsss"), opts)
if err != nil {
t.Error("encrypt: ", err)
}
Expand All @@ -1124,4 +1159,13 @@ func Test_EncryptPEMBlock_GmSMOpts(t *testing.T) {
if enblock.Type != "ENCRYPTED PRIVATE KEY" {
t.Errorf("unexpected enblock type; got %q want %q", enblock.Type, "RSA PRIVATE KEY")
}

bys2, err := DecryptPEMBlock(enblock, []byte("test-passsss"))
if err != nil {
t.Fatal("data decrypted error: " + err.Error())
}

if bytes.Compare(bys2, bys) != 0 {
t.Errorf("DecryptPEMBlock error, got %x, want %x", bys2, bys)
}
}

0 comments on commit ea8893c

Please sign in to comment.