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 5102 2022-02-19 19:34:26Z gianluca $
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>
46typedef time_t BaTime;
47#endif
48#endif
49
52{
53 U8 *ptr, *dataptr;
54 U32 len, datalen;
55}
57
60typedef 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
72SHARKSSL_API void SubjectAltNameEnumerator_constructor(SubjectAltNameEnumerator *o, U8 *ptr, U16 len);
73SHARKSSL_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
91SHARKSSL_API int sharkStrCaseCmp(
92 const char *a, int aLen, const char *b, int bLen);
93
94
97SHARKSSL_API int sharkSubjectSubjectAltCmp(
98 const char *cn, U16 cnLen, U8 *subjAltPtr, U16 subjAltLen, const char* name, U16 nameLen);
99
104SHARKSSL_API BaTime sharkParseCertTime(const U8* utc, U8 len);
105
106
107
113typedef 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
SHARKSSL_API SharkSslConTrust SharkSslCon_trusted(SharkSslCon *o, const char *name, SharkSslCertInfo **cPtr)
Returns the peer's "trust" status and certificate.
struct SharkSslCon SharkSslCon
SharkSslCon is an opaque handle returned by function SharkSsl_createCon.
Definition: SharkSSL.h:553
SharkSslConTrust
SharkSslCon_trusted return values
Definition: SharkSslEx.h:114
@ 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_CertCnDate
This value is returned instead of SharkSslConTrust_CertCn when a certificate is trusted and the Shark...
Definition: SharkSslEx.h:148
@ 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
@ SharkSslConTrust_NotSSL
Not a secure connection (SSL handshake not completed).
Definition: SharkSslEx.h:117
@ SharkSslConTrust_Cert
Domain mismatch: The SSL certificate is trusted but the subject's common name does not matches the ho...
Definition: SharkSslEx.h:127
@ 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
The peer's certificate information returned by SharkSslCon_getCertInfo.
Definition: SharkSSL.h:834
SubjectAltName Iterator.
Definition: SharkSslEx.h:52
SubjectAltName.
Definition: SharkSslEx.h:61