@@ -881,6 +881,8 @@ func getCertsFromFile(t *testing.T, names ...string) []*x509.Certificate {
881
881
}
882
882
883
883
func getCert (t * testing.T , pemData string ) * x509.Certificate {
884
+ t .Helper ()
885
+
884
886
pemBlock , _ := pem .Decode ([]byte (pemData ))
885
887
cert , err := x509 .ParseCertificate (pemBlock .Bytes )
886
888
if err != nil {
@@ -897,3 +899,58 @@ func getCerts(t *testing.T, pemData ...string) []*x509.Certificate {
897
899
}
898
900
return certs
899
901
}
902
+
903
+ func TestCertificateIdentifier (t * testing.T ) {
904
+ tt := []struct {
905
+ name string
906
+ cert * x509.Certificate
907
+ expectedIdentifier string
908
+ }{
909
+ {
910
+ name : "client cert" ,
911
+ cert : getCert (t , clientCNCert ),
912
+ expectedIdentifier : "SN=1, SKID=E7:FB:1F:45:F0:71:77:AF:8C:10:4A:0A:42:03:F5:1F:1F:07:CF:DF, AKID=3D:F0:F7:30:3D:3B:EB:3A:55:68:FA:F5:43:C9:C7:AC:E1:3F:10:78" ,
913
+ },
914
+ {
915
+ name : "nil serial" ,
916
+ cert : func () * x509.Certificate {
917
+ c := getCert (t , clientCNCert )
918
+ c .SerialNumber = nil
919
+ return c
920
+ }(),
921
+ expectedIdentifier : "SN=<nil>, SKID=E7:FB:1F:45:F0:71:77:AF:8C:10:4A:0A:42:03:F5:1F:1F:07:CF:DF, AKID=3D:F0:F7:30:3D:3B:EB:3A:55:68:FA:F5:43:C9:C7:AC:E1:3F:10:78" ,
922
+ },
923
+ {
924
+ name : "empty SKID" ,
925
+ cert : func () * x509.Certificate {
926
+ c := getCert (t , clientCNCert )
927
+ c .SubjectKeyId = nil
928
+ return c
929
+ }(),
930
+ expectedIdentifier : "SN=1, SKID=, AKID=3D:F0:F7:30:3D:3B:EB:3A:55:68:FA:F5:43:C9:C7:AC:E1:3F:10:78" ,
931
+ },
932
+ {
933
+ name : "empty AKID" ,
934
+ cert : func () * x509.Certificate {
935
+ c := getCert (t , clientCNCert )
936
+ c .AuthorityKeyId = nil
937
+ return c
938
+ }(),
939
+ expectedIdentifier : "SN=1, SKID=E7:FB:1F:45:F0:71:77:AF:8C:10:4A:0A:42:03:F5:1F:1F:07:CF:DF, AKID=" ,
940
+ },
941
+ {
942
+ name : "self-signed" ,
943
+ cert : getCert (t , selfSignedCert ),
944
+ expectedIdentifier : "SN=14307769263086146430, SKID=7C:AB:02:A8:45:3F:B0:28:2F:71:91:52:A2:71:EE:D9:40:2B:43:71, AKID=7C:AB:02:A8:45:3F:B0:28:2F:71:91:52:A2:71:EE:D9:40:2B:43:71" ,
945
+ },
946
+ }
947
+
948
+ for _ , tc := range tt {
949
+ t .Run (tc .name , func (t * testing.T ) {
950
+ got := certificateIdentifier (tc .cert )
951
+ if got != tc .expectedIdentifier {
952
+ t .Errorf ("expected %q, got %q" , tc .expectedIdentifier , got )
953
+ }
954
+ })
955
+ }
956
+ }
0 commit comments