github.com/hoffie/larasync@v0.0.0-20151025221940-0384d2bddcef/repository/keystore_test.go (about)

     1  package repository
     2  
     3  import (
     4  	"github.com/agl/ed25519"
     5  
     6  	. "gopkg.in/check.v1"
     7  
     8  	"github.com/hoffie/larasync/repository/content"
     9  )
    10  
    11  type KeyStoreTests struct {
    12  	dir     string
    13  	storage *content.FileStorage
    14  	ks      *KeyStore
    15  }
    16  
    17  var _ = Suite(&KeyStoreTests{})
    18  
    19  func (t *KeyStoreTests) SetUpTest(c *C) {
    20  	t.dir = c.MkDir()
    21  	t.storage = content.NewFileStorage(t.dir)
    22  	t.ks = NewKeyStore(t.storage)
    23  }
    24  
    25  func (t *KeyStoreTests) TestEncryptionKey(c *C) {
    26  	var k [EncryptionKeySize]byte
    27  	k[0] = 'z'
    28  	_, err := t.ks.EncryptionKey()
    29  	c.Assert(err, NotNil)
    30  
    31  	err = t.ks.SetEncryptionKey(k)
    32  	c.Assert(err, IsNil)
    33  
    34  	k2, err := t.ks.EncryptionKey()
    35  	c.Assert(err, IsNil)
    36  	c.Assert(k2, DeepEquals, k)
    37  }
    38  
    39  func (t *KeyStoreTests) TestSigningPrivkey(c *C) {
    40  	var k [PrivateKeySize]byte
    41  	k[0] = 'z'
    42  	_, err := t.ks.SigningPrivateKey()
    43  	c.Assert(err, NotNil)
    44  
    45  	err = t.ks.SetSigningPrivateKey(k)
    46  	c.Assert(err, IsNil)
    47  
    48  	k2, err := t.ks.SigningPrivateKey()
    49  	c.Assert(err, IsNil)
    50  	c.Assert(k2, DeepEquals, k)
    51  }
    52  
    53  func (t *KeyStoreTests) TestHashingKey(c *C) {
    54  	var k [HashingKeySize]byte
    55  	k[0] = 'z'
    56  	_, err := t.ks.HashingKey()
    57  	c.Assert(err, NotNil)
    58  
    59  	err = t.ks.SetHashingKey(k)
    60  	c.Assert(err, IsNil)
    61  
    62  	k2, err := t.ks.HashingKey()
    63  	c.Assert(err, IsNil)
    64  	c.Assert(k2, DeepEquals, k)
    65  }
    66  
    67  func (t *KeyStoreTests) TestCreateSigningKey(c *C) {
    68  	err := t.ks.CreateSigningKey()
    69  	c.Assert(err, IsNil)
    70  
    71  	key, err := t.ks.SigningPrivateKey()
    72  	c.Assert(err, IsNil)
    73  	c.Assert(len(key), Equals, PrivateKeySize)
    74  }
    75  
    76  func (t *KeyStoreTests) TestCreateSigningKeyTestEncryption(c *C) {
    77  	err := t.ks.CreateSigningKey()
    78  	c.Assert(err, IsNil)
    79  
    80  	priv, err := t.ks.SigningPrivateKey()
    81  	c.Assert(err, IsNil)
    82  
    83  	pub, err := t.ks.SigningPublicKey()
    84  	c.Assert(err, IsNil)
    85  
    86  	content := []byte("test")
    87  	sig := ed25519.Sign(&priv, content)
    88  	res := ed25519.Verify(&pub, content, sig)
    89  	c.Assert(res, Equals, true)
    90  }
    91  
    92  func (t *KeyStoreTests) TestCreateHashingKey(c *C) {
    93  	err := t.ks.CreateHashingKey()
    94  	c.Assert(err, IsNil)
    95  
    96  	key, err := t.ks.HashingKey()
    97  	c.Assert(err, IsNil)
    98  	c.Assert(len(key), Equals, HashingKeySize)
    99  }
   100  
   101  func (t *KeyStoreTests) TestCreateEncryptionKey(c *C) {
   102  	err := t.ks.CreateEncryptionKey()
   103  	c.Assert(err, IsNil)
   104  
   105  	key, err := t.ks.EncryptionKey()
   106  	c.Assert(err, IsNil)
   107  	c.Assert(len(key), Equals, EncryptionKeySize)
   108  }