• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright 2014-2022 The GmSSL Project. All Rights Reserved.
3  *
4  *  Licensed under the Apache License, Version 2.0 (the License); you may
5  *  not use this file except in compliance with the License.
6  *
7  *  http://www.apache.org/licenses/LICENSE-2.0
8  */
9 
10 
11 #ifndef GMSSL_X509_STR_H
12 #define GMSSL_X509_STR_H
13 
14 
15 #include <time.h>
16 #include <string.h>
17 #include <stdint.h>
18 #include <stdlib.h>
19 #include <gmssl/sm2.h>
20 #include <gmssl/oid.h>
21 #include <gmssl/asn1.h>
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 /*
28 DirectoryString or DirectoryName
29 
30 DirectoryName ::= CHOICE {
31 	teletexString		TeletexString	(SIZE (1..MAX)),
32 	printableString		PrintableString	(SIZE (1..MAX)),
33 	universalString		UniversalString	(SIZE (1..MAX)),
34 	utf8String		UTF8String	(SIZE (1..MAX)),
35 	bmpString		BMPString	(SIZE (1..MAX)),
36 }
37 */
38 int x509_directory_name_check(int tag, const uint8_t *d, size_t dlen);
39 int x509_directory_name_check_ex(int tag, const uint8_t *d, size_t dlen, size_t minlen, size_t maxlen);
40 int x509_directory_name_to_der(int tag, const uint8_t *d, size_t dlen, uint8_t **out, size_t *outlen);
41 int x509_directory_name_from_der(int *tag, const uint8_t **d, size_t *dlen, const uint8_t **in, size_t *inlen);
42 int x509_explicit_directory_name_to_der(int index, int tag, const uint8_t *d, size_t dlen, uint8_t **out, size_t *outlen);
43 int x509_explicit_directory_name_from_der(int index, int *tag, const uint8_t **d, size_t *dlen, const uint8_t **in, size_t *inlen);
44 int x509_directory_name_print(FILE *fp, int fmt, int ind, const char *label, int tag, const uint8_t *d, size_t dlen);
45 
46 
47 /*
48 DisplayText ::= CHOICE {
49 	ia5String		IA5String	(SIZE (1..200)),
50 	visibleString		VisibleString	(SIZE (1..200)),
51 	bmpString		BMPString	(SIZE (1..200)),
52 	utf8String		UTF8String	(SIZE (1..200))
53 }
54 */
55 #define X509_DISPLAY_TEXT_MIN_LEN 1
56 #define X509_DISPLAY_TEXT_MAX_LEN 200
57 
58 int x509_display_text_check(int tag, const uint8_t *d, size_t dlen);
59 int x509_display_text_to_der(int tag, const uint8_t *d, size_t dlen, uint8_t **out, size_t *outlen);
60 int x509_display_text_from_der(int *tag, const uint8_t **d, size_t *dlen, const uint8_t **in, size_t *inlen);
61 int x509_display_text_print(FILE *fp, int fmt, int ind, const char *label, int tag, const uint8_t *d, size_t dlen);
62 
63 
64 #ifdef __cplusplus
65 }
66 #endif
67 #endif
68