cli/pkg/crypt/kdf_test.go
Snider 32a3613a3a feat: add collect, config, crypt, plugin packages and fix all lint issues
Add four new infrastructure packages with CLI commands:
- pkg/config: layered configuration (defaults → file → env → flags)
- pkg/crypt: crypto primitives (Argon2id, AES-GCM, ChaCha20, HMAC, checksums)
- pkg/plugin: plugin system with GitHub-based install/update/remove
- pkg/collect: collection subsystem (GitHub, BitcoinTalk, market, papers, excavate)

Fix all golangci-lint issues across the entire codebase (~100 errcheck,
staticcheck SA1012/SA1019/ST1005, unused, ineffassign fixes) so that
`core go qa` passes with 0 issues.

Closes #167, #168, #170, #250, #251, #252, #253, #254, #255, #256

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 11:32:41 +00:00

56 lines
1.4 KiB
Go

package crypt
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestDeriveKey_Good(t *testing.T) {
passphrase := []byte("test-passphrase")
salt := []byte("1234567890123456") // 16 bytes
key1 := DeriveKey(passphrase, salt, 32)
key2 := DeriveKey(passphrase, salt, 32)
assert.Len(t, key1, 32)
assert.Equal(t, key1, key2, "same inputs should produce same output")
// Different passphrase should produce different key
key3 := DeriveKey([]byte("different-passphrase"), salt, 32)
assert.NotEqual(t, key1, key3)
}
func TestDeriveKeyScrypt_Good(t *testing.T) {
passphrase := []byte("test-passphrase")
salt := []byte("1234567890123456")
key, err := DeriveKeyScrypt(passphrase, salt, 32)
assert.NoError(t, err)
assert.Len(t, key, 32)
// Deterministic
key2, err := DeriveKeyScrypt(passphrase, salt, 32)
assert.NoError(t, err)
assert.Equal(t, key, key2)
}
func TestHKDF_Good(t *testing.T) {
secret := []byte("input-keying-material")
salt := []byte("optional-salt")
info := []byte("context-info")
key1, err := HKDF(secret, salt, info, 32)
assert.NoError(t, err)
assert.Len(t, key1, 32)
// Deterministic
key2, err := HKDF(secret, salt, info, 32)
assert.NoError(t, err)
assert.Equal(t, key1, key2)
// Different info should produce different key
key3, err := HKDF(secret, salt, []byte("different-info"), 32)
assert.NoError(t, err)
assert.NotEqual(t, key1, key3)
}