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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
+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
+BmU8k2FeTuqV15piPCE=
 -----END CERTIFICATE-----`
 
 const rsaKey = `-----BEGIN PRIVATE KEY-----
-- 
GitLab