| // Copyright 2025 The BoringSSL Authors | 
 | // | 
 | // Licensed under the Apache License, Version 2.0 (the "License"); | 
 | // you may not use this file except in compliance with the License. | 
 | // You may obtain a copy of the License at | 
 | // | 
 | //     https://www.apache.org/licenses/LICENSE-2.0 | 
 | // | 
 | // Unless required by applicable law or agreed to in writing, software | 
 | // distributed under the License is distributed on an "AS IS" BASIS, | 
 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
 | // See the License for the specific language governing permissions and | 
 | // limitations under the License. | 
 |  | 
 | package runner | 
 |  | 
 | func addPeekTests() { | 
 | 	// Test SSL_peek works, including on empty records. | 
 | 	testCases = append(testCases, testCase{ | 
 | 		name:             "Peek-Basic", | 
 | 		sendEmptyRecords: 1, | 
 | 		flags:            []string{"-peek-then-read"}, | 
 | 	}) | 
 |  | 
 | 	// Test SSL_peek can drive the initial handshake. | 
 | 	testCases = append(testCases, testCase{ | 
 | 		name: "Peek-ImplicitHandshake", | 
 | 		flags: []string{ | 
 | 			"-peek-then-read", | 
 | 			"-implicit-handshake", | 
 | 		}, | 
 | 	}) | 
 |  | 
 | 	// Test SSL_peek can discover and drive a renegotiation. | 
 | 	testCases = append(testCases, testCase{ | 
 | 		name: "Peek-Renegotiate", | 
 | 		config: Config{ | 
 | 			MaxVersion: VersionTLS12, | 
 | 		}, | 
 | 		renegotiate: 1, | 
 | 		flags: []string{ | 
 | 			"-peek-then-read", | 
 | 			"-renegotiate-freely", | 
 | 			"-expect-total-renegotiations", "1", | 
 | 		}, | 
 | 	}) | 
 |  | 
 | 	// Test SSL_peek can discover a close_notify. | 
 | 	testCases = append(testCases, testCase{ | 
 | 		name: "Peek-Shutdown", | 
 | 		config: Config{ | 
 | 			Bugs: ProtocolBugs{ | 
 | 				ExpectCloseNotify: true, | 
 | 			}, | 
 | 		}, | 
 | 		flags: []string{ | 
 | 			"-peek-then-read", | 
 | 			"-check-close-notify", | 
 | 		}, | 
 | 	}) | 
 |  | 
 | 	// Test SSL_peek can discover an alert. | 
 | 	testCases = append(testCases, testCase{ | 
 | 		name: "Peek-Alert", | 
 | 		config: Config{ | 
 | 			Bugs: ProtocolBugs{ | 
 | 				SendSpuriousAlert: alertRecordOverflow, | 
 | 			}, | 
 | 		}, | 
 | 		flags:         []string{"-peek-then-read"}, | 
 | 		shouldFail:    true, | 
 | 		expectedError: ":TLSV1_ALERT_RECORD_OVERFLOW:", | 
 | 	}) | 
 |  | 
 | 	// Test SSL_peek can handle KeyUpdate. | 
 | 	testCases = append(testCases, testCase{ | 
 | 		name: "Peek-KeyUpdate", | 
 | 		config: Config{ | 
 | 			MaxVersion: VersionTLS13, | 
 | 		}, | 
 | 		sendKeyUpdates:   1, | 
 | 		keyUpdateRequest: keyUpdateNotRequested, | 
 | 		flags:            []string{"-peek-then-read"}, | 
 | 	}) | 
 | } |