@@ -29,13 +29,14 @@ import (
29
29
"github.com/go-chi/chi"
30
30
"github.com/pkg/errors"
31
31
sassert "github.com/stretchr/testify/assert"
32
- "golang.org/x/crypto/ssh"
33
- squarejose "gopkg.in/square/go-jose.v2"
34
-
32
+ "github.com/stretchr/testify/require"
35
33
"go.step.sm/crypto/jose"
36
34
"go.step.sm/crypto/x509util"
35
+ "golang.org/x/crypto/ssh"
36
+ squarejose "gopkg.in/square/go-jose.v2"
37
37
38
38
"github.com/smallstep/assert"
39
+
39
40
"github.com/smallstep/certificates/authority"
40
41
"github.com/smallstep/certificates/authority/provisioner"
41
42
"github.com/smallstep/certificates/errs"
@@ -1657,3 +1658,31 @@ func TestProvisionersResponse_MarshalJSON(t *testing.T) {
1657
1658
// MarshalJSON must not affect the struct properties itself
1658
1659
sassert .Equal (t , expList , r .Provisioners )
1659
1660
}
1661
+
1662
+ const (
1663
+ fixtureECDSACertificate = `ecdsa-sha2-nistp256-cert-v01@openssh.com AAAAKGVjZHNhLXNoYTItbmlzdHAyNTYtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgLnkvSk4odlo3b1R+RDw+LmorL3RkN354IilCIVFVen4AAAAIbmlzdHAyNTYAAABBBHjKHss8WM2ffMYlavisoLXR0I6UEIU+cidV1ogEH1U6+/SYaFPrlzQo0tGLM5CNkMbhInbyasQsrHzn8F1Rt7nHg5/tcSf9qwAAAAEAAAAGaGVybWFuAAAACgAAAAZoZXJtYW4AAAAAY8kvJwAAAABjyhBjAAAAAAAAAIIAAAAVcGVybWl0LVgxMS1mb3J3YXJkaW5nAAAAAAAAABdwZXJtaXQtYWdlbnQtZm9yd2FyZGluZwAAAAAAAAAWcGVybWl0LXBvcnQtZm9yd2FyZGluZwAAAAAAAAAKcGVybWl0LXB0eQAAAAAAAAAOcGVybWl0LXVzZXItcmMAAAAAAAAAAAAAAGgAAAATZWNkc2Etc2hhMi1uaXN0cDI1NgAAAAhuaXN0cDI1NgAAAEEE/ayqpPrZZF5uA1UlDt4FreTf15agztQIzpxnWq/XoxAHzagRSkFGkdgFpjgsfiRpP8URHH3BZScqc0ZDCTxhoQAAAGQAAAATZWNkc2Etc2hhMi1uaXN0cDI1NgAAAEkAAAAhAJuP1wCVwoyrKrEtHGfFXrVbRHySDjvXtS1tVTdHyqymAAAAIBa/CSSzfZb4D2NLP+eEmOOMJwSjYOiNM8fiOoAaqglI herman`
1664
+ )
1665
+
1666
+ func TestLogSSHCertificate (t * testing.T ) {
1667
+
1668
+ out , _ , _ , _ , err := ssh .ParseAuthorizedKey ([]byte (fixtureECDSACertificate ))
1669
+ require .NoError (t , err )
1670
+
1671
+ cert , ok := out .(* ssh.Certificate )
1672
+ require .True (t , ok )
1673
+
1674
+ w := httptest .NewRecorder ()
1675
+ rl := logging .NewResponseLogger (w )
1676
+ LogSSHCertificate (rl , cert )
1677
+
1678
+ sassert .Equal (t , 200 , w .Result ().StatusCode )
1679
+
1680
+ fields := rl .Fields ()
1681
+ sassert .Equal (t , uint64 (14376510277651266987 ), fields ["serial" ])
1682
+ sassert .Equal (t , []string {"herman" }, fields ["principals" ])
1683
+ sassert .Equal (t , "ecdsa-sha2-nistp256-cert-v01@openssh.com user certificate" , fields ["certificate-type" ])
1684
+ sassert .Equal (t , time .Unix (1674129191 , 0 ).Format (time .RFC3339 ), fields ["valid-from" ])
1685
+ sassert .Equal (t , time .Unix (1674186851 , 0 ).Format (time .RFC3339 ), fields ["valid-to" ])
1686
+ sassert .Equal (t , "AAAAKGVjZHNhLXNoYTItbmlzdHAyNTYtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgLnkvSk4odlo3b1R+RDw+LmorL3RkN354IilCIVFVen4AAAAIbmlzdHAyNTYAAABBBHjKHss8WM2ffMYlavisoLXR0I6UEIU+cidV1ogEH1U6+/SYaFPrlzQo0tGLM5CNkMbhInbyasQsrHzn8F1Rt7nHg5/tcSf9qwAAAAEAAAAGaGVybWFuAAAACgAAAAZoZXJtYW4AAAAAY8kvJwAAAABjyhBjAAAAAAAAAIIAAAAVcGVybWl0LVgxMS1mb3J3YXJkaW5nAAAAAAAAABdwZXJtaXQtYWdlbnQtZm9yd2FyZGluZwAAAAAAAAAWcGVybWl0LXBvcnQtZm9yd2FyZGluZwAAAAAAAAAKcGVybWl0LXB0eQAAAAAAAAAOcGVybWl0LXVzZXItcmMAAAAAAAAAAAAAAGgAAAATZWNkc2Etc2hhMi1uaXN0cDI1NgAAAAhuaXN0cDI1NgAAAEEE/ayqpPrZZF5uA1UlDt4FreTf15agztQIzpxnWq/XoxAHzagRSkFGkdgFpjgsfiRpP8URHH3BZScqc0ZDCTxhoQAAAGQAAAATZWNkc2Etc2hhMi1uaXN0cDI1NgAAAEkAAAAhAJuP1wCVwoyrKrEtHGfFXrVbRHySDjvXtS1tVTdHyqymAAAAIBa/CSSzfZb4D2NLP+eEmOOMJwSjYOiNM8fiOoAaqglI" , fields ["certificate" ])
1687
+ sassert .Equal (t , "SHA256:RvkDPGwl/G9d7LUFm1kmWhvOD9I/moPq4yxcb0STwr0 (ECDSA-CERT)" , fields ["public-key" ])
1688
+ }
0 commit comments