mirror of
https://github.com/emmansun/gmsm.git
synced 2025-10-13 23:00:47 +08:00
![github-actions[bot]](/assets/img/avatar_default.png)
* build(deps): bump github/codeql-action from 3.29.11 to 3.30.0 (#361) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.29.11 to 3.30.0. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](3c3833e0f8...2d92b76c45
) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.30.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump codecov/codecov-action from 5.5.0 to 5.5.1 (#362) Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.5.0 to 5.5.1. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](fdcc847654...5a1091511a
) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-version: 5.5.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump actions/setup-go from 5.5.0 to 6.0.0 (#363) Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.5.0 to 6.0.0. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](d35c59abb0...4469467582
) --- updated-dependencies: - dependency-name: actions/setup-go dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump github/codeql-action from 3.30.0 to 3.30.1 (#364) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.30.0 to 3.30.1. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](2d92b76c45...f1f6e5f6af
) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.30.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump step-security/harden-runner from 2.13.0 to 2.13.1 (#367) Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.13.0 to 2.13.1. - [Release notes](https://github.com/step-security/harden-runner/releases) - [Commits](ec9f2d5744...f4a75cfd61
) --- updated-dependencies: - dependency-name: step-security/harden-runner dependency-version: 2.13.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): bump github/codeql-action from 3.30.1 to 3.30.2 (#368) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.30.1 to 3.30.2. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](f1f6e5f6af...d3678e237b
) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.30.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * feat(mlkem): initialize mlkem from golang standard library * chore(mlkem): refactoring, reduce alloc times * build(deps): bump github/codeql-action from 3.30.2 to 3.30.3 (#369) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.30.2 to 3.30.3. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](d3678e237b...192325c861
) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.30.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * doc(README): include MLKEM * mldsa: refactor the implementation of key and sign/verify * mldsa,slhdsa: crypto.Signer assertion * fix(slhdsa): GenerateKey slice issue #72 * fix(slhdsa): copy/paste issue * slhdsa: supplements package level document * internal/zuc: eea supports encoding.BinaryMarshaler & encoding.BinaryUnmarshaler interfaces * mlkem: use clear built-in * build(deps): bump github/codeql-action from 3.30.3 to 3.30.4 (#376) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.30.3 to 3.30.4. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](192325c861...303c0aef88
) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.30.4 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * cipher: initial support gxm & mur modes * cipher: update comments * build(deps): bump github/codeql-action from 3.30.4 to 3.30.5 (#377) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.30.4 to 3.30.5. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](303c0aef88...3599b3baa1
) --- updated-dependencies: - dependency-name: github/codeql-action dependency-version: 3.30.5 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * 增加了DRBG销毁内部状态的方法 (#378) * 增加了DRBG销毁内部状态的方法 * 统一前缀 * 修改随机数长度 * 分组和注释 * 错误函数描述 * zuc: expose methods to support encoding.BinaryMarshaler and encoding.BinaryUnmarshaler * drbg: align comments style * internal/zuc: support fast forward * internal/zuc: supplement comments --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sun Yimin <emmansun@users.noreply.github.com> Co-authored-by: Guanyu Quan <quanguanyu@qq.com>
144 lines
3.1 KiB
Go
144 lines
3.1 KiB
Go
package drbg
|
|
|
|
import (
|
|
"bytes"
|
|
"crypto/aes"
|
|
"crypto/sha256"
|
|
"testing"
|
|
)
|
|
|
|
func TestGmCtrDrbgPrng(t *testing.T) {
|
|
prng, err := NewGmCtrDrbgPrng(nil, 32, SECURITY_LEVEL_TEST, nil)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
data := make([]byte, 33)
|
|
for i := 0; i < int(reseedCounterIntervalLevelTest+1); i++ {
|
|
n, err := prng.Read(data)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if n != 33 {
|
|
t.Errorf("not got enough random bytes")
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestGmCtrDrbgPrngReseedCase(t *testing.T) {
|
|
prng, err := NewGmCtrDrbgPrng(nil, 32, SECURITY_LEVEL_TEST, nil)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
data := make([]byte, 64)
|
|
for i := 0; i < int(reseedCounterIntervalLevelTest+1); i++ {
|
|
for j := 0; j < 64; j++ {
|
|
data[j] = 0
|
|
}
|
|
n, err := prng.Read(data)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if n != 64 {
|
|
t.Errorf("not got enough random bytes")
|
|
}
|
|
if bytes.Contains(data, []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}) {
|
|
t.Fatal("failed, it's a bug")
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestNistCtrDrbgPrng(t *testing.T) {
|
|
prng, err := NewNistCtrDrbgPrng(aes.NewCipher, 16, nil, 16, SECURITY_LEVEL_TEST, nil)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
data := make([]byte, maxBytesPerGenerate+1)
|
|
n, err := prng.Read(data)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if n != maxBytesPerGenerate+1 {
|
|
t.Errorf("not got enough random bytes")
|
|
}
|
|
}
|
|
|
|
func TestGmHashDrbgPrng(t *testing.T) {
|
|
prng, err := NewGmHashDrbgPrng(nil, 32, SECURITY_LEVEL_TEST, nil)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
data := make([]byte, 33)
|
|
for i := 0; i < int(reseedCounterIntervalLevelTest+1); i++ {
|
|
n, err := prng.Read(data)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if n != 33 {
|
|
t.Errorf("not got enough random bytes")
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestNistHashDrbgPrng(t *testing.T) {
|
|
prng, err := NewNistHashDrbgPrng(sha256.New, nil, 32, SECURITY_LEVEL_TEST, nil)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
data := make([]byte, maxBytesPerGenerate+1)
|
|
n, err := prng.Read(data)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if n != maxBytesPerGenerate+1 {
|
|
t.Errorf("not got enough random bytes")
|
|
}
|
|
}
|
|
|
|
func TestNistHmacDrbgPrng(t *testing.T) {
|
|
prng, err := NewNistHmacDrbgPrng(sha256.New, nil, 32, SECURITY_LEVEL_TEST, nil)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
data := make([]byte, maxBytesPerGenerate+1)
|
|
n, err := prng.Read(data)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if n != maxBytesPerGenerate+1 {
|
|
t.Errorf("not got enough random bytes")
|
|
}
|
|
}
|
|
|
|
func TestGMSecurityStrengthValidation(t *testing.T) {
|
|
_, err := NewGmHashDrbgPrng(nil, 24, SECURITY_LEVEL_TEST, nil)
|
|
if err == nil {
|
|
t.Fatalf("expected error here")
|
|
}
|
|
_, err = NewGmCtrDrbgPrng(nil, 24, SECURITY_LEVEL_TEST, nil)
|
|
if err == nil {
|
|
t.Fatalf("expected error here")
|
|
}
|
|
}
|
|
|
|
func Test_setZero(t *testing.T) {
|
|
|
|
cases := []struct {
|
|
name string
|
|
args []byte
|
|
}{
|
|
{"nil", nil},
|
|
{"empty", []byte{}},
|
|
{"normal", []byte{1, 2, 3, 4, 5}},
|
|
{"large", bytes.Repeat([]byte{1, 2, 3, 4, 5}, 100)},
|
|
}
|
|
for _, tt := range cases {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
setZero(tt.args)
|
|
if !bytes.Equal(tt.args, make([]byte, len(tt.args))) {
|
|
t.Errorf("setZero() = %v, want %v", tt.args, make([]byte, len(tt.args)))
|
|
}
|
|
})
|
|
}
|
|
}
|