@@ -352,6 +352,37 @@ func TestValidateTLSSecretsData(t *testing.T) {
352352 }
353353}
354354
355+ func TestValidateTLSSecretsDataWithECParameters (t * testing.T ) {
356+ const ecParametersPEM = "-----BEGIN EC PARAMETERS-----\n BggqhkjOPQMBBw==\n -----END EC PARAMETERS-----\n "
357+
358+ t .Run ("ec-parameters-before-private-key" , func (t * testing.T ) {
359+ secrets := createTestSecrets (t , []string {"ecdsa-p256-cert.pem" }, []string {"ecdsa-p256.key" })
360+ keyData := append ([]byte (nil ), secrets [0 ].Data [corev1 .TLSPrivateKeyKey ]... )
361+ secrets [0 ].Data [corev1 .TLSPrivateKeyKey ] = append ([]byte (ecParametersPEM ), keyData ... )
362+
363+ validSecrets , certs , err := parseCertsFromTLSSecretsData (secrets )
364+ require .NoError (t , err )
365+ require .Len (t , validSecrets , 1 )
366+ require .Len (t , certs , 1 )
367+
368+ keyBlock , _ := pem .Decode (keyData )
369+ require .NotNil (t , keyBlock )
370+ require .Equal (t , pem .EncodeToMemory (keyBlock ), validSecrets [0 ].Data [corev1 .TLSPrivateKeyKey ])
371+ })
372+
373+ t .Run ("ec-parameters-without-private-key" , func (t * testing.T ) {
374+ secrets := createTestSecrets (t , []string {"ecdsa-p256-cert.pem" }, []string {"ecdsa-p256.key" })
375+ secrets [0 ].Data [corev1 .TLSPrivateKeyKey ] = []byte (ecParametersPEM )
376+
377+ validSecrets , certs , err := parseCertsFromTLSSecretsData (secrets )
378+ require .Error (t , err )
379+ require .Equal (t , "test/secret must contain valid tls.crt and tls.key, EC PARAMETERS key format found in tls.key, supported formats are PKCS1, PKCS8 or EC" , err .Error ())
380+ require .Equal (t , gwapiv1 .ListenerReasonInvalidCertificateRef , err .Reason ())
381+ require .Empty (t , validSecrets )
382+ require .Empty (t , certs )
383+ })
384+ }
385+
355386func TestFilterValidCertificates (t * testing.T ) {
356387 type testCase struct {
357388 Name string
0 commit comments