SharkSSL™ Embedded SSL/TLS Stack
SharkSslEx.h
1 /*
2  * ____ _________ __ _
3  * / __ \___ ____ _/ /_ __(_)___ ___ ___ / / ____ ____ _(_)____
4  * / /_/ / _ \/ __ `/ / / / / / __ `__ \/ _ \/ / / __ \/ __ `/ / ___/
5  * / _, _/ __/ /_/ / / / / / / / / / / / __/ /___/ /_/ / /_/ / / /__
6  * /_/ |_|\___/\__,_/_/ /_/ /_/_/ /_/ /_/\___/_____/\____/\__, /_/\___/
7  * /____/
8  *
9  * SharkSSL Embedded SSL/TLS Stack
10  ****************************************************************************
11  * PROGRAM MODULE
12  *
13  * $Id: SharkSslEx.h 5100 2022-02-19 16:23:57Z wini $
14  *
15  * COPYRIGHT: Real Time Logic LLC, 2013 - 2022
16  *
17  * This software is copyrighted by and is the sole property of Real
18  * Time Logic LLC. All rights, title, ownership, or other interests in
19  * the software remain the property of Real Time Logic LLC. This
20  * software may only be used in accordance with the terms and
21  * conditions stipulated in the corresponding license agreement under
22  * which the software has been supplied. Any unauthorized use,
23  * duplication, transmission, distribution, or disclosure of this
24  * software is expressly forbidden.
25  *
26  * This Copyright notice may not be removed or modified without prior
27  * written consent of Real Time Logic LLC.
28  *
29  * Real Time Logic LLC. reserves the right to modify this software
30  * without notice.
31  *
32  * http://www.realtimelogic.com
33  * http://www.sharkssl.com
34  ****************************************************************************
35  *
36  */
37 #ifndef _SharkSslEx_h
38 #define _SharkSslEx_h
39 
40 #include "SharkSSL.h"
41 
42 /* Macro set if compiled together with BAS */
43 #ifndef ThreadLib_hpp
44 #ifndef BaTime
45 #include <time.h>
46 typedef time_t BaTime;
47 #endif
48 #endif
49 
52 {
53  U8 *ptr, *dataptr;
54  U32 len, datalen;
55 }
57 
60 typedef struct SubjectAltName
61 {
62  U8 *ptr;
63  U16 len;
64  U8 tag;
66 
67 #define SubjectAltName_getTag(o) ((o)->tag)
68 #define SubjectAltName_getLen(o) ((o)->len)
69 #define SubjectAltName_getPtr(o) ((o)->ptr)
70 #define SubjectAltName_isValid(o) (NULL != SubjectAltName_getPtr(o))
71 
72 SHARKSSL_API void SubjectAltNameEnumerator_constructor(SubjectAltNameEnumerator *o, U8 *ptr, U16 len);
73 SHARKSSL_API void SubjectAltNameEnumerator_getElement(SubjectAltNameEnumerator *o, SubjectAltName *s);
74 #define SubjectAltNameEnumerator_nextElement SubjectAltNameEnumerator_getElement
75 
79 #define SUBJECTALTNAME_OTHERNAME 0
80 #define SUBJECTALTNAME_RFC822NAME 1
81 #define SUBJECTALTNAME_DNSNAME 2
82 #define SUBJECTALTNAME_X400ADDRESS 3
83 #define SUBJECTALTNAME_DIRECTORYNAME 4
84 #define SUBJECTALTNAME_EDIPARTYNAME 5
85 #define SUBJECTALTNAME_URI 6
86 #define SUBJECTALTNAME_IPADDRESS 7
87 
88 
91 SHARKSSL_API int sharkStrCaseCmp(
92  const char *a, int aLen, const char *b, int bLen);
93 
94 
97 SHARKSSL_API int sharkSubjectSubjectAltCmp(
98  const char *cn, U16 cnLen, U8 *subjAltPtr, U16 subjAltLen, const char* name, U16 nameLen);
99 
104 SHARKSSL_API BaTime sharkParseCertTime(const U8* utc, U8 len);
105 
106 
107 
113 typedef enum
114 {
118 
123 
128 
134 
139 
150 
151 #if SHARKSSL_CHECK_DATE == 0
152 #define SharkSslConTrust_CertCnDate SharkSslConTrust_CertCn
153 #endif
154 
155  /* end group SharkSslInfoAndCodes */
157 
181  SharkSslCon* o, const char* name, SharkSslCertInfo** cPtr);
182  /* end group SharkSslApi */
184 
185 #endif
SharkSslCon_trusted
SHARKSSL_API SharkSslConTrust SharkSslCon_trusted(SharkSslCon *o, const char *name, SharkSslCertInfo **cPtr)
Returns the peer's "trust" status and certificate.
SharkSslConTrust_NotSSL
@ SharkSslConTrust_NotSSL
Not a secure connection (SSL handshake not completed).
Definition: SharkSslEx.h:117
SharkSslConTrust_Cert
@ SharkSslConTrust_Cert
Domain mismatch: The SSL certificate is trusted but the subject's common name does not matches the ho...
Definition: SharkSslEx.h:127
SharkSslCertInfo
The peer's certificate information returned by SharkSslCon_getCertInfo.
Definition: SharkSSL.h:807
SharkSslConTrust_None
@ SharkSslConTrust_None
The SSL certificate is not trusted and the subject's common name does not matches the host name of th...
Definition: SharkSslEx.h:122
SharkSslCon
struct SharkSslCon SharkSslCon
SharkSslCon is an opaque handle returned by function SharkSsl_createCon.
Definition: SharkSSL.h:534
SubjectAltName
SubjectAltName.
Definition: SharkSslEx.h:61
SharkSslConTrust
SharkSslConTrust
SharkSslCon_trusted return values
Definition: SharkSslEx.h:114
SharkSslConTrust_Cn
@ SharkSslConTrust_Cn
The subject's common name matches the host name of the URL, but the certificate is not trusted.
Definition: SharkSslEx.h:133
SharkSslConTrust_CertCn
@ SharkSslConTrust_CertCn
The peer's SSL certificate is trusted and the subject's common name matches the host name of the URL.
Definition: SharkSslEx.h:138
SharkSslConTrust_CertCnDate
@ SharkSslConTrust_CertCnDate
This value is returned instead of SharkSslConTrust_CertCn when a certificate is trusted and the Shark...
Definition: SharkSslEx.h:148
SubjectAltNameEnumerator
SubjectAltName Iterator.
Definition: SharkSslEx.h:52