Go to the documentation of this file.
27 #ifndef POLARSSL_X509_H
28 #define POLARSSL_X509_H
43 #define POLARSSL_ERR_X509_FEATURE_UNAVAILABLE -0x2080
44 #define POLARSSL_ERR_X509_CERT_INVALID_PEM -0x2100
45 #define POLARSSL_ERR_X509_CERT_INVALID_FORMAT -0x2180
46 #define POLARSSL_ERR_X509_CERT_INVALID_VERSION -0x2200
47 #define POLARSSL_ERR_X509_CERT_INVALID_SERIAL -0x2280
48 #define POLARSSL_ERR_X509_CERT_INVALID_ALG -0x2300
49 #define POLARSSL_ERR_X509_CERT_INVALID_NAME -0x2380
50 #define POLARSSL_ERR_X509_CERT_INVALID_DATE -0x2400
51 #define POLARSSL_ERR_X509_CERT_INVALID_PUBKEY -0x2480
52 #define POLARSSL_ERR_X509_CERT_INVALID_SIGNATURE -0x2500
53 #define POLARSSL_ERR_X509_CERT_INVALID_EXTENSIONS -0x2580
54 #define POLARSSL_ERR_X509_CERT_UNKNOWN_VERSION -0x2600
55 #define POLARSSL_ERR_X509_CERT_UNKNOWN_SIG_ALG -0x2680
56 #define POLARSSL_ERR_X509_UNKNOWN_PK_ALG -0x2700
57 #define POLARSSL_ERR_X509_CERT_SIG_MISMATCH -0x2780
58 #define POLARSSL_ERR_X509_CERT_VERIFY_FAILED -0x2800
59 #define POLARSSL_ERR_X509_KEY_INVALID_VERSION -0x2880
60 #define POLARSSL_ERR_X509_KEY_INVALID_FORMAT -0x2900
61 #define POLARSSL_ERR_X509_CERT_UNKNOWN_FORMAT -0x2980
62 #define POLARSSL_ERR_X509_INVALID_INPUT -0x2A00
63 #define POLARSSL_ERR_X509_MALLOC_FAILED -0x2A80
64 #define POLARSSL_ERR_X509_FILE_IO_ERROR -0x2B00
72 #define BADCERT_EXPIRED 0x01
73 #define BADCERT_REVOKED 0x02
74 #define BADCERT_CN_MISMATCH 0x04
75 #define BADCERT_NOT_TRUSTED 0x08
76 #define BADCRL_NOT_TRUSTED 0x10
77 #define BADCRL_EXPIRED 0x20
78 #define BADCERT_MISSING 0x40
79 #define BADCERT_SKIP_VERIFY 0x80
86 #define X520_COMMON_NAME 3
87 #define X520_COUNTRY 6
88 #define X520_LOCALITY 7
90 #define X520_ORGANIZATION 10
91 #define X520_ORG_UNIT 11
94 #define X509_OUTPUT_DER 0x01
95 #define X509_OUTPUT_PEM 0x02
96 #define PEM_LINE_LENGTH 72
97 #define X509_ISSUER 0x01
98 #define X509_SUBJECT 0x02
100 #define OID_X520 "\x55\x04"
101 #define OID_CN OID_X520 "\x03"
103 #define OID_PKCS1 "\x2A\x86\x48\x86\xF7\x0D\x01\x01"
104 #define OID_PKCS1_RSA OID_PKCS1 "\x01"
106 #define OID_RSA_SHA_OBS "\x2B\x0E\x03\x02\x1D"
108 #define OID_PKCS9 "\x2A\x86\x48\x86\xF7\x0D\x01\x09"
109 #define OID_PKCS9_EMAIL OID_PKCS9 "\x01"
112 #define OID_ID_CE "\x55\x1D"
119 #define OID_PKIX "\x2B\x06\x01\x05\x05\x07"
124 #define OID_AUTHORITY_KEY_IDENTIFIER OID_ID_CE "\x23"
125 #define OID_SUBJECT_KEY_IDENTIFIER OID_ID_CE "\x0E"
126 #define OID_KEY_USAGE OID_ID_CE "\x0F"
127 #define OID_CERTIFICATE_POLICIES OID_ID_CE "\x20"
128 #define OID_POLICY_MAPPINGS OID_ID_CE "\x21"
129 #define OID_SUBJECT_ALT_NAME OID_ID_CE "\x11"
130 #define OID_ISSUER_ALT_NAME OID_ID_CE "\x12"
131 #define OID_SUBJECT_DIRECTORY_ATTRS OID_ID_CE "\x09"
132 #define OID_BASIC_CONSTRAINTS OID_ID_CE "\x13"
133 #define OID_NAME_CONSTRAINTS OID_ID_CE "\x1E"
134 #define OID_POLICY_CONSTRAINTS OID_ID_CE "\x24"
135 #define OID_EXTENDED_KEY_USAGE OID_ID_CE "\x25"
136 #define OID_CRL_DISTRIBUTION_POINTS OID_ID_CE "\x1F"
137 #define OID_INIHIBIT_ANYPOLICY OID_ID_CE "\x36"
138 #define OID_FRESHEST_CRL OID_ID_CE "\x2E"
143 #define KU_DIGITAL_SIGNATURE (0x80)
144 #define KU_NON_REPUDIATION (0x40)
145 #define KU_KEY_ENCIPHERMENT (0x20)
146 #define KU_DATA_ENCIPHERMENT (0x10)
147 #define KU_KEY_AGREEMENT (0x08)
148 #define KU_KEY_CERT_SIGN (0x04)
149 #define KU_CRL_SIGN (0x02)
154 #define OID_ANY_EXTENDED_KEY_USAGE OID_EXTENDED_KEY_USAGE "\x00"
156 #define OID_KP OID_PKIX "\x03"
157 #define OID_SERVER_AUTH OID_KP "\x01"
158 #define OID_CLIENT_AUTH OID_KP "\x02"
159 #define OID_CODE_SIGNING OID_KP "\x03"
160 #define OID_EMAIL_PROTECTION OID_KP "\x04"
161 #define OID_TIME_STAMPING OID_KP "\x08"
162 #define OID_OCSP_SIGNING OID_KP "\x09"
164 #define STRING_SERVER_AUTH "TLS Web Server Authentication"
165 #define STRING_CLIENT_AUTH "TLS Web Client Authentication"
166 #define STRING_CODE_SIGNING "Code Signing"
167 #define STRING_EMAIL_PROTECTION "E-mail Protection"
168 #define STRING_TIME_STAMPING "Time Stamping"
169 #define STRING_OCSP_SIGNING "OCSP Signing"
174 #define OID_PRIVATE_KEY_USAGE_PERIOD OID_ID_CE "\x10"
175 #define OID_CRL_NUMBER OID_ID_CE "\x14"
180 #define OID_NETSCAPE "\x60\x86\x48\x01\x86\xF8\x42"
181 #define OID_NS_CERT OID_NETSCAPE "\x01"
182 #define OID_NS_CERT_TYPE OID_NS_CERT "\x01"
183 #define OID_NS_BASE_URL OID_NS_CERT "\x02"
184 #define OID_NS_REVOCATION_URL OID_NS_CERT "\x03"
185 #define OID_NS_CA_REVOCATION_URL OID_NS_CERT "\x04"
186 #define OID_NS_RENEWAL_URL OID_NS_CERT "\x07"
187 #define OID_NS_CA_POLICY_URL OID_NS_CERT "\x08"
188 #define OID_NS_SSL_SERVER_NAME OID_NS_CERT "\x0C"
189 #define OID_NS_COMMENT OID_NS_CERT "\x0D"
190 #define OID_NS_DATA_TYPE OID_NETSCAPE "\x02"
191 #define OID_NS_CERT_SEQUENCE OID_NS_DATA_TYPE "\x05"
198 #define NS_CERT_TYPE_SSL_CLIENT (0x80)
199 #define NS_CERT_TYPE_SSL_SERVER (0x40)
200 #define NS_CERT_TYPE_EMAIL (0x20)
201 #define NS_CERT_TYPE_OBJECT_SIGNING (0x10)
202 #define NS_CERT_TYPE_RESERVED (0x08)
203 #define NS_CERT_TYPE_SSL_CA (0x04)
204 #define NS_CERT_TYPE_EMAIL_CA (0x02)
205 #define NS_CERT_TYPE_OBJECT_SIGNING_CA (0x01)
207 #define EXT_AUTHORITY_KEY_IDENTIFIER (1 << 0)
208 #define EXT_SUBJECT_KEY_IDENTIFIER (1 << 1)
209 #define EXT_KEY_USAGE (1 << 2)
210 #define EXT_CERTIFICATE_POLICIES (1 << 3)
211 #define EXT_POLICY_MAPPINGS (1 << 4)
212 #define EXT_SUBJECT_ALT_NAME (1 << 5)
213 #define EXT_ISSUER_ALT_NAME (1 << 6)
214 #define EXT_SUBJECT_DIRECTORY_ATTRS (1 << 7)
215 #define EXT_BASIC_CONSTRAINTS (1 << 8)
216 #define EXT_NAME_CONSTRAINTS (1 << 9)
217 #define EXT_POLICY_CONSTRAINTS (1 << 10)
218 #define EXT_EXTENDED_KEY_USAGE (1 << 11)
219 #define EXT_CRL_DISTRIBUTION_POINTS (1 << 12)
220 #define EXT_INIHIBIT_ANYPOLICY (1 << 13)
221 #define EXT_FRESHEST_CRL (1 << 14)
223 #define EXT_NS_CERT_TYPE (1 << 16)
229 #define X509_FORMAT_DER 1
230 #define X509_FORMAT_PEM 2
489 const unsigned char *key,
size_t keylen,
490 const unsigned char *pwd,
size_t pwdlen );
503 const char *password );
516 const unsigned char *key,
size_t keylen );
673 const char *cn,
int *flags,
674 int (*f_vrfy)(
void *,
x509_cert *,
int,
int),