1
10
13
14
20
21
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
99
100
103
104
105
106
107
108
109
110
111
112
113
114
118
119
120
121
122
123
128
134
135
136
137
138
139
141
142
143
...
...
...
#define NX_SECURE_SOURCE_CODE
#include "nx_secure_x509.h"
...
...
UINT _nx_secure_x509_remote_endpoint_certificate_get(NX_SECURE_X509_CERTIFICATE_STORE *store,
NX_SECURE_X509_CERT **certificate)
{
NX_SECURE_X509_CERT *compare_cert;
NX_SECURE_X509_CERT *candidate;
NX_SECURE_X509_CERT *list_head;
INT compare_value;
list_head = store -> nx_secure_x509_remote_certificates;
candidate = list_head;
if (candidate == NX_CRYPTO_NULL)
{
return(NX_SECURE_X509_CERTIFICATE_NOT_FOUND);
}if (candidate == NX_CRYPTO_NULL) { ... }
/* ... */
while (candidate -> nx_secure_x509_next_certificate != NX_CRYPTO_NULL)
{
compare_cert = list_head;
while (compare_cert != NX_CRYPTO_NULL)
{
compare_value = _nx_secure_x509_distinguished_name_compare(&candidate -> nx_secure_x509_distinguished_name,
&compare_cert -> nx_secure_x509_issuer, NX_SECURE_X509_NAME_ALL_FIELDS);
if (compare_value == 0)
{
break;
}if (compare_value == 0) { ... }
compare_cert = compare_cert -> nx_secure_x509_next_certificate;
}while (compare_cert != NX_CRYPTO_NULL) { ... }
if (compare_cert != NX_CRYPTO_NULL)
{
candidate = candidate -> nx_secure_x509_next_certificate;
}if (compare_cert != NX_CRYPTO_NULL) { ... }
else
{
/* ... */
break;
}else { ... }
}while (candidate -> nx_secure_x509_next_certificate != NX_CRYPTO_NULL) { ... }
*certificate = candidate;
/* ... */
return(NX_SECURE_X509_SUCCESS);
}{ ... }