mirror of https://github.com/docker/docs.git
Added one more test, and fixed delete bug
Signed-off-by: Diogo Monica <diogo@docker.com>
This commit is contained in:
parent
47f651ef8a
commit
e568babc0a
|
@ -2,10 +2,13 @@ package main
|
|||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"crypto/sha256"
|
||||
"crypto/tls"
|
||||
"database/sql"
|
||||
"errors"
|
||||
_ "expvar"
|
||||
"flag"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"net"
|
||||
"net/http"
|
||||
|
@ -46,9 +49,15 @@ func init() {
|
|||
}
|
||||
|
||||
func passphraseRetriever(keyName, alias string, createNew bool, attempts int) (passphrase string, giveup bool, err error) {
|
||||
privKeyContent, err := ioutil.ReadFile(keyFile)
|
||||
if err != nil {
|
||||
return "", false, errors.New("error while reading the TLS private key")
|
||||
}
|
||||
|
||||
//TODO(mccauley) Read from config once we have locked keys in notary-signer
|
||||
return "", false, nil
|
||||
privKeyHash := sha256.Sum256(privKeyContent)
|
||||
passphrase = string(privKeyHash[:])
|
||||
|
||||
return passphrase, false, nil
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
|
|
@ -22,7 +22,7 @@ CREATE TABLE `private_keys` (
|
|||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`created_at` datetime NOT NULL,
|
||||
`updated_at` datetime NOT NULL,
|
||||
`deleted_at` datetime NOT NULL,
|
||||
`deleted_at` datetime DEFAULT NULL,
|
||||
`key_id` varchar(255) NOT NULL,
|
||||
`encryption` varchar(255) NOT NULL,
|
||||
`algorithm` varchar(50) NOT NULL,
|
||||
|
|
|
@ -32,11 +32,13 @@ func (s *KeyManagementServer) CreateKey(ctx context.Context, algorithm *pb.Algor
|
|||
service := s.CryptoServices[keyAlgo]
|
||||
|
||||
if service == nil {
|
||||
log.Println("[Notary-signer CreateKey] : unsupported algorithm: ", algorithm.Algorithm)
|
||||
return nil, fmt.Errorf("algorithm %s not supported for create key", algorithm.Algorithm)
|
||||
}
|
||||
|
||||
tufKey, err := service.Create("", keyAlgo)
|
||||
if err != nil {
|
||||
log.Println("[Notary-signer CreateKey] : failed to create key", err)
|
||||
return nil, grpc.Errorf(codes.Internal, "Key creation failed")
|
||||
}
|
||||
log.Println("[Notary-signer CreateKey] : Created KeyID ", tufKey.ID())
|
||||
|
|
|
@ -23,7 +23,7 @@ type KeyDBStore struct {
|
|||
// GormPrivateKey represents a PrivateKey in the database
|
||||
type GormPrivateKey struct {
|
||||
gorm.Model
|
||||
keyID string `gorm:"not null;unique_index"`
|
||||
KeyID string `gorm:"not null;unique_index"`
|
||||
Encryption string `gorm:"type:varchar(50);not null"`
|
||||
Algorithm string `gorm:"not null"`
|
||||
Public []byte `gorm:"not null"`
|
||||
|
@ -72,7 +72,7 @@ func (s *KeyDBStore) AddKey(name, alias string, privKey data.PrivateKey) error {
|
|||
encryptedPrivKeyStr := encryptedKey.FullSerialize()
|
||||
|
||||
gormPrivKey := GormPrivateKey{
|
||||
keyID: privKey.ID(),
|
||||
KeyID: privKey.ID(),
|
||||
Encryption: string(gojose.PBES2_HS512_A256KW),
|
||||
Algorithm: privKey.Algorithm().String(),
|
||||
Public: privKey.Public(),
|
||||
|
@ -105,7 +105,7 @@ func (s *KeyDBStore) GetKey(name string) (data.PrivateKey, string, error) {
|
|||
|
||||
// Retrieve the GORM private key from the database
|
||||
dbPrivateKey := GormPrivateKey{}
|
||||
if s.db.Where(&GormPrivateKey{keyID: name}).First(&dbPrivateKey).RecordNotFound() {
|
||||
if s.db.Where(&GormPrivateKey{KeyID: name}).First(&dbPrivateKey).RecordNotFound() {
|
||||
return nil, "", ErrKeyNotFound{}
|
||||
}
|
||||
|
||||
|
@ -142,7 +142,7 @@ func (s *KeyDBStore) RemoveKey(name string) error {
|
|||
|
||||
// Retrieve the GORM private key from the database
|
||||
dbPrivateKey := GormPrivateKey{}
|
||||
if s.db.Where(&GormPrivateKey{keyID: name}).First(&dbPrivateKey).RecordNotFound() {
|
||||
if s.db.Where(&GormPrivateKey{KeyID: name}).First(&dbPrivateKey).RecordNotFound() {
|
||||
return ErrKeyNotFound{}
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,6 @@ package trustmanager
|
|||
import (
|
||||
"crypto/rand"
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"testing"
|
||||
|
@ -36,7 +35,6 @@ func TestCreateRead(t *testing.T) {
|
|||
|
||||
// Test writing new key in database/cache
|
||||
err = dbStore.AddKey("", "", testKey)
|
||||
fmt.Println(err)
|
||||
assert.NoError(t, err)
|
||||
|
||||
// Test retrieval of key from DB
|
||||
|
@ -56,6 +54,36 @@ func TestCreateRead(t *testing.T) {
|
|||
assert.Equal(t, retrKey, testKey)
|
||||
}
|
||||
|
||||
func TestDoubleCreate(t *testing.T) {
|
||||
tempBaseDir, err := ioutil.TempDir("", "notary-test-")
|
||||
defer os.RemoveAll(tempBaseDir)
|
||||
|
||||
testKey, err := GenerateECDSAKey(rand.Reader)
|
||||
assert.NoError(t, err)
|
||||
|
||||
anotherTestKey, err := GenerateECDSAKey(rand.Reader)
|
||||
assert.NoError(t, err)
|
||||
|
||||
// We are using SQLite for the tests
|
||||
db, err := sql.Open("sqlite3", tempBaseDir+"test_db")
|
||||
assert.NoError(t, err)
|
||||
|
||||
// Create a new KeyDB store
|
||||
dbStore, err := NewKeyDBStore(retriever, "sqlite3", db)
|
||||
assert.NoError(t, err)
|
||||
|
||||
// Ensure that the private_key table exists
|
||||
dbStore.db.CreateTable(&GormPrivateKey{})
|
||||
|
||||
// Test writing new key in database/cache
|
||||
err = dbStore.AddKey("", "", testKey)
|
||||
assert.NoError(t, err)
|
||||
|
||||
// Test writing new key succeeds
|
||||
err = dbStore.AddKey("", "", anotherTestKey)
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestCreateDelete(t *testing.T) {
|
||||
tempBaseDir, err := ioutil.TempDir("", "notary-test-")
|
||||
defer os.RemoveAll(tempBaseDir)
|
||||
|
@ -76,7 +104,6 @@ func TestCreateDelete(t *testing.T) {
|
|||
|
||||
// Test writing new key in database/cache
|
||||
err = dbStore.AddKey("", "", testKey)
|
||||
fmt.Println(err)
|
||||
assert.NoError(t, err)
|
||||
|
||||
// Test deleting the key from the db
|
||||
|
|
Loading…
Reference in New Issue