1// Copyright (C) 2019 Storj Labs, Inc. 2// See LICENSE for copying information. 3 4package testpeertls 5 6import ( 7 "testing" 8 9 "github.com/stretchr/testify/assert" 10 "github.com/stretchr/testify/require" 11 12 "storj.io/common/identity" 13 "storj.io/common/identity/testidentity" 14 "storj.io/common/peertls" 15 "storj.io/common/pkcrypto" 16 "storj.io/common/storj" 17) 18 19func TestNewCertChain(t *testing.T) { 20 testidentity.CompleteIdentityVersionsTest(t, func(t *testing.T, version storj.IDVersion, ident *identity.FullIdentity) { 21 for length := 2; length < 4; length++ { 22 t.Logf("length: %d", length) 23 keys, chain, err := NewCertChain(length, version.Number) 24 require.NoError(t, err) 25 26 assert.Len(t, chain, length) 27 assert.Len(t, keys, length) 28 29 pubKey, err := pkcrypto.PublicKeyFromPrivate(keys[peertls.CAIndex]) 30 require.NoError(t, err) 31 assert.Equal(t, pubKey, chain[peertls.CAIndex].PublicKey) 32 33 pubKey, err = pkcrypto.PublicKeyFromPrivate(keys[peertls.LeafIndex]) 34 require.NoError(t, err) 35 assert.Equal(t, pubKey, chain[peertls.LeafIndex].PublicKey) 36 37 err = peertls.VerifyPeerCertChains(nil, identity.ToChains(chain)) 38 assert.NoError(t, err) 39 40 assert.True(t, chain[peertls.CAIndex].IsCA) 41 assert.False(t, chain[peertls.LeafIndex].IsCA) 42 } 43 }) 44} 45