mirror of
https://github.com/ncruces/go-sqlite3.git
synced 2026-01-12 05:59:14 +00:00
99 lines
3.3 KiB
Go
99 lines
3.3 KiB
Go
package hash
|
|
|
|
import (
|
|
_ "crypto/md5"
|
|
_ "crypto/sha1"
|
|
_ "crypto/sha256"
|
|
_ "crypto/sha3"
|
|
_ "crypto/sha512"
|
|
"testing"
|
|
|
|
_ "golang.org/x/crypto/blake2b"
|
|
_ "golang.org/x/crypto/blake2s"
|
|
_ "golang.org/x/crypto/md4"
|
|
_ "golang.org/x/crypto/ripemd160"
|
|
|
|
"github.com/ncruces/go-sqlite3/driver"
|
|
_ "github.com/ncruces/go-sqlite3/embed"
|
|
_ "github.com/ncruces/go-sqlite3/internal/testcfg"
|
|
"github.com/ncruces/go-sqlite3/vfs/memdb"
|
|
)
|
|
|
|
func TestRegister(t *testing.T) {
|
|
t.Parallel()
|
|
dsn := memdb.TestDB(t)
|
|
|
|
tests := []struct {
|
|
name string
|
|
hash string
|
|
}{
|
|
{"md4(NULL)", ""},
|
|
{"md4(X'')", "31D6CFE0D16AE931B73C59D7E0C089C0"},
|
|
{"md4('The quick brown fox jumps over the lazy dog')", "1BEE69A46BA811185C194762ABAEAE90"},
|
|
|
|
{"md5('')", "D41D8CD98F00B204E9800998ECF8427E"},
|
|
{"sha1('')", "DA39A3EE5E6B4B0D3255BFEF95601890AFD80709"},
|
|
{"ripemd160('')", "9C1185A5C5E9FC54612808977EE8F548B2258D31"},
|
|
|
|
{"sha224('')", "D14A028C2A3A2BC9476102BB288234C415A2B01F828EA62AC5B3E42F"},
|
|
{"sha256('')", "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855"},
|
|
{"sha256('', 224)", "D14A028C2A3A2BC9476102BB288234C415A2B01F828EA62AC5B3E42F"},
|
|
{"sha384('')", "38B060A751AC96384CD9327EB1B1E36A21FDB71114BE07434C0CC7BF63F6E1DA274EDEBFE76F65FBD51AD2F14898B95B"},
|
|
{"sha512('')", "CF83E1357EEFB8BDF1542850D66D8007D620E4050B5715DC83F4A921D36CE9CE47D0D13C5D85F2B0FF8318D2877EEC2F63B931BD47417A81A538327AF927DA3E"},
|
|
{"sha512('', 224)", "6ED0DD02806FA89E25DE060C19D3AC86CABB87D6A0DDD05C333B84F4"},
|
|
{"sha512('', 256)", "C672B8D1EF56ED28AB87C3622C5114069BDD3AD7B8F9737498D0C01ECEF0967A"},
|
|
{"sha512('', 384)", "38B060A751AC96384CD9327EB1B1E36A21FDB71114BE07434C0CC7BF63F6E1DA274EDEBFE76F65FBD51AD2F14898B95B"},
|
|
|
|
{"sha3('')", "A7FFC6F8BF1ED76651C14756A061D662F580FF4DE43B49FA82D80A4B80F8434A"},
|
|
{"sha3('', 224)", "6B4E03423667DBB73B6E15454F0EB1ABD4597F9A1B078E3F5B5A6BC7"},
|
|
{"sha3('', 384)", "0C63A75B845E4F7D01107D852E4C2485C51A50AAAA94FC61995E71BBEE983A2AC3713831264ADB47FB6BD1E058D5F004"},
|
|
{"sha3('', 512)", "A69F73CCA23A9AC5C8B567DC185A756E97C982164FE25859E0D1DCC1475C80A615B2123AF1F5F94C11E3E9402C3AC558F500199D95B6D3E301758586281DCD26"},
|
|
|
|
{"blake2s('')", "69217A3079908094E11121D042354A7C1F55B6482CA1A51E1B250DFD1ED0EEF9"},
|
|
{"blake2b('')", "786A02F742015903C6C6FD852552D272912F4740E15847618A86E217F71F5419D25E1031AFEE585313896444934EB04B903A685B1448B755D56F701AFE9BE2CE"},
|
|
{"blake2b('', 384)", "B32811423377F52D7862286EE1A72EE540524380FDA1724A6F25D7978C6FD3244A6CAF0498812673C5E05EF583825100"},
|
|
{"blake2b('', 256)", "0E5751C026E543B2E8AB2EB06099DAA1D1E5DF47778F7787FAAB45CDF12FE3A8"},
|
|
}
|
|
|
|
db, err := driver.Open(dsn, Register)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer db.Close()
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
var hash string
|
|
|
|
err = db.QueryRow(`SELECT hex(` + tt.name + `)`).Scan(&hash)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if hash != tt.hash {
|
|
t.Errorf("got %s, want %s", hash, tt.hash)
|
|
}
|
|
})
|
|
}
|
|
|
|
_, err = db.Exec(`SELECT sha256('', 255)`)
|
|
if err == nil {
|
|
t.Error("want error")
|
|
}
|
|
|
|
_, err = db.Exec(`SELECT sha512('', 255)`)
|
|
if err == nil {
|
|
t.Error("want error")
|
|
}
|
|
|
|
_, err = db.Exec(`SELECT sha3('', 255)`)
|
|
if err == nil {
|
|
t.Error("want error")
|
|
}
|
|
|
|
_, err = db.Exec(`SELECT blake2b('', 255)`)
|
|
if err == nil {
|
|
t.Error("want error")
|
|
}
|
|
}
|