CCF
Loading...
Searching...
No Matches
plaintext_server.h
Go to the documentation of this file.
1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the Apache 2.0 License.
3#pragma once
4
5#include "context.h"
6
7namespace nontls
8{
10 {
11 public:
13
14 protected:
17
18 public:
19 void set_bio(
20 void* cb_obj, BIO_callback_fn_ex send, BIO_callback_fn_ex recv) override
21 {
22 // Read/Write BIOs will be used by TLS
23 BIO_set_mem_eof_return(read_bio, -1);
24 BIO_set_callback_arg(read_bio, static_cast<char*>(cb_obj));
25 BIO_set_callback_ex(read_bio, recv);
26
27 BIO_set_mem_eof_return(write_bio, -1);
28 BIO_set_callback_arg(write_bio, static_cast<char*>(cb_obj));
29 BIO_set_callback_ex(write_bio, send);
30 }
31
32 int handshake() override
33 {
34 return 0;
35 }
36
37 int read(uint8_t* buf, size_t len) override
38 {
39 if (len == 0)
40 {
41 return 0;
42 }
43 size_t readbytes = 0;
44 int rc = BIO_read_ex(read_bio, buf, len, &readbytes);
45 if (rc > 0)
46 {
47 return readbytes;
48 }
49 return -rc;
50 }
51
52 int write(const uint8_t* buf, size_t len) override
53 {
54 if (len == 0)
55 {
56 return 0;
57 }
58 size_t written = 0;
59 int rc = BIO_write_ex(write_bio, buf, len, &written);
60 if (rc > 0)
61 {
62 return written;
63 }
64 return -rc;
65 }
66
67 int close() override
68 {
69 return 0;
70 }
71
72 bool peer_cert_ok() override
73 {
74 return true;
75 }
76
77 std::string get_verify_error() override
78 {
79 return "no error";
80 }
81
82 std::vector<uint8_t> peer_cert() override
83 {
84 return {};
85 }
86 };
87}
Definition context.h:17
Context(bool client)
Definition context.h:23
Definition plaintext_server.h:10
std::string get_verify_error() override
Definition plaintext_server.h:77
PlaintextServer()
Definition plaintext_server.h:12
Unique_BIO read_bio
Definition plaintext_server.h:15
int handshake() override
Definition plaintext_server.h:32
void set_bio(void *cb_obj, BIO_callback_fn_ex send, BIO_callback_fn_ex recv) override
Definition plaintext_server.h:19
Unique_BIO write_bio
Definition plaintext_server.h:16
int close() override
Definition plaintext_server.h:67
int write(const uint8_t *buf, size_t len) override
Definition plaintext_server.h:52
bool peer_cert_ok() override
Definition plaintext_server.h:72
int read(uint8_t *buf, size_t len) override
Definition plaintext_server.h:37
std::vector< uint8_t > peer_cert() override
Definition plaintext_server.h:82
Definition plaintext_server.h:8
Definition openssl_wrappers.h:159