From 9ae667c9aa153be6140ab055edbdabfe5faab1f0 Mon Sep 17 00:00:00 2001 From: Diogo Monica Date: Thu, 9 Jul 2015 18:57:53 -0700 Subject: [PATCH] Adding new vendored gotuf Signed-off-by: Diogo Monica --- Godeps/Godeps.json | 2 +- .../github.com/endophage/gotuf/CONTRIBUTORS | 3 + .../endophage/gotuf/signed/sign_test.go | 55 ++++++++++++------- .../endophage/gotuf/signed/verifiers_test.go | 8 +-- .../endophage/gotuf/signed/verify_test.go | 28 +++++----- 5 files changed, 58 insertions(+), 38 deletions(-) create mode 100644 Godeps/_workspace/src/github.com/endophage/gotuf/CONTRIBUTORS diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index 82541cf4d2..00d93dafab 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -47,7 +47,7 @@ }, { "ImportPath": "github.com/endophage/gotuf", - "Rev": "060b7012cc28711473151872690ce9a0be9ab501" + "Rev": "66da486b58ef378c96433af965f61ca0efaccb9a" }, { "ImportPath": "github.com/go-sql-driver/mysql", diff --git a/Godeps/_workspace/src/github.com/endophage/gotuf/CONTRIBUTORS b/Godeps/_workspace/src/github.com/endophage/gotuf/CONTRIBUTORS new file mode 100644 index 0000000000..5f484889cb --- /dev/null +++ b/Godeps/_workspace/src/github.com/endophage/gotuf/CONTRIBUTORS @@ -0,0 +1,3 @@ +Aaron Lehmann (github: aaronlehmann) +Lewis Marshall (github: lmars) +Jonathan Rudenberg (github: titanous) diff --git a/Godeps/_workspace/src/github.com/endophage/gotuf/signed/sign_test.go b/Godeps/_workspace/src/github.com/endophage/gotuf/signed/sign_test.go index 3cfb9e5018..9c204644c5 100644 --- a/Godeps/_workspace/src/github.com/endophage/gotuf/signed/sign_test.go +++ b/Godeps/_workspace/src/github.com/endophage/gotuf/signed/sign_test.go @@ -1,14 +1,22 @@ package signed import ( + "encoding/pem" "testing" "github.com/endophage/gotuf/data" - "github.com/endophage/gotuf/keys" +) + +const ( + testKeyPEM1 = "-----BEGIN PUBLIC KEY-----\nMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAnKuXZeefa2LmgxaL5NsM\nzKOHNe+x/nL6ik+lDBCTV6OdcwAhHQS+PONGhrChIUVR6Vth3hUCrreLzPO73Oo5\nVSCuRJ53UronENl6lsa5mFKP8StYLvIDITNvkoT3j52BJIjyNUK9UKY9As2TNqDf\nBEPIRp28ev/NViwGOEkBu2UAbwCIdnDXm8JQErCZA0Ydm7PKGgjLbFsFGrVzqXHK\n6pdzJXlhr9yap3UpgQ/iO9JtoEYB2EXsnSrPc9JRjR30bNHHtnVql3fvinXrAEwq\n3xmN4p+R4VGzfdQN+8Kl/IPjqWB535twhFYEG/B7Ze8IwbygBjK3co/KnOPqMUrM\nBI8ztvPiogz+MvXb8WvarZ6TMTh8ifZI96r7zzqyzjR1hJulEy3IsMGvz8XS2J0X\n7sXoaqszEtXdq5ef5zKVxkiyIQZcbPgmpHLq4MgfdryuVVc/RPASoRIXG4lKaTJj\n1ANMFPxDQpHudCLxwCzjCb+sVa20HBRPTnzo8LSZkI6jAgMBAAE=\n-----END PUBLIC KEY-----" + testKeyID1 = "51324b59d4888faa91219ebbe5a3876bb4efb21f0602ddf363cd4c3996ded3d4" + + testKeyPEM2 = "-----BEGIN PUBLIC KEY-----\nMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEArvqUPYb6JJROPJQglPTj\n5uDrsxQKl34Mo+3pSlBVuD6puE4lDnG649a2YksJy+C8ZIPJgokn5w+C3alh+dMe\nzbdWHHxrY1h9CLpYz5cbMlE16303ubkt1rvwDqEezG0HDBzPaKj4oP9YJ9x7wbsq\ndvFcy+Qc3wWd7UWcieo6E0ihbJkYcY8chRXVLg1rL7EfZ+e3bq5+ojA2ECM5JqzZ\nzgDpqCv5hTCYYZp72MZcG7dfSPAHrcSGIrwg7whzz2UsEtCOpsJTuCl96FPN7kAu\n4w/WyM3+SPzzr4/RQXuY1SrLCFD8ebM2zHt/3ATLhPnGmyG5I0RGYoegFaZ2AViw\nlqZDOYnBtgDvKP0zakMtFMbkh2XuNBUBO7Sjs0YcZMjLkh9gYUHL1yWS3Aqus1Lw\nlI0gHS22oyGObVBWkZEgk/Foy08sECLGao+5VvhmGpfVuiz9OKFUmtPVjWzRE4ng\niekEu4drSxpH41inLGSvdByDWLpcTvWQI9nkgclh3AT/AgMBAAE=\n-----END PUBLIC KEY-----" + testKeyID2 = "26f2f5c0fbfa98823bf1ad39d5f3b32575895793baf80f1df675597d5b95dba8" ) type MockCryptoService struct { - testKey keys.PublicKey + testKey data.PublicKey } func (mts *MockCryptoService) Sign(keyIDs []string, _ []byte) ([]data.Signature, error) { @@ -19,12 +27,12 @@ func (mts *MockCryptoService) Sign(keyIDs []string, _ []byte) ([]data.Signature, return sigs, nil } -func (mts *MockCryptoService) Create() (*keys.PublicKey, error) { +func (mts *MockCryptoService) Create(_ string) (*data.PublicKey, error) { return &mts.testKey, nil } -func (mts *MockCryptoService) PublicKeys(keyIDs ...string) (map[string]*keys.PublicKey, error) { - keys := map[string]*keys.PublicKey{"testID": &mts.testKey} +func (mts *MockCryptoService) PublicKeys(keyIDs ...string) (map[string]*data.PublicKey, error) { + keys := map[string]*data.PublicKey{"testID": &mts.testKey} return keys, nil } @@ -32,8 +40,10 @@ var _ CryptoService = &MockCryptoService{} // Test signing and ensure the expected signature is added func TestBasicSign(t *testing.T) { + testKey, _ := pem.Decode([]byte(testKeyPEM1)) + k := data.NewPublicKey("rsa", testKey.Bytes) signer := Signer{&MockCryptoService{ - testKey: keys.PublicKey{ID: "testID"}, + testKey: *k, }} key, err := signer.Create("root") if err != nil { @@ -47,7 +57,7 @@ func TestBasicSign(t *testing.T) { t.Fatalf("Incorrect number of signatures: %d", len(testData.Signatures)) } - if testData.Signatures[0].KeyID != "testID" { + if testData.Signatures[0].KeyID != testKeyID1 { t.Fatalf("Wrong signature ID returned: %s", testData.Signatures[0].KeyID) } @@ -57,20 +67,21 @@ func TestBasicSign(t *testing.T) { // for the key (N.B. MockCryptoService.Sign will still be called again, but Signer.Sign // should be cleaning previous signatures by the KeyID when asked to sign again) func TestReSign(t *testing.T) { + testKey, _ := pem.Decode([]byte(testKeyPEM1)) + k := data.NewPublicKey("rsa", testKey.Bytes) signer := Signer{&MockCryptoService{ - testKey: keys.PublicKey{}, + testKey: *k, }} - key := keys.PublicKey{ID: "testID"} testData := data.Signed{} - signer.Sign(&testData, &key) - signer.Sign(&testData, &key) + signer.Sign(&testData, k) + signer.Sign(&testData, k) if len(testData.Signatures) != 1 { t.Fatalf("Incorrect number of signatures: %d", len(testData.Signatures)) } - if testData.Signatures[0].KeyID != "testID" { + if testData.Signatures[0].KeyID != testKeyID1 { t.Fatalf("Wrong signature ID returned: %s", testData.Signatures[0].KeyID) } @@ -78,19 +89,21 @@ func TestReSign(t *testing.T) { func TestMultiSign(t *testing.T) { signer := Signer{&MockCryptoService{}} - key := keys.PublicKey{ID: "testID1"} testData := data.Signed{} - signer.Sign(&testData, &key) + testKey, _ := pem.Decode([]byte(testKeyPEM1)) + key := data.NewPublicKey("rsa", testKey.Bytes) + signer.Sign(&testData, key) - key = keys.PublicKey{ID: "testID2"} - signer.Sign(&testData, &key) + testKey, _ = pem.Decode([]byte(testKeyPEM2)) + key = data.NewPublicKey("rsa", testKey.Bytes) + signer.Sign(&testData, key) if len(testData.Signatures) != 2 { t.Fatalf("Incorrect number of signatures: %d", len(testData.Signatures)) } - keyIDs := map[string]struct{}{"testID1": struct{}{}, "testID2": struct{}{}} + keyIDs := map[string]struct{}{testKeyID1: struct{}{}, testKeyID2: struct{}{}} for _, sig := range testData.Signatures { if _, ok := keyIDs[sig.KeyID]; !ok { t.Fatalf("Got a signature we didn't expect: %s", sig.KeyID) @@ -100,8 +113,10 @@ func TestMultiSign(t *testing.T) { } func TestCreate(t *testing.T) { + testKey, _ := pem.Decode([]byte(testKeyPEM1)) + k := data.NewPublicKey("rsa", testKey.Bytes) signer := Signer{&MockCryptoService{ - testKey: keys.PublicKey{ID: "testID"}, + testKey: *k, }} key, err := signer.Create("root") @@ -109,7 +124,7 @@ func TestCreate(t *testing.T) { if err != nil { t.Fatal(err) } - if key.ID != "testID" { - t.Fatalf("Expected key ID not found: %s", key.ID) + if key.ID() != testKeyID1 { + t.Fatalf("Expected key ID not found: %s", key.ID()) } } diff --git a/Godeps/_workspace/src/github.com/endophage/gotuf/signed/verifiers_test.go b/Godeps/_workspace/src/github.com/endophage/gotuf/signed/verifiers_test.go index b51ae0c15d..4f57d2ea6b 100644 --- a/Godeps/_workspace/src/github.com/endophage/gotuf/signed/verifiers_test.go +++ b/Godeps/_workspace/src/github.com/endophage/gotuf/signed/verifiers_test.go @@ -1,10 +1,10 @@ package signed import ( - "crypto" - "crypto/rsa" - "crypto/sha256" - "crypto/x509" + _ "crypto" + _ "crypto/rsa" + _ "crypto/sha256" + _ "crypto/x509" "testing" ) diff --git a/Godeps/_workspace/src/github.com/endophage/gotuf/signed/verify_test.go b/Godeps/_workspace/src/github.com/endophage/gotuf/signed/verify_test.go index b2dde99cd7..f9f5748d3f 100644 --- a/Godeps/_workspace/src/github.com/endophage/gotuf/signed/verify_test.go +++ b/Godeps/_workspace/src/github.com/endophage/gotuf/signed/verify_test.go @@ -23,7 +23,7 @@ func (VerifySuite) Test(c *C) { signer := NewSigner(trust) type test struct { name string - keys []*keys.PublicKey + keys []*data.PublicKey roles map[string]*data.Role s *data.Signed ver int @@ -81,7 +81,7 @@ func (VerifySuite) Test(c *C) { k, _ := signer.Create("root") signer.Sign(t.s, k) t.keys = append(t.keys, k) - t.roles["root"].KeyIDs = append(t.roles["root"].KeyIDs, k.ID) + t.roles["root"].KeyIDs = append(t.roles["root"].KeyIDs, k.ID()) }, }, { @@ -139,7 +139,7 @@ func (VerifySuite) Test(c *C) { { name: "expired", exp: &expiredTime, - err: ErrExpired{expiredTime}, + err: ErrExpired{expiredTime.Format("2006-01-02 15:04:05 MST")}, }, } for _, t := range tests { @@ -154,24 +154,27 @@ func (VerifySuite) Test(c *C) { t.exp = &expires } if t.typ == "" { - t.typ = t.role + t.typ = data.TUFTypes[t.role] } if t.keys == nil && t.s == nil { k, _ := signer.Create("root") - meta := &signedMeta{Type: t.typ, Version: t.ver, Expires: *t.exp} + meta := &signedMeta{Type: t.typ, Version: t.ver, Expires: t.exp.Format("2006-01-02 15:04:05 MST")} b, err := cjson.Marshal(meta) c.Assert(err, IsNil) s := &data.Signed{Signed: b} signer.Sign(s, k) t.s = s - t.keys = []*keys.PublicKey{k} + t.keys = []*data.PublicKey{k} } if t.roles == nil { t.roles = map[string]*data.Role{ "root": &data.Role{ - KeyIDs: []string{t.keys[0].ID}, - Threshold: 1, + RootRole: data.RootRole{ + KeyIDs: []string{t.keys[0].ID()}, + Threshold: 1, + }, + Name: "root", }, } } @@ -181,11 +184,10 @@ func (VerifySuite) Test(c *C) { db := keys.NewDB() for _, k := range t.keys { - err := db.AddKey(k) - c.Assert(err, IsNil) + db.AddKey(k) } - for n, r := range t.roles { - err := db.AddRole(n, r) + for _, r := range t.roles { + err := db.AddRole(r) c.Assert(err, IsNil) } @@ -203,5 +205,5 @@ func assertErrExpired(c *C, err error, expected ErrExpired) { if !ok { c.Fatalf("expected err to have type ErrExpired, got %T", err) } - c.Assert(actual.Expired.Unix(), Equals, expected.Expired.Unix()) + c.Assert(actual.Expired, Equals, expected.Expired) }