Skip to content

Commit 9c5892c

Browse files
authored
fix(bundles): do not store full chain (#1787)
Signed-off-by: Jose I. Paris <[email protected]>
1 parent 33d341e commit 9c5892c

File tree

2 files changed

+15
-15
lines changed

2 files changed

+15
-15
lines changed

pkg/attestation/renderer/renderer.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -164,19 +164,19 @@ func (ab *AttestationRenderer) envelopeToBundle(dsseEnvelope *dsse.Envelope) (*p
164164
// public keys.
165165
if v, ok := ab.signer.(*chainloopsigner.Signer); ok {
166166
chain := v.Chain
167-
certs := make([]*v12.X509Certificate, 0)
168-
// Store cert chain except root certificate, as it's required to be provided separately
169-
for _, c := range chain[0 : len(chain)-1] {
170-
block, _ := pem.Decode([]byte(c))
171-
if block == nil {
172-
return nil, fmt.Errorf("failed to decode PEM block")
173-
}
174-
certs = append(certs, &v12.X509Certificate{RawBytes: block.Bytes})
167+
if len(chain) == 0 {
168+
return nil, errors.New("certificate chain is empty")
175169
}
176-
bundle.VerificationMaterial.Content = &protobundle.VerificationMaterial_X509CertificateChain{
177-
X509CertificateChain: &v12.X509CertificateChain{
178-
Certificates: certs,
179-
},
170+
171+
// Store generated cert, ignoring the chain
172+
block, _ := pem.Decode([]byte(chain[0]))
173+
if block == nil {
174+
return nil, fmt.Errorf("failed to decode PEM block")
175+
}
176+
177+
cert := &v12.X509Certificate{RawBytes: block.Bytes}
178+
bundle.VerificationMaterial.Content = &protobundle.VerificationMaterial_Certificate{
179+
Certificate: cert,
180180
}
181181
}
182182

pkg/attestation/renderer/renderer_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ func (s *rendererSuite) TestEnvelopeToBundle() {
123123
s.Nil(bundle.GetVerificationMaterial().GetContent())
124124
})
125125

126-
s.Run("from keyless signer, it adds intermediate certificates, but not the root CA", func() {
126+
s.Run("from keyless signer, it doesn't add intermediate certificates nor root CA", func() {
127127
envelope, err := testEnvelope("chainloop/testdata/valid.envelope.v2.json")
128128
s.Require().NoError(err)
129129

@@ -145,12 +145,12 @@ func (s *rendererSuite) TestEnvelopeToBundle() {
145145
s.Equal("application/vnd.in-toto+json", bundle.GetDsseEnvelope().GetPayloadType())
146146

147147
// only 1 cert is added
148-
s.Equal(1, len(bundle.GetVerificationMaterial().GetX509CertificateChain().GetCertificates()))
148+
s.NotNil(bundle.GetVerificationMaterial().GetCertificate())
149149

150150
// and it's the leaf certificate
151151
s.Equal(cert, string(pem.EncodeToMemory(&pem.Block{
152152
Type: "CERTIFICATE",
153-
Bytes: bundle.GetVerificationMaterial().GetX509CertificateChain().GetCertificates()[0].RawBytes}),
153+
Bytes: bundle.GetVerificationMaterial().GetCertificate().RawBytes}),
154154
))
155155
})
156156
}

0 commit comments

Comments
 (0)