mirror of
https://github.com/emmansun/gmsm.git
synced 2025-04-25 19:56:18 +08:00
40 lines
1.4 KiB
Go
40 lines
1.4 KiB
Go
package pkcs
|
|
|
|
import (
|
|
"bytes"
|
|
"testing"
|
|
)
|
|
|
|
func TestScryptDeriveKey(t *testing.T) {
|
|
opts := NewScryptOpts(8, 16384, 8, 1)
|
|
key, params, err := opts.DeriveKey([]byte("password"), []byte("saltsalt"), 32)
|
|
if err != nil {
|
|
t.Errorf("unexpected error: %v", err)
|
|
}
|
|
if len(key) != 32 {
|
|
t.Errorf("unexpected key length: got %d, want 32", len(key))
|
|
}
|
|
if params.KeyLength() != 32 {
|
|
t.Errorf("unexpected key length: got %d, want 32", params.KeyLength())
|
|
}
|
|
if len(params.(scryptParams).Salt) != opts.SaltSize {
|
|
t.Errorf("unexpected salt length: got %d, want %d", len(params.(scryptParams).Salt), opts.SaltSize)
|
|
}
|
|
if params.(scryptParams).CostParameter != opts.CostParameter {
|
|
t.Errorf("unexpected cost parameter: got %d, want %d", params.(scryptParams).CostParameter, opts.CostParameter)
|
|
}
|
|
if params.(scryptParams).BlockSize != opts.BlockSize {
|
|
t.Errorf("unexpected block size: got %d, want %d", params.(scryptParams).BlockSize, opts.BlockSize)
|
|
}
|
|
if params.(scryptParams).ParallelizationParameter != opts.ParallelizationParameter {
|
|
t.Errorf("unexpected parallelization parameter: got %d, want %d", params.(scryptParams).ParallelizationParameter, opts.ParallelizationParameter)
|
|
}
|
|
key2, err := params.DeriveKey(nil, []byte("password"), 32)
|
|
if err != nil {
|
|
t.Errorf("unexpected error: %v", err)
|
|
}
|
|
if !bytes.Equal(key, key2) {
|
|
t.Errorf("unexpected key: got %x, want %x", key2, key)
|
|
}
|
|
}
|