1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
3  * You can obtain one at http://mozilla.org/MPL/2.0/. */
4 
5 #ifndef tls_mutators_h__
6 #define tls_mutators_h__
7 
8 namespace TlsMutators {
9 
10 void SetIsDTLS();
11 
12 size_t DropRecord(uint8_t *data, size_t size, size_t max_size,
13                   unsigned int seed);
14 size_t ShuffleRecords(uint8_t *data, size_t size, size_t max_size,
15                       unsigned int seed);
16 size_t DuplicateRecord(uint8_t *data, size_t size, size_t max_size,
17                        unsigned int seed);
18 size_t TruncateRecord(uint8_t *data, size_t size, size_t max_size,
19                       unsigned int seed);
20 size_t FragmentRecord(uint8_t *data, size_t size, size_t max_size,
21                       unsigned int seed);
22 
23 size_t CrossOver(const uint8_t *data1, size_t size1, const uint8_t *data2,
24                  size_t size2, uint8_t *out, size_t max_out_size,
25                  unsigned int seed);
26 
27 }  // namespace TlsMutators
28 
29 #endif  // tls_mutators_h__
30