17 |
17 |
|
|
18 |
18 |
|
namespace { |
19 |
19 |
|
|
20 |
|
- |
Extension* make_extension(TLS_Data_Reader& reader, uint16_t code, uint16_t size, Connection_Side from) |
|
20 |
+ |
std::unique_ptr<Extension> make_extension(TLS_Data_Reader& reader, uint16_t code, uint16_t size, Connection_Side from) |
21 |
21 |
|
{ |
22 |
22 |
|
switch(code) |
23 |
23 |
|
{ |
24 |
24 |
|
case TLSEXT_SERVER_NAME_INDICATION: |
25 |
|
- |
return new Server_Name_Indicator(reader, size); |
|
25 |
+ |
return std::make_unique<Server_Name_Indicator>(reader, size); |
26 |
26 |
|
|
27 |
27 |
|
case TLSEXT_SUPPORTED_GROUPS: |
28 |
|
- |
return new Supported_Groups(reader, size); |
|
28 |
+ |
return std::make_unique<Supported_Groups>(reader, size); |
29 |
29 |
|
|
30 |
30 |
|
case TLSEXT_CERT_STATUS_REQUEST: |
31 |
|
- |
return new Certificate_Status_Request(reader, size, from); |
|
31 |
+ |
return std::make_unique<Certificate_Status_Request>(reader, size, from); |
32 |
32 |
|
|
33 |
33 |
|
case TLSEXT_EC_POINT_FORMATS: |
34 |
|
- |
return new Supported_Point_Formats(reader, size); |
|
34 |
+ |
return std::make_unique<Supported_Point_Formats>(reader, size); |
35 |
35 |
|
|
36 |
36 |
|
case TLSEXT_SAFE_RENEGOTIATION: |
37 |
|
- |
return new Renegotiation_Extension(reader, size); |
|
37 |
+ |
return std::make_unique<Renegotiation_Extension>(reader, size); |
38 |
38 |
|
|
39 |
39 |
|
case TLSEXT_SIGNATURE_ALGORITHMS: |
40 |
|
- |
return new Signature_Algorithms(reader, size); |
|
40 |
+ |
return std::make_unique<Signature_Algorithms>(reader, size); |
41 |
41 |
|
|
42 |
42 |
|
case TLSEXT_USE_SRTP: |
43 |
|
- |
return new SRTP_Protection_Profiles(reader, size); |
|
43 |
+ |
return std::make_unique<SRTP_Protection_Profiles>(reader, size); |
44 |
44 |
|
|
45 |
45 |
|
case TLSEXT_ALPN: |
46 |
|
- |
return new Application_Layer_Protocol_Notification(reader, size); |
|
46 |
+ |
return std::make_unique<Application_Layer_Protocol_Notification>(reader, size); |
47 |
47 |
|
|
48 |
48 |
|
case TLSEXT_EXTENDED_MASTER_SECRET: |
49 |
|
- |
return new Extended_Master_Secret(reader, size); |
|
49 |
+ |
return std::make_unique<Extended_Master_Secret>(reader, size); |
50 |
50 |
|
|
51 |
51 |
|
case TLSEXT_ENCRYPT_THEN_MAC: |
52 |
|
- |
return new Encrypt_then_MAC(reader, size); |
|
52 |
+ |
return std::make_unique<Encrypt_then_MAC>(reader, size); |
53 |
53 |
|
|
54 |
54 |
|
case TLSEXT_SESSION_TICKET: |
55 |
|
- |
return new Session_Ticket(reader, size); |
|
55 |
+ |
return std::make_unique<Session_Ticket>(reader, size); |
56 |
56 |
|
|
57 |
57 |
|
case TLSEXT_SUPPORTED_VERSIONS: |
58 |
|
- |
return new Supported_Versions(reader, size, from); |
|
58 |
+ |
return std::make_unique<Supported_Versions>(reader, size, from); |
59 |
59 |
|
} |
60 |
60 |
|
|
61 |
|
- |
return new Unknown_Extension(static_cast<Handshake_Extension_Type>(code), |
62 |
|
- |
reader, size); |
|
61 |
+ |
return std::make_unique<Unknown_Extension>(static_cast<Handshake_Extension_Type>(code), |
|
62 |
+ |
reader, size);; |
63 |
63 |
|
} |
64 |
64 |
|
|
65 |
65 |
|
} |