Skip to content

Commit c798735

Browse files
authored
Merge pull request #1542 from smallstep/herman/webhook-request-id
Propagate request ID when webhook requests are made
2 parents 6ce502c + 041b486 commit c798735

20 files changed

+187
-108
lines changed

acme/api/revoke_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ type mockCA struct {
281281
MockAreSANsallowed func(ctx context.Context, sans []string) error
282282
}
283283

284-
func (m *mockCA) Sign(*x509.CertificateRequest, provisioner.SignOptions, ...provisioner.SignOption) ([]*x509.Certificate, error) {
284+
func (m *mockCA) SignWithContext(context.Context, *x509.CertificateRequest, provisioner.SignOptions, ...provisioner.SignOption) ([]*x509.Certificate, error) {
285285
return nil, nil
286286
}
287287

acme/common.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ var clock Clock
2121

2222
// CertificateAuthority is the interface implemented by a CA authority.
2323
type CertificateAuthority interface {
24-
Sign(cr *x509.CertificateRequest, opts provisioner.SignOptions, signOpts ...provisioner.SignOption) ([]*x509.Certificate, error)
24+
SignWithContext(ctx context.Context, cr *x509.CertificateRequest, opts provisioner.SignOptions, signOpts ...provisioner.SignOption) ([]*x509.Certificate, error)
2525
AreSANsAllowed(ctx context.Context, sans []string) error
2626
IsRevoked(sn string) (bool, error)
2727
Revoke(context.Context, *authority.RevokeOptions) error

acme/order.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ func (o *Order) Finalize(ctx context.Context, db DB, csr *x509.CertificateReques
263263
signOps = append(signOps, extraOptions...)
264264

265265
// Sign a new certificate.
266-
certChain, err := auth.Sign(csr, provisioner.SignOptions{
266+
certChain, err := auth.SignWithContext(ctx, csr, provisioner.SignOptions{
267267
NotBefore: provisioner.NewTimeDuration(o.NotBefore),
268268
NotAfter: provisioner.NewTimeDuration(o.NotAfter),
269269
}, signOps...)

acme/order_test.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -271,16 +271,16 @@ func TestOrder_UpdateStatus(t *testing.T) {
271271
}
272272

273273
type mockSignAuth struct {
274-
sign func(csr *x509.CertificateRequest, signOpts provisioner.SignOptions, extraOpts ...provisioner.SignOption) ([]*x509.Certificate, error)
274+
signWithContext func(ctx context.Context, csr *x509.CertificateRequest, signOpts provisioner.SignOptions, extraOpts ...provisioner.SignOption) ([]*x509.Certificate, error)
275275
areSANsAllowed func(ctx context.Context, sans []string) error
276276
loadProvisionerByName func(string) (provisioner.Interface, error)
277277
ret1, ret2 interface{}
278278
err error
279279
}
280280

281-
func (m *mockSignAuth) Sign(csr *x509.CertificateRequest, signOpts provisioner.SignOptions, extraOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
282-
if m.sign != nil {
283-
return m.sign(csr, signOpts, extraOpts...)
281+
func (m *mockSignAuth) SignWithContext(ctx context.Context, csr *x509.CertificateRequest, signOpts provisioner.SignOptions, extraOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
282+
if m.signWithContext != nil {
283+
return m.signWithContext(ctx, csr, signOpts, extraOpts...)
284284
} else if m.err != nil {
285285
return nil, m.err
286286
}
@@ -578,7 +578,7 @@ func TestOrder_Finalize(t *testing.T) {
578578
},
579579
},
580580
ca: &mockSignAuth{
581-
sign: func(_csr *x509.CertificateRequest, signOpts provisioner.SignOptions, extraOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
581+
signWithContext: func(_ context.Context, _csr *x509.CertificateRequest, signOpts provisioner.SignOptions, extraOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
582582
assert.Equals(t, _csr, csr)
583583
return nil, errors.New("force")
584584
},
@@ -628,7 +628,7 @@ func TestOrder_Finalize(t *testing.T) {
628628
},
629629
},
630630
ca: &mockSignAuth{
631-
sign: func(_csr *x509.CertificateRequest, signOpts provisioner.SignOptions, extraOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
631+
signWithContext: func(_ context.Context, _csr *x509.CertificateRequest, signOpts provisioner.SignOptions, extraOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
632632
assert.Equals(t, _csr, csr)
633633
return []*x509.Certificate{foo, bar, baz}, nil
634634
},
@@ -685,7 +685,7 @@ func TestOrder_Finalize(t *testing.T) {
685685
},
686686
},
687687
ca: &mockSignAuth{
688-
sign: func(_csr *x509.CertificateRequest, signOpts provisioner.SignOptions, extraOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
688+
signWithContext: func(_ context.Context, _csr *x509.CertificateRequest, signOpts provisioner.SignOptions, extraOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
689689
assert.Equals(t, _csr, csr)
690690
return []*x509.Certificate{foo, bar, baz}, nil
691691
},
@@ -770,7 +770,7 @@ func TestOrder_Finalize(t *testing.T) {
770770
},
771771
},
772772
ca: &mockSignAuth{
773-
sign: func(_csr *x509.CertificateRequest, signOpts provisioner.SignOptions, extraOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
773+
signWithContext: func(_ context.Context, _csr *x509.CertificateRequest, signOpts provisioner.SignOptions, extraOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
774774
assert.Equals(t, _csr, csr)
775775
return []*x509.Certificate{leaf, inter, root}, nil
776776
},
@@ -863,7 +863,7 @@ func TestOrder_Finalize(t *testing.T) {
863863
},
864864
},
865865
ca: &mockSignAuth{
866-
sign: func(_csr *x509.CertificateRequest, signOpts provisioner.SignOptions, extraOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
866+
signWithContext: func(_ context.Context, _csr *x509.CertificateRequest, signOpts provisioner.SignOptions, extraOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
867867
assert.Equals(t, _csr, csr)
868868
return []*x509.Certificate{leaf, inter, root}, nil
869869
},
@@ -973,7 +973,7 @@ func TestOrder_Finalize(t *testing.T) {
973973
// using the mocking functions as a wrapper for actual test helpers generated per test case or per
974974
// function that's tested.
975975
ca: &mockSignAuth{
976-
sign: func(_csr *x509.CertificateRequest, signOpts provisioner.SignOptions, extraOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
976+
signWithContext: func(_ context.Context, _csr *x509.CertificateRequest, signOpts provisioner.SignOptions, extraOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
977977
assert.Equals(t, _csr, csr)
978978
return []*x509.Certificate{leaf, inter, root}, nil
979979
},
@@ -1044,7 +1044,7 @@ func TestOrder_Finalize(t *testing.T) {
10441044
},
10451045
},
10461046
ca: &mockSignAuth{
1047-
sign: func(_csr *x509.CertificateRequest, signOpts provisioner.SignOptions, extraOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
1047+
signWithContext: func(_ context.Context, _csr *x509.CertificateRequest, signOpts provisioner.SignOptions, extraOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
10481048
assert.Equals(t, _csr, csr)
10491049
return []*x509.Certificate{foo, bar, baz}, nil
10501050
},
@@ -1108,7 +1108,7 @@ func TestOrder_Finalize(t *testing.T) {
11081108
},
11091109
},
11101110
ca: &mockSignAuth{
1111-
sign: func(_csr *x509.CertificateRequest, signOpts provisioner.SignOptions, extraOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
1111+
signWithContext: func(_ context.Context, _csr *x509.CertificateRequest, signOpts provisioner.SignOptions, extraOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
11121112
assert.Equals(t, _csr, csr)
11131113
return []*x509.Certificate{foo, bar, baz}, nil
11141114
},
@@ -1175,7 +1175,7 @@ func TestOrder_Finalize(t *testing.T) {
11751175
},
11761176
},
11771177
ca: &mockSignAuth{
1178-
sign: func(_csr *x509.CertificateRequest, signOpts provisioner.SignOptions, extraOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
1178+
signWithContext: func(_ context.Context, _csr *x509.CertificateRequest, signOpts provisioner.SignOptions, extraOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
11791179
assert.Equals(t, _csr, csr)
11801180
return []*x509.Certificate{foo, bar, baz}, nil
11811181
},

api/api.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ type Authority interface {
4242
AuthorizeRenewToken(ctx context.Context, ott string) (*x509.Certificate, error)
4343
GetTLSOptions() *config.TLSOptions
4444
Root(shasum string) (*x509.Certificate, error)
45-
Sign(cr *x509.CertificateRequest, opts provisioner.SignOptions, signOpts ...provisioner.SignOption) ([]*x509.Certificate, error)
45+
SignWithContext(ctx context.Context, cr *x509.CertificateRequest, opts provisioner.SignOptions, signOpts ...provisioner.SignOption) ([]*x509.Certificate, error)
4646
Renew(peer *x509.Certificate) ([]*x509.Certificate, error)
4747
RenewContext(ctx context.Context, peer *x509.Certificate, pk crypto.PublicKey) ([]*x509.Certificate, error)
4848
Rekey(peer *x509.Certificate, pk crypto.PublicKey) ([]*x509.Certificate, error)

api/api_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ type mockAuthority struct {
189189
authorizeRenewToken func(ctx context.Context, ott string) (*x509.Certificate, error)
190190
getTLSOptions func() *authority.TLSOptions
191191
root func(shasum string) (*x509.Certificate, error)
192-
sign func(cr *x509.CertificateRequest, opts provisioner.SignOptions, signOpts ...provisioner.SignOption) ([]*x509.Certificate, error)
192+
signWithContext func(ctx context.Context, cr *x509.CertificateRequest, opts provisioner.SignOptions, signOpts ...provisioner.SignOption) ([]*x509.Certificate, error)
193193
renew func(cert *x509.Certificate) ([]*x509.Certificate, error)
194194
rekey func(oldCert *x509.Certificate, pk crypto.PublicKey) ([]*x509.Certificate, error)
195195
renewContext func(ctx context.Context, oldCert *x509.Certificate, pk crypto.PublicKey) ([]*x509.Certificate, error)
@@ -251,9 +251,9 @@ func (m *mockAuthority) Root(shasum string) (*x509.Certificate, error) {
251251
return m.ret1.(*x509.Certificate), m.err
252252
}
253253

254-
func (m *mockAuthority) Sign(cr *x509.CertificateRequest, opts provisioner.SignOptions, signOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
255-
if m.sign != nil {
256-
return m.sign(cr, opts, signOpts...)
254+
func (m *mockAuthority) SignWithContext(ctx context.Context, cr *x509.CertificateRequest, opts provisioner.SignOptions, signOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
255+
if m.signWithContext != nil {
256+
return m.signWithContext(ctx, cr, opts, signOpts...)
257257
}
258258
return []*x509.Certificate{m.ret1.(*x509.Certificate), m.ret2.(*x509.Certificate)}, m.err
259259
}

api/sign.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ func Sign(w http.ResponseWriter, r *http.Request) {
7878
return
7979
}
8080

81-
certChain, err := a.Sign(body.CsrPEM.CertificateRequest, opts, signOpts...)
81+
certChain, err := a.SignWithContext(ctx, body.CsrPEM.CertificateRequest, opts, signOpts...)
8282
if err != nil {
8383
render.Error(w, errs.ForbiddenErr(err, "error signing certificate"))
8484
return

api/ssh.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ func SSHSign(w http.ResponseWriter, r *http.Request) {
330330
NotAfter: time.Unix(int64(cert.ValidBefore), 0),
331331
})
332332

333-
certChain, err := a.Sign(cr, provisioner.SignOptions{}, signOpts...)
333+
certChain, err := a.SignWithContext(ctx, cr, provisioner.SignOptions{}, signOpts...)
334334
if err != nil {
335335
render.Error(w, errs.ForbiddenErr(err, "error signing identity certificate"))
336336
return

api/ssh_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ func Test_SSHSign(t *testing.T) {
325325
signSSHAddUser: func(ctx context.Context, key ssh.PublicKey, cert *ssh.Certificate) (*ssh.Certificate, error) {
326326
return tt.addUserCert, tt.addUserErr
327327
},
328-
sign: func(cr *x509.CertificateRequest, opts provisioner.SignOptions, signOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
328+
signWithContext: func(ctx context.Context, cr *x509.CertificateRequest, opts provisioner.SignOptions, signOpts ...provisioner.SignOption) ([]*x509.Certificate, error) {
329329
return tt.tlsSignCerts, tt.tlsSignErr
330330
},
331331
})

authority/authority_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package authority
22

33
import (
4+
"context"
45
"crypto"
56
"crypto/rand"
67
"crypto/sha256"
@@ -414,7 +415,7 @@ func TestNewEmbedded_Sign(t *testing.T) {
414415
csr, err := x509.ParseCertificateRequest(cr)
415416
assert.FatalError(t, err)
416417

417-
cert, err := a.Sign(csr, provisioner.SignOptions{})
418+
cert, err := a.SignWithContext(context.Background(), csr, provisioner.SignOptions{})
418419
assert.FatalError(t, err)
419420
assert.Equals(t, []string{"foo.bar.zar"}, cert[0].DNSNames)
420421
assert.Equals(t, crt, cert[1])

0 commit comments

Comments
 (0)