From 42aa2b0432c7b636029fc1e1603f6dd091d77c82 Mon Sep 17 00:00:00 2001 From: asraa <asraa@google.com> Date: Wed, 21 Apr 2021 17:43:04 -0400 Subject: [PATCH] use email from SAN (#288) Signed-off-by: Asra Ali <asraa@google.com> --- pkg/pki/x509/x509.go | 10 +++++++--- tests/x509.go | 33 ++++++++++++++++++--------------- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/pkg/pki/x509/x509.go b/pkg/pki/x509/x509.go index f272d44..6be398c 100644 --- a/pkg/pki/x509/x509.go +++ b/pkg/pki/x509/x509.go @@ -30,6 +30,8 @@ import ( "io" "io/ioutil" "strings" + + "github.com/go-playground/validator" ) // EmailAddressOID defined by https://oidref.com/1.2.840.113549.1.9.1 @@ -176,9 +178,11 @@ func (k PublicKey) CanonicalValue() ([]byte, error) { func (k PublicKey) EmailAddresses() []string { var names []string if k.cert != nil { - for _, name := range k.cert.c.Subject.Names { - if name.Type.Equal(EmailAddressOID) { - names = append(names, strings.ToLower(name.Value.(string))) + for _, name := range k.cert.c.EmailAddresses { + validate := validator.New() + errs := validate.Var(name, "required,email") + if errs == nil { + names = append(names, strings.ToLower(name)) } } } diff --git a/tests/x509.go b/tests/x509.go index 6b2aa97..11fc461 100644 --- a/tests/x509.go +++ b/tests/x509.go @@ -47,21 +47,24 @@ baT2ax2dXBcpInWaFESqGF35KISflP1EmMvEnfG+AzHecQ0WQp5QzNId+w== // Generated with: // openssl req -newkey rsa:2048 -nodes -keyout test.key -x509 -out test.crt const rsaCert = `-----BEGIN CERTIFICATE----- -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 +BmU8k2FeTuqV15piPCE= -----END CERTIFICATE-----` const rsaKey = `-----BEGIN PRIVATE KEY----- -- GitLab