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 virtual 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, (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, (char*)cb_obj);
29 BIO_set_callback_ex(write_bio, send);
30 }
31
32 virtual int handshake() override
33 {
34 return 0;
35 }
36
37 virtual int read(uint8_t* buf, size_t len) override
38 {
39 if (len == 0)
40 return 0;
41 size_t readbytes = 0;
42 int rc = BIO_read_ex(read_bio, buf, len, &readbytes);
43 if (rc > 0)
44 {
45 return readbytes;
46 }
47 return -rc;
48 }
49
50 virtual int write(const uint8_t* buf, size_t len) override
51 {
52 if (len == 0)
53 return 0;
54 size_t written = 0;
55 int rc = BIO_write_ex(write_bio, buf, len, &written);
56 if (rc > 0)
57 {
58 return written;
59 }
60 return -rc;
61 }
62
63 virtual int close() override
64 {
65 return 0;
66 }
67
68 virtual bool peer_cert_ok() override
69 {
70 return true;
71 }
72
73 virtual std::string get_verify_error() override
74 {
75 return "no error";
76 }
77
78 virtual std::vector<uint8_t> peer_cert() override
79 {
80 return {};
81 }
82 };
83}
Definition context.h:17
Context(bool client)
Definition context.h:23
Definition plaintext_server.h:10
PlaintextServer()
Definition plaintext_server.h:12
Unique_BIO read_bio
Definition plaintext_server.h:15
virtual void set_bio(void *cb_obj, BIO_callback_fn_ex send, BIO_callback_fn_ex recv) override
Definition plaintext_server.h:19
virtual int read(uint8_t *buf, size_t len) override
Definition plaintext_server.h:37
virtual int write(const uint8_t *buf, size_t len) override
Definition plaintext_server.h:50
Unique_BIO write_bio
Definition plaintext_server.h:16
virtual bool peer_cert_ok() override
Definition plaintext_server.h:68
virtual int handshake() override
Definition plaintext_server.h:32
virtual std::string get_verify_error() override
Definition plaintext_server.h:73
virtual std::vector< uint8_t > peer_cert() override
Definition plaintext_server.h:78
virtual int close() override
Definition plaintext_server.h:63
Definition plaintext_server.h:8
Definition openssl_wrappers.h:161