@@ -3,8 +3,6 @@ package certificate
33import (
44 "crypto/rand"
55 "crypto/rsa"
6- "encoding/json"
7- "io"
86 "net/http"
97 "testing"
108 "time"
@@ -13,40 +11,28 @@ import (
1311 "github.com/go-acme/lego/v4/acme/api"
1412 "github.com/go-acme/lego/v4/certcrypto"
1513 "github.com/go-acme/lego/v4/platform/tester"
16- "github.com/go-jose/go-jose/v4"
1714 "github.com/stretchr/testify/assert"
1815 "github.com/stretchr/testify/require"
1916)
2017
2118const (
2219 ariLeafPEM = `-----BEGIN CERTIFICATE-----
23- MIIDMDCCAhigAwIBAgIIPqNFaGVEHxwwDQYJKoZIhvcNAQELBQAwIDEeMBwGA1UE
24- AxMVbWluaWNhIHJvb3QgY2EgM2ExMzU2MB4XDTIyMDMxNzE3NTEwOVoXDTI0MDQx
25- NjE3NTEwOVowFjEUMBIGA1UEAxMLZXhhbXBsZS5jb20wggEiMA0GCSqGSIb3DQEB
26- AQUAA4IBDwAwggEKAoIBAQCgm9K/c+il2Pf0f8qhgxn9SKqXq88cOm9ov9AVRbPA
27- OWAAewqX2yUAwI4LZBGEgzGzTATkiXfoJ3cN3k39cH6tBbb3iSPuEn7OZpIk9D+e
28- 3Q9/hX+N/jlWkaTB/FNA+7aE5IVWhmdczYilXa10V9r+RcvACJt0gsipBZVJ4jfJ
29- HnWJJGRZzzxqG/xkQmpXxZO7nOPFc8SxYKWdfcgp+rjR2ogYhSz7BfKoVakGPbpX
30- vZOuT9z4kkHra/WjwlkQhtHoTXdAxH3qC2UjMzO57Tx+otj0CxAv9O7CTJXISywB
31- vEVcmTSZkHS3eZtvvIwPx7I30ITRkYk/tLl1MbyB3SiZAgMBAAGjeDB2MA4GA1Ud
32- DwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0T
33- AQH/BAIwADAfBgNVHSMEGDAWgBQ4zzDRUaXHVKqlSTWkULGU4zGZpTAWBgNVHREE
34- DzANggtleGFtcGxlLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAx0aYvmCk7JYGNEXe
35- +hrOfKawkHYzWvA92cI/Oi6h+oSdHZ2UKzwFNf37cVKZ37FCrrv5pFP/xhhHvrNV
36- EnOx4IaF7OrnaTu5miZiUWuvRQP7ZGmGNFYbLTEF6/dj+WqyYdVaWzxRqHFu1ptC
37- TXysJCeyiGnR+KOOjOOQ9ZlO5JUK3OE4hagPLfaIpDDy6RXQt3ss0iNLuB1+IOtp
38- 1URpvffLZQ8xPsEgOZyPWOcabTwJrtqBwily+lwPFn2mChUx846LwQfxtsXU/lJg
39- HX2RteNJx7YYNeX3Uf960mgo5an6vE8QNAsIoNHYrGyEmXDhTRe9mCHyiW2S7fZq
40- o9q12g==
20+ MIIBQzCB66ADAgECAgUAh2VDITAKBggqhkjOPQQDAjAVMRMwEQYDVQQDEwpFeGFt
21+ cGxlIENBMCIYDzAwMDEwMTAxMDAwMDAwWhgPMDAwMTAxMDEwMDAwMDBaMBYxFDAS
22+ BgNVBAMTC2V4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEeBZu
23+ 7cbpAYNXZLbbh8rNIzuOoqOOtmxA1v7cRm//AwyMwWxyHz4zfwmBhcSrf47NUAFf
24+ qzLQ2PPQxdTXREYEnKMjMCEwHwYDVR0jBBgwFoAUaYhba4dGQEHhs3uEe6CuLN4B
25+ yNQwCgYIKoZIzj0EAwIDRwAwRAIge09+S5TZAlw5tgtiVvuERV6cT4mfutXIlwTb
26+ +FYN/8oCIClDsqBklhB9KAelFiYt9+6FDj3z4KGVelYM5MdsO3pK
4127-----END CERTIFICATE-----`
42- ariLeafCertID = "OM8w0VGlx1SqpUk1pFCxlOMxmaU.PqNFaGVEHxw "
28+ ariLeafCertID = "aYhba4dGQEHhs3uEe6CuLN4ByNQ.AIdlQyE "
4329)
4430
4531func Test_makeCertID (t * testing.T ) {
4632 leaf , err := certcrypto .ParsePEMCertificate ([]byte (ariLeafPEM ))
4733 require .NoError (t , err )
4834
49- actual , err := makeARICertID (leaf )
35+ actual , err := MakeARICertID (leaf )
5036 require .NoError (t , err )
5137 assert .Equal (t , ariLeafCertID , actual )
5238}
@@ -145,85 +131,6 @@ func TestCertifier_GetRenewalInfo_errors(t *testing.T) {
145131 }
146132}
147133
148- func TestCertifier_UpdateRenewalInfo (t * testing.T ) {
149- leaf , err := certcrypto .ParsePEMCertificate ([]byte (ariLeafPEM ))
150- require .NoError (t , err )
151-
152- key , err := rsa .GenerateKey (rand .Reader , 2048 )
153- require .NoError (t , err , "Could not generate test key" )
154-
155- // Test with a fake API.
156- mux , apiURL := tester .SetupFakeAPI (t )
157- mux .HandleFunc ("/renewalInfo" , func (w http.ResponseWriter , r * http.Request ) {
158- if r .Method != http .MethodPost {
159- http .Error (w , http .StatusText (http .StatusMethodNotAllowed ), http .StatusMethodNotAllowed )
160- return
161- }
162-
163- body , rsbErr := readSignedBody (r , key )
164- if rsbErr != nil {
165- http .Error (w , rsbErr .Error (), http .StatusBadRequest )
166- return
167- }
168-
169- var req acme.RenewalInfoUpdateRequest
170- err = json .Unmarshal (body , & req )
171- assert .NoError (t , err )
172- assert .True (t , req .Replaced )
173- assert .Equal (t , ariLeafCertID , req .CertID )
174-
175- w .WriteHeader (http .StatusOK )
176- })
177-
178- core , err := api .New (http .DefaultClient , "lego-test" , apiURL + "/dir" , "" , key )
179- require .NoError (t , err )
180-
181- certifier := NewCertifier (core , & resolverMock {}, CertifierOptions {KeyType : certcrypto .RSA2048 })
182-
183- err = certifier .UpdateRenewalInfo (RenewalInfoRequest {leaf })
184- require .NoError (t , err )
185- }
186-
187- func TestCertifier_UpdateRenewalInfo_errors (t * testing.T ) {
188- leaf , err := certcrypto .ParsePEMCertificate ([]byte (ariLeafPEM ))
189- require .NoError (t , err )
190-
191- key , err := rsa .GenerateKey (rand .Reader , 2048 )
192- require .NoError (t , err , "Could not generate test key" )
193-
194- testCases := []struct {
195- desc string
196- request RenewalInfoRequest
197- }{
198- {
199- desc : "API error" ,
200- request : RenewalInfoRequest {leaf },
201- },
202- }
203-
204- for _ , test := range testCases {
205- test := test
206- t .Run (test .desc , func (t * testing.T ) {
207- t .Parallel ()
208-
209- mux , apiURL := tester .SetupFakeAPI (t )
210-
211- // Always returns an error.
212- mux .HandleFunc ("/renewalInfo" , func (w http.ResponseWriter , r * http.Request ) {
213- http .Error (w , http .StatusText (http .StatusBadRequest ), http .StatusBadRequest )
214- })
215-
216- core , err := api .New (http .DefaultClient , "lego-test" , apiURL + "/dir" , "" , key )
217- require .NoError (t , err )
218-
219- certifier := NewCertifier (core , & resolverMock {}, CertifierOptions {KeyType : certcrypto .RSA2048 })
220-
221- err = certifier .UpdateRenewalInfo (test .request )
222- require .Error (t , err )
223- })
224- }
225- }
226-
227134func TestRenewalInfoResponse_ShouldRenew (t * testing.T ) {
228135 now := time .Now ().UTC ()
229136
@@ -289,26 +196,3 @@ func TestRenewalInfoResponse_ShouldRenew(t *testing.T) {
289196 assert .Nil (t , rt )
290197 })
291198}
292-
293- func readSignedBody (r * http.Request , privateKey * rsa.PrivateKey ) ([]byte , error ) {
294- reqBody , err := io .ReadAll (r .Body )
295- if err != nil {
296- return nil , err
297- }
298-
299- sigAlgs := []jose.SignatureAlgorithm {jose .RS256 }
300- jws , err := jose .ParseSigned (string (reqBody ), sigAlgs )
301- if err != nil {
302- return nil , err
303- }
304-
305- body , err := jws .Verify (& jose.JSONWebKey {
306- Key : privateKey .Public (),
307- Algorithm : "RSA" ,
308- })
309- if err != nil {
310- return nil , err
311- }
312-
313- return body , nil
314- }
0 commit comments