@@ -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