10#include <basictypes.h>
13#ifndef _WOLFSSL_METHOD_DEFINED
14#define _WOLFSSL_METHOD_DEFINED
16typedef struct ProtocolVersion {
19} __attribute__((packed)) ProtocolVersion;
22struct WOLFSSL_METHOD {
23 ProtocolVersion version;
39#ifdef WOLFSSL_TRUST_PEER_CERT
50 Encoding_PEM = SSL_FILETYPE_PEM,
51 Encoding_DER = SSL_FILETYPE_ASN1,
52 Encoding_ASN1= SSL_FILETYPE_ASN1
75 Loaded_User = (1 << Cert_User),
76 Loaded_CA = (1 << Cert_CA),
77#ifdef WOLFSSL_TRUST_PEER_CERT
78 Loaded_Peer = (1 << Cert_TrustedPeer),
81 Loaded_CRL = (1 << Cert_CRL),
83 Loaded_Key = (1 << Cert_PrivKey),
85 Loaded_ManualReq = (1 << (Cert_MAXTYPE+1)),
88 NbSslCtx(uint8_t *CertBuf=NULL, uint32_t CertBufLen=0, SSL_CertType type=Cert_User,SSL_Encoding encoding=Encoding_PEM);
89 NbSslCtx(SSL_Method method, uint8_t *CertBuf=NULL, uint32_t CertBufLen=0, SSL_CertType type=Cert_User,SSL_Encoding encoding=Encoding_PEM);
92 WOLFSSL_CTX* GetCtx(){
return m_wolfCtx; }
95 bool GetInit(){
return m_wolfCtx != NULL; }
97 inline bool HaveCert_CA(){
return m_certsLoaded & Loaded_CA; }
98 inline bool HaveCert_User(){
return m_certsLoaded & Loaded_User; }
99#ifdef WOLFSSL_TRUST_PEER_CERT
100 inline bool HaveCert_Peer(){
return m_certsLoaded & Loaded_Peer; }
103 inline bool HaveCert_CRL(){
return m_certsLoaded & Loaded_CRL; }
110 int AddCA(
const uint8_t *CaBuf, uint32_t CaBufLen, SSL_Encoding encoding=Encoding_PEM);
111 int UseCert(
const uint8_t *certBuf, uint32_t certLen, SSL_Encoding encoding=Encoding_PEM);
112 int UseKey(
const uint8_t *certBuf, uint32_t certLen, SSL_Encoding encoding=Encoding_PEM);
114#ifdef WOLFSSL_TRUST_PEER_CERT
115 int AddPeer(
const uint8_t *PeerCertBuf, uint32_t PeerCertBufLen, SSL_Encoding encoding=Encoding_PEM);
118 int AddCRL(
const uint8_t *CRLBuf, uint32_t CRLBufLen, SSL_Encoding encoding=Encoding_PEM);
122 int UnloadUserCertAndKey();
123#ifdef WOLFSSL_TRUST_PEER_CERT
132 int RequireCert(
bool required);
134 int Connect(
IPADDR ip, uint16_t remotePort,
135 const TickTimeout &timeout,
const char *commonName,
136 int intf = -1,
int verifyPeer = -1);
137 int AsyncConnect(
IPADDR ip, uint16_t remotePort,
138 const char *commonName,
int intf = -1,
139 int verifyPeer = -1);
140 int Accept(
int fdListen,
IPADDR *address,
142 const char *commonName,
int verifyPeer = -1);
143 int AsyncAccept(
int fdListen,
IPADDR *address,
145 const char *commonName,
int verifyPeer = -1);
147 inline int Connect(
IPADDR ip, uint16_t remotePort,
148 uint32_t timeout,
const char *commonName,
149 int intf = -1,
int verifyPeer = -1)
152 return Connect(ip, remotePort, tt, commonName, intf, verifyPeer);
154 inline int Accept(
int fdListen,
IPADDR *address,
155 uint16_t *port, uint32_t timeout,
156 const char *commonName,
int verifyPeer = -1)
159 return Accept(fdListen, address, port, tt, commonName, verifyPeer);
161 inline int AsyncAccept(
int fdListen,
IPADDR *address,
162 uint16_t *port, uint32_t timeout,
163 const char *commonName,
int verifyPeer = -1)
166 return AsyncAccept(fdListen, address, port, tt, commonName, verifyPeer);
169 int MakeSecure(
int tcpFd,
const TickTimeout &timeout,
170 const char *commonName,
bool bIsClient =
true,
171 int verifyPeer = -1);
172 int AsyncMakeSecure(
int tcpFd,
const char *commonName,
173 bool bIsClient =
true,
int verifyPeer = -1);
175 inline int MakeSecure(
int tcpFd, uint32_t timeout,
176 const char *commonName,
bool bIsClient =
true,
180 return MakeSecure(tcpFd, tt, commonName, verifyPeer);
183 int Negotiate(
int tcpFd,
const char *commonName,
184 bool bIsClient =
true,
bool reuseSession =
true,
185 int verifyPeer = -1);
188 WOLFSSL_CTX* m_wolfCtx =
nullptr;
189 WOLFSSL_METHOD m_wolfMethod;
190 uint8_t *m_initCertBuf;
192 uint32_t m_initCertLen;
193 uint32_t m_certsLoaded;
195 SSL_CertType m_initCertType;
196 SSL_Encoding m_initEncoding;
198 static const WOLFSSL_METHOD protocolMethods[];
199 friend class LockObj;
202extern NbSslCtx SSL_gServerCtx;
203extern NbSslCtx SSL_gClientCtx;
Used to hold and manipulate IPv4 and IPv6 addresses in dual stack mode.
Definition ipv6_addr.h:41
TickTimeout objects are used to facilitate sequential function calls with timeout parameters that nee...
Definition nbrtos.h:168
NetBurner Real-Time Operating System (NBRTOS) API.