diff --git a/lib/common/lease_set.go b/lib/common/lease_set.go index 3679f32..cc61f1a 100644 --- a/lib/common/lease_set.go +++ b/lib/common/lease_set.go @@ -267,7 +267,7 @@ func (lease_set LeaseSet) Signature() (signature Signature, err error) { (LEASE_SIZE * lease_count) cert, err := destination.Certificate() if err != nil { - + return } cert_type, _ := cert.Type() var end int @@ -287,7 +287,7 @@ func (lease_set LeaseSet) Signature() (signature Signature, err error) { err = errors.New("error parsing signature: not enough data") return } - copy(signature[:], lease_set[start:end]) + signature = []byte(lease_set[start:end]) return } diff --git a/lib/common/lease_set_test.go b/lib/common/lease_set_test.go index 4d5be48..7ef12e9 100644 --- a/lib/common/lease_set_test.go +++ b/lib/common/lease_set_test.go @@ -29,11 +29,23 @@ func buildSigningKey() []byte { } func buildLease(n int) []byte { - return make([]byte, LEASE_SIZE*n) + data := make([]byte, 0) + for i := 0; i < n; i++ { + lease := make([]byte, LEASE_SIZE) + for i := range lease { + lease[i] = byte(i) + } + data = append(data, lease...) + } + return data } -func buildSignature() []byte { - return make([]byte, 40) +func buildSignature(size int) []byte { + sig := make([]byte, size) + for i := range sig { + sig[i] = 0x08 + } + return sig } func buildFullLeaseSet(n int) LeaseSet { @@ -43,7 +55,7 @@ func buildFullLeaseSet(n int) LeaseSet { lease_set_data = append(lease_set_data, buildSigningKey()...) lease_set_data = append(lease_set_data, byte(n)) lease_set_data = append(lease_set_data, buildLease(n)...) - lease_set_data = append(lease_set_data, buildSignature()...) + lease_set_data = append(lease_set_data, buildSignature(64)...) return LeaseSet(lease_set_data) } @@ -117,8 +129,45 @@ func TestLeaseCountErrorWithTooMany(t *testing.T) { assert.Equal(17, count) } -// TestLeases +func TestLeasesHaveCorrectData(t *testing.T) { + assert := assert.New(t) -// TestSignature + lease_set := buildFullLeaseSet(3) + count, err := lease_set.LeaseCount() + if assert.Nil(err) && assert.Equal(3, count) { + leases, err := lease_set.Leases() + if assert.Nil(err) { + for i := 0; i < count; i++ { + lease := make([]byte, LEASE_SIZE) + for i := range lease { + lease[i] = byte(i) + } + assert.Equal( + 0, + bytes.Compare( + lease, + leases[i][:], + ), + ) + } + } + } +} + +func TestSignatureIsCorrect(t *testing.T) { + assert := assert.New(t) + + lease_set := buildFullLeaseSet(1) + sig, err := lease_set.Signature() + if assert.Nil(err) { + assert.Equal( + 0, + bytes.Compare( + buildSignature(64), + sig, + ), + ) + } +} // TestOldestExpiration