@@ -857,7 +857,7 @@ func (t *Translator) buildListenerTLSParameters(policy *egv1a1.ClientTrafficPoli
857857 return irTLSConfig , err
858858 }
859859
860- secretCertBytes , ok := getCaCertFromSecret (secret )
860+ secretCertBytes , ok := getCaCertFromData (secret . Data )
861861 if ! ok || len (secretCertBytes ) == 0 {
862862 return irTLSConfig , fmt .Errorf (
863863 "caCertificateRef secret [%s] not found" , caCertRef .Name )
@@ -869,7 +869,7 @@ func (t *Translator) buildListenerTLSParameters(policy *egv1a1.ClientTrafficPoli
869869 return irTLSConfig , err
870870 }
871871
872- configMapData , ok := getCaCertFromConfigMap (configMap )
872+ configMapData , ok := getCaCertFromData (configMap . Data )
873873 if ! ok || len (configMapData ) == 0 {
874874 return irTLSConfig , fmt .Errorf (
875875 "caCertificateRef configmap [%s] not found" , caCertRef .Name )
@@ -892,12 +892,62 @@ func (t *Translator) buildListenerTLSParameters(policy *egv1a1.ClientTrafficPoli
892892 }
893893 irCACert .Certificate = append (irCACert .Certificate , caCertBytes ... )
894894 }
895-
896895 if len (irCACert .Certificate ) > 0 {
897896 irTLSConfig .CACertificate = irCACert
898897 irTLSConfig .RequireClientCertificate = ! tlsParams .ClientValidation .Optional
899898 setTLSClientValidationContext (tlsParams .ClientValidation , irTLSConfig )
900899 }
900+
901+ irCrl := & ir.TLSCrl {
902+ Name : irTLSCrlName (policy .Namespace , policy .Name ),
903+ }
904+
905+ if tlsParams .ClientValidation .Crl != nil {
906+ for _ , crlRef := range tlsParams .ClientValidation .Crl .Refs {
907+ crlRefKind := string (ptr .Deref (crlRef .Kind , resource .KindSecret ))
908+ var crlBytes []byte
909+ switch crlRefKind {
910+ case resource .KindSecret :
911+ secret , err := t .validateSecretRef (false , from , crlRef , resources )
912+ if err != nil {
913+ return irTLSConfig , err
914+ }
915+
916+ secretCrlBytes , ok := getCrlFromData (secret .Data )
917+ if ! ok || len (secretCrlBytes ) == 0 {
918+ return irTLSConfig , fmt .Errorf (
919+ "crl secret [%s] not found" , crlRef .Name )
920+ }
921+ crlBytes = secretCrlBytes
922+ case resource .KindConfigMap :
923+ configMap , err := t .validateConfigMapRef (false , from , crlRef , resources )
924+ if err != nil {
925+ return irTLSConfig , err
926+ }
927+
928+ configMapData , ok := getCrlFromData (configMap .Data )
929+ if ! ok || len (configMapData ) == 0 {
930+ return irTLSConfig , fmt .Errorf (
931+ "crl configmap [%s] not found" , crlRef .Name )
932+ }
933+ crlBytes = []byte (configMapData )
934+ default :
935+ return irTLSConfig , fmt .Errorf ("unsupported crlRef kind:%s" , crlRefKind )
936+ }
937+
938+ if err := validateCrl (crlBytes ); err != nil {
939+ return irTLSConfig , fmt .Errorf (
940+ "invalid crl in %s %s: %w" , crlRefKind , crlRef .Name , err )
941+ }
942+ irCrl .Data = append (irCrl .Data , crlBytes ... )
943+ }
944+ if len (irCrl .Data ) > 0 {
945+ irTLSConfig .Crl = irCrl
946+ }
947+ if tlsParams .ClientValidation .Crl .OnlyVerifyLeafCertificate != nil {
948+ irCrl .OnlyVerifyLeafCertificate = * tlsParams .ClientValidation .Crl .OnlyVerifyLeafCertificate
949+ }
950+ }
901951 }
902952
903953 if tlsParams .Session != nil && tlsParams .Session .Resumption != nil {
0 commit comments