aboutsummaryrefslogblamecommitdiffstats
path: root/crypto/key_store_test.go
blob: 412735444774900629c7640f57de3df3c5288733 (plain) (tree)





















































































































                                                                         
package crypto

import (
    "fmt"
    "reflect"
    "testing"
)

func TestKeyStorePlaintext(t *testing.T) {
    ks := new(KeyStorePlaintext)
    ks.keysDirPath = DefaultDataDir()
    pass := "" // not used but required by API
    k1, err := ks.GenerateNewKey(pass)
    if err != nil {
        fmt.Println(err.Error())
        t.FailNow()
    }

    k2 := new(Key)
    k2, err = ks.GetKey(k1.Id, pass)
    if err != nil {
        fmt.Println(err.Error())
        t.FailNow()
    }

    if !reflect.DeepEqual(k1.Id, k2.Id) {
        fmt.Println("key Id mismatch")
        t.FailNow()
    }

    if k1.Flags != k2.Flags {
        fmt.Println("key Flags mismatch")
        t.FailNow()
    }

    if !reflect.DeepEqual(k1.PrivateKey, k2.PrivateKey) {
        fmt.Println("key PrivateKey mismatch")
        t.FailNow()
    }

    err = ks.DeleteKey(k2.Id, pass)
    if err != nil {
        fmt.Println(err.Error())
        t.FailNow()
    }
}

func TestKeyStorePassphrase(t *testing.T) {
    ks := new(KeyStorePassphrase)
    ks.keysDirPath = DefaultDataDir()
    pass := "foo"
    k1, err := ks.GenerateNewKey(pass)
    if err != nil {
        fmt.Println(err.Error())
        t.FailNow()
    }

    k2 := new(Key)
    k2, err = ks.GetKey(k1.Id, pass)
    if err != nil {
        fmt.Println(err.Error())
        t.FailNow()
    }

    if !reflect.DeepEqual(k1.Id, k2.Id) {
        fmt.Println("key Id mismatch")
        t.FailNow()
    }

    if k1.Flags != k2.Flags {
        fmt.Println("key Flags mismatch")
        t.FailNow()
    }

    if !reflect.DeepEqual(k1.PrivateKey, k2.PrivateKey) {
        fmt.Println("key PrivateKey mismatch")
        t.FailNow()
    }

    err = ks.DeleteKey(k2.Id, pass) // also to clean up created files
    if err != nil {
        fmt.Println(err.Error())
        t.FailNow()
    }
}

func TestKeyStorePassphraseDecryptionFail(t *testing.T) {
    ks := new(KeyStorePassphrase)
    ks.keysDirPath = DefaultDataDir()
    pass := "foo"
    k1, err := ks.GenerateNewKey(pass)
    if err != nil {
        fmt.Println(err.Error())
        t.FailNow()
    }

    _, err = ks.GetKey(k1.Id, "bar") // wrong passphrase
    // fmt.Println(err.Error())
    if err == nil {
        t.FailNow()
    }

    err = ks.DeleteKey(k1.Id, "bar") // wrong passphrase
    if err == nil {
        fmt.Println(err.Error())
        t.FailNow()
    }

    err = ks.DeleteKey(k1.Id, pass) // to clean up
    if err != nil {
        fmt.Println(err.Error())
        t.FailNow()
    }
}

func TestKeyMixedEntropy(t *testing.T) {
    GetEntropyTinFoilHat()
}