Skip to content

Commit

Permalink
更新
Browse files Browse the repository at this point in the history
  • Loading branch information
deatil committed Dec 22, 2024
1 parent 4c0168b commit 4cc5368
Show file tree
Hide file tree
Showing 43 changed files with 1,351 additions and 484 deletions.
217 changes: 214 additions & 3 deletions pkg/lakego-pkg/go-cryptobin/cryptobin/crypto/cryptobin_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -615,7 +615,7 @@ func Test_AesCCMPKCS7Padding(t *testing.T) {
SetKey("dfertf12dfertf12").
SetIv("dfertf12dfe").
Aes().
CCM().
CCMWithNonceSize(11).
PKCS7Padding().
Encrypt()
cyptStr := cypt.ToBase64String()
Expand All @@ -626,7 +626,7 @@ func Test_AesCCMPKCS7Padding(t *testing.T) {
SetKey("dfertf12dfertf12").
SetIv("dfertf12dfe").
Aes().
CCM().
CCMWithNonceSize(11).
PKCS7Padding().
Decrypt()
cyptdeStr := cyptde.ToString()
Expand Down Expand Up @@ -1493,7 +1493,8 @@ func Test_Weapp_AES256_GCM_Check(t *testing.T) {
authtag := "5qeM/2vZv+6KtScN94IpMg=="
real_authTag, _ := base64.StdEncoding.DecodeString(authtag)

cypt := FromString(real_plaintext).
cypt := New().
FromString(real_plaintext).
WithKey(real_key).
WithIv(real_iv).
Aes().
Expand Down Expand Up @@ -1763,3 +1764,213 @@ func Test_Chacha20poly1305(t *testing.T) {

assert(data, cyptdeStr, "Test_Chacha20poly1305")
}

func Test_Aes_CCM_PKCS7Padding(t *testing.T) {
assert := cryptobin_test.AssertEqualT(t)
assertError := cryptobin_test.AssertErrorT(t)

data := "test-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-pass"
cypt := New().FromString(data).
SetKey("dfertf12dfertf12").
SetIv("dfertf12dfe1").
Aes().
CCM().
PKCS7Padding().
Encrypt()
cyptStr := cypt.ToBase64String()

assertError(cypt.Error(), "Test_Aes_CCM_PKCS7Padding-Encode")

cyptde := New().FromBase64String(cyptStr).
SetKey("dfertf12dfertf12").
SetIv("dfertf12dfe1").
Aes().
CCM().
PKCS7Padding().
Decrypt()
cyptdeStr := cyptde.ToString()

assertError(cyptde.Error(), "Test_Aes_CCM_PKCS7Padding-Decode")

assert(data, cyptdeStr, "Test_Aes_CCM_PKCS7Padding")
}

func Test_Aes_CCMWithNonceSize_PKCS7Padding(t *testing.T) {
assert := cryptobin_test.AssertEqualT(t)
assertError := cryptobin_test.AssertErrorT(t)

data := "test-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-pass"
cypt := New().FromString(data).
SetKey("dfertf12dfertf12").
SetIv("dfertf12dfe12").
Aes().
CCMWithNonceSize(13).
PKCS7Padding().
Encrypt()
cyptStr := cypt.ToBase64String()

assertError(cypt.Error(), "Test_Aes_CCMWithNonceSize_PKCS7Padding-Encode")

cyptde := New().FromBase64String(cyptStr).
SetKey("dfertf12dfertf12").
SetIv("dfertf12dfe12").
Aes().
CCMWithNonceSize(13).
PKCS7Padding().
Decrypt()
cyptdeStr := cyptde.ToString()

assertError(cyptde.Error(), "Test_Aes_CCMWithNonceSize_PKCS7Padding-Decode")

assert(data, cyptdeStr, "Test_Aes_CCMWithNonceSize_PKCS7Padding")
}

func Test_Aes_CCMWithTagSize_NoPadding(t *testing.T) {
assert := cryptobin_test.AssertEqualT(t)
assertError := cryptobin_test.AssertErrorT(t)

data := "test-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-pass"
cypt := New().FromString(data).
SetKey("dfertf12dfertf12").
SetIv("dfertf12dfe1").
Aes().
CCMWithTagSize(12).
NoPadding().
Encrypt()
cyptStr := cypt.ToBase64String()

assertError(cypt.Error(), "Test_Aes_CCMWithTagSize_NoPadding-Encode")

cyptde := New().FromBase64String(cyptStr).
SetKey("dfertf12dfertf12").
SetIv("dfertf12dfe1").
Aes().
CCMWithTagSize(12).
NoPadding().
Decrypt()
cyptdeStr := cyptde.ToString()

assertError(cyptde.Error(), "Test_Aes_CCMWithTagSize_NoPadding-Decode")

assert(data, cyptdeStr, "Test_Aes_CCMWithTagSize_NoPadding")
}

func Test_Aes_CCMWithNonceAndTagSize_PKCS7Padding(t *testing.T) {
assert := cryptobin_test.AssertEqualT(t)
assertError := cryptobin_test.AssertErrorT(t)

data := "test-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-pass"
cypt := New().FromString(data).
SetKey("dfertf12dfertf12").
SetIv("dfertf12dfe12").
Aes().
CCMWithNonceAndTagSize(13, 16).
PKCS7Padding().
Encrypt()
cyptStr := cypt.ToBase64String()

assertError(cypt.Error(), "Test_Aes_CCMWithNonceAndTagSize_PKCS7Padding-Encode")

cyptde := New().FromBase64String(cyptStr).
SetKey("dfertf12dfertf12").
SetIv("dfertf12dfe12").
Aes().
CCMWithNonceAndTagSize(13, 16).
PKCS7Padding().
Decrypt()
cyptdeStr := cyptde.ToString()

assertError(cyptde.Error(), "Test_Aes_CCMWithNonceAndTagSize_PKCS7Padding-Decode")

assert(data, cyptdeStr, "Test_Aes_CCMWithNonceAndTagSize_PKCS7Padding")
}

func Test_Aes_GCM_PKCS7Padding(t *testing.T) {
assert := cryptobin_test.AssertEqualT(t)
assertError := cryptobin_test.AssertErrorT(t)

data := "test-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-pass"
cypt := New().FromString(data).
SetKey("dfertf12dfertf12").
SetIv("dfertf12dfe1").
Aes().
GCM().
PKCS7Padding().
Encrypt()
cyptStr := cypt.ToBase64String()

assertError(cypt.Error(), "Test_Aes_GCM_PKCS7Padding-Encode")

cyptde := New().FromBase64String(cyptStr).
SetKey("dfertf12dfertf12").
SetIv("dfertf12dfe1").
Aes().
GCM().
PKCS7Padding().
Decrypt()
cyptdeStr := cyptde.ToString()

assertError(cyptde.Error(), "Test_Aes_GCM_PKCS7Padding-Decode")

assert(data, cyptdeStr, "Test_Aes_GCM_PKCS7Padding")
}

func Test_Aes_GCMWithNonceSize_PKCS7Padding(t *testing.T) {
assert := cryptobin_test.AssertEqualT(t)
assertError := cryptobin_test.AssertErrorT(t)

data := "test-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-pass"
cypt := New().FromString(data).
SetKey("dfertf12dfertf12").
SetIv("dfertf12dfe12").
Aes().
GCMWithNonceSize(13).
PKCS7Padding().
Encrypt()
cyptStr := cypt.ToBase64String()

assertError(cypt.Error(), "Test_Aes_GCMWithNonceSize_PKCS7Padding-Encode")

cyptde := New().FromBase64String(cyptStr).
SetKey("dfertf12dfertf12").
SetIv("dfertf12dfe12").
Aes().
GCMWithNonceSize(13).
PKCS7Padding().
Decrypt()
cyptdeStr := cyptde.ToString()

assertError(cyptde.Error(), "Test_Aes_GCMWithNonceSize_PKCS7Padding-Decode")

assert(data, cyptdeStr, "Test_Aes_GCMWithNonceSize_PKCS7Padding")
}

func Test_Aes_GCMWithTagSize_NoPadding(t *testing.T) {
assert := cryptobin_test.AssertEqualT(t)
assertError := cryptobin_test.AssertErrorT(t)

data := "test-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-passtest-pass"
cypt := New().FromString(data).
SetKey("dfertf12dfertf12").
SetIv("dfertf12dfe1").
Aes().
GCMWithTagSize(15).
NoPadding().
Encrypt()
cyptStr := cypt.ToBase64String()

assertError(cypt.Error(), "Test_Aes_GCMWithTagSize_NoPadding-Encode")

cyptde := New().FromBase64String(cyptStr).
SetKey("dfertf12dfertf12").
SetIv("dfertf12dfe1").
Aes().
GCMWithTagSize(15).
NoPadding().
Decrypt()
cyptdeStr := cyptde.ToString()

assertError(cyptde.Error(), "Test_Aes_GCMWithTagSize_NoPadding-Decode")

assert(data, cyptdeStr, "Test_Aes_GCMWithTagSize_NoPadding")
}
44 changes: 30 additions & 14 deletions pkg/lakego-pkg/go-cryptobin/cryptobin/crypto/encrypt_mode.go
Original file line number Diff line number Diff line change
Expand Up @@ -245,19 +245,22 @@ func (this ModeGCM) Encrypt(plain []byte, block cipher.Block, opt IOption) ([]by
var aead cipher.AEAD
var err error

iv := opt.Iv()

nonceSize := opt.Config().GetInt("nonce_size")
tagSize := opt.Config().GetInt("tag_size")

if tagSize > 0 {
aead, err = cipher.NewGCMWithTagSize(block, tagSize)
} else if nonceSize > 0 {
aead, err = cipher.NewGCMWithNonceSize(block, nonceSize)
} else {
aead, err = cipher.NewGCMWithNonceSize(block, len(iv))
aead, err = cipher.NewGCM(block)
}

if err != nil {
return nil, err
}

iv := opt.Iv()
additional := opt.Config().GetBytes("additional")

cryptText := aead.Seal(nil, iv, plain, additional)
Expand All @@ -270,19 +273,22 @@ func (this ModeGCM) Decrypt(data []byte, block cipher.Block, opt IOption) ([]byt
var aead cipher.AEAD
var err error

iv := opt.Iv()

nonceSize := opt.Config().GetInt("nonce_size")
tagSize := opt.Config().GetInt("tag_size")

if tagSize > 0 {
aead, err = cipher.NewGCMWithTagSize(block, tagSize)
} else if nonceSize > 0 {
aead, err = cipher.NewGCMWithNonceSize(block, nonceSize)
} else {
aead, err = cipher.NewGCMWithNonceSize(block, len(iv))
aead, err = cipher.NewGCM(block)
}

if err != nil {
return nil, err
}

iv := opt.Iv()
additional := opt.Config().GetBytes("additional")

dst, err := aead.Open(nil, iv, data, additional)
Expand All @@ -299,19 +305,24 @@ func (this ModeCCM) Encrypt(plain []byte, block cipher.Block, opt IOption) ([]by
var aead cipher.AEAD
var err error

iv := opt.Iv()

nonceSize := opt.Config().GetInt("nonce_size")
tagSize := opt.Config().GetInt("tag_size")
if tagSize > 0 {

if nonceSize > 0 && tagSize > 0 {
aead, err = ccm.NewCCMWithNonceAndTagSize(block, nonceSize, tagSize)
} else if tagSize > 0 {
aead, err = ccm.NewCCMWithTagSize(block, tagSize)
} else if nonceSize > 0 {
aead, err = ccm.NewCCMWithNonceSize(block, nonceSize)
} else {
aead, err = ccm.NewCCMWithNonceSize(block, len(iv))
aead, err = ccm.NewCCM(block)
}

if err != nil {
return nil, err
}

iv := opt.Iv()
additional := opt.Config().GetBytes("additional")

cryptText := aead.Seal(nil, iv, plain, additional)
Expand All @@ -325,15 +336,20 @@ func (this ModeCCM) Decrypt(data []byte, block cipher.Block, opt IOption) ([]byt
var aead cipher.AEAD
var err error

iv := opt.Iv()

nonceSize := opt.Config().GetInt("nonce_size")
tagSize := opt.Config().GetInt("tag_size")
if tagSize > 0 {

if nonceSize > 0 && tagSize > 0 {
aead, err = ccm.NewCCMWithNonceAndTagSize(block, nonceSize, tagSize)
} else if tagSize > 0 {
aead, err = ccm.NewCCMWithTagSize(block, tagSize)
} else if nonceSize > 0 {
aead, err = ccm.NewCCMWithNonceSize(block, nonceSize)
} else {
aead, err = ccm.NewCCMWithNonceSize(block, len(iv))
aead, err = ccm.NewCCM(block)
}

iv := opt.Iv()
additional := opt.Config().GetBytes("additional")

dst, err := aead.Open(nil, iv, data, additional)
Expand Down
Loading

0 comments on commit 4cc5368

Please sign in to comment.