motion-openssl 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +53 -0
  3. data/lib/OpenSSL/aes.h +149 -0
  4. data/lib/OpenSSL/asn1.h +1419 -0
  5. data/lib/OpenSSL/asn1_mac.h +579 -0
  6. data/lib/OpenSSL/asn1t.h +973 -0
  7. data/lib/OpenSSL/bio.h +879 -0
  8. data/lib/OpenSSL/blowfish.h +130 -0
  9. data/lib/OpenSSL/bn.h +939 -0
  10. data/lib/OpenSSL/buffer.h +125 -0
  11. data/lib/OpenSSL/camellia.h +132 -0
  12. data/lib/OpenSSL/cast.h +107 -0
  13. data/lib/OpenSSL/cmac.h +82 -0
  14. data/lib/OpenSSL/cms.h +555 -0
  15. data/lib/OpenSSL/comp.h +79 -0
  16. data/lib/OpenSSL/conf.h +267 -0
  17. data/lib/OpenSSL/conf_api.h +89 -0
  18. data/lib/OpenSSL/crypto.h +661 -0
  19. data/lib/OpenSSL/des.h +257 -0
  20. data/lib/OpenSSL/des_old.h +497 -0
  21. data/lib/OpenSSL/dh.h +392 -0
  22. data/lib/OpenSSL/dsa.h +332 -0
  23. data/lib/OpenSSL/dso.h +451 -0
  24. data/lib/OpenSSL/dtls1.h +272 -0
  25. data/lib/OpenSSL/e_os2.h +328 -0
  26. data/lib/OpenSSL/ebcdic.h +26 -0
  27. data/lib/OpenSSL/ec.h +1282 -0
  28. data/lib/OpenSSL/ecdh.h +134 -0
  29. data/lib/OpenSSL/ecdsa.h +335 -0
  30. data/lib/OpenSSL/engine.h +960 -0
  31. data/lib/OpenSSL/err.h +389 -0
  32. data/lib/OpenSSL/evp.h +1534 -0
  33. data/lib/OpenSSL/hmac.h +109 -0
  34. data/lib/OpenSSL/idea.h +105 -0
  35. data/lib/OpenSSL/krb5_asn.h +240 -0
  36. data/lib/OpenSSL/kssl.h +197 -0
  37. data/lib/OpenSSL/lhash.h +240 -0
  38. data/lib/OpenSSL/libcrypto-tvOS.a +0 -0
  39. data/lib/OpenSSL/libcrypto.a +0 -0
  40. data/lib/OpenSSL/libssl-tvOS.a +0 -0
  41. data/lib/OpenSSL/libssl.a +0 -0
  42. data/lib/OpenSSL/md4.h +119 -0
  43. data/lib/OpenSSL/md5.h +119 -0
  44. data/lib/OpenSSL/mdc2.h +94 -0
  45. data/lib/OpenSSL/modes.h +163 -0
  46. data/lib/OpenSSL/obj_mac.h +4194 -0
  47. data/lib/OpenSSL/objects.h +1143 -0
  48. data/lib/OpenSSL/ocsp.h +637 -0
  49. data/lib/OpenSSL/opensslconf.h +262 -0
  50. data/lib/OpenSSL/opensslv.h +97 -0
  51. data/lib/OpenSSL/ossl_typ.h +211 -0
  52. data/lib/OpenSSL/pem.h +615 -0
  53. data/lib/OpenSSL/pem2.h +70 -0
  54. data/lib/OpenSSL/pkcs12.h +342 -0
  55. data/lib/OpenSSL/pkcs7.h +481 -0
  56. data/lib/OpenSSL/pqueue.h +99 -0
  57. data/lib/OpenSSL/rand.h +150 -0
  58. data/lib/OpenSSL/rc2.h +103 -0
  59. data/lib/OpenSSL/rc4.h +88 -0
  60. data/lib/OpenSSL/ripemd.h +105 -0
  61. data/lib/OpenSSL/rsa.h +664 -0
  62. data/lib/OpenSSL/safestack.h +2672 -0
  63. data/lib/OpenSSL/seed.h +149 -0
  64. data/lib/OpenSSL/sha.h +214 -0
  65. data/lib/OpenSSL/srp.h +169 -0
  66. data/lib/OpenSSL/srtp.h +147 -0
  67. data/lib/OpenSSL/ssl.h +3168 -0
  68. data/lib/OpenSSL/ssl2.h +265 -0
  69. data/lib/OpenSSL/ssl23.h +84 -0
  70. data/lib/OpenSSL/ssl3.h +774 -0
  71. data/lib/OpenSSL/stack.h +107 -0
  72. data/lib/OpenSSL/symhacks.h +516 -0
  73. data/lib/OpenSSL/tls1.h +810 -0
  74. data/lib/OpenSSL/ts.h +862 -0
  75. data/lib/OpenSSL/txt_db.h +112 -0
  76. data/lib/OpenSSL/ui.h +415 -0
  77. data/lib/OpenSSL/ui_compat.h +88 -0
  78. data/lib/OpenSSL/whrlpool.h +41 -0
  79. data/lib/OpenSSL/x509.h +1327 -0
  80. data/lib/OpenSSL/x509_vfy.h +647 -0
  81. data/lib/OpenSSL/x509v3.h +1055 -0
  82. data/lib/motion-openssl.rb +8 -0
  83. data/lib/motion-openssl/hooks.rb +8 -0
  84. data/lib/motion-openssl/hooks/openssl.rb +20 -0
  85. data/lib/motion-openssl/version.rb +5 -0
  86. data/motion/openssl.rb +1 -0
  87. data/motion/openssl/random.rb +18 -0
  88. metadata +229 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7302849efc6ecbba7dcb67b8a9822a82b1358d88
4
+ data.tar.gz: 3830c5e4deb1175614474d95f9b9f1c4b8583004
5
+ SHA512:
6
+ metadata.gz: b8cecca74f8fac783228a45599663e779225a69d8f66a674bcf98007623add29fab75f1f3934d4b1a0b12e3f9727ddfddd768b8abbd47e41a953b9435e7a96e4
7
+ data.tar.gz: b1ed8b793bf93cfba5a085c9ea9e722bb9211dbbbc6f8953f6978a8a7a7a7c520d3e36a29ae1895f25e7aa343b273ca58bf90661c41918d920a8d6e477031edc
@@ -0,0 +1,53 @@
1
+ # motion-openssl
2
+
3
+ OpenSSL library for RubyMotion.
4
+
5
+ Currently, this has the minimum implementation to make SecureRandom available.
6
+
7
+ ## Installation
8
+
9
+ Add this line to your RubyMotion application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'motion-openssl'
13
+ ```
14
+
15
+ Or for your gem, add this to .gemspec file:
16
+
17
+ ```ruby
18
+ spec.add_runtime_dependency 'motion-openssl'
19
+ ```
20
+
21
+ And `require` it in your gem loader:
22
+
23
+ ```ruby
24
+ require 'motion-openssl'
25
+ ```
26
+
27
+ ## Usage
28
+
29
+ ```ruby
30
+ pid = $$
31
+ now = Time.now
32
+ ary = [now.to_i, now.nsec, pid]
33
+ OpenSSL::Random.random_add(ary.join(""), 0.0)
34
+ OpenSSL::Random.random_bytes(n)
35
+ ```
36
+
37
+ ## Development
38
+
39
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
40
+
41
+ ## Special thanks
42
+
43
+ Special thanks for Felix Schulze who created [OpenSSL-for-iPhone](https://github.com/x2on/OpenSSL-for-iPhone).
44
+
45
+ ## Contributing
46
+
47
+ Bug reports and pull requests are welcome on GitHub at https://github.com/kayhide/motion-openssl. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](contributor-covenant.org) code of conduct.
48
+
49
+
50
+ ## License
51
+
52
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
53
+
@@ -0,0 +1,149 @@
1
+ /* crypto/aes/aes.h -*- mode:C; c-file-style: "eay" -*- */
2
+ /* ====================================================================
3
+ * Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved.
4
+ *
5
+ * Redistribution and use in source and binary forms, with or without
6
+ * modification, are permitted provided that the following conditions
7
+ * are met:
8
+ *
9
+ * 1. Redistributions of source code must retain the above copyright
10
+ * notice, this list of conditions and the following disclaimer.
11
+ *
12
+ * 2. Redistributions in binary form must reproduce the above copyright
13
+ * notice, this list of conditions and the following disclaimer in
14
+ * the documentation and/or other materials provided with the
15
+ * distribution.
16
+ *
17
+ * 3. All advertising materials mentioning features or use of this
18
+ * software must display the following acknowledgment:
19
+ * "This product includes software developed by the OpenSSL Project
20
+ * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
21
+ *
22
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
23
+ * endorse or promote products derived from this software without
24
+ * prior written permission. For written permission, please contact
25
+ * openssl-core@openssl.org.
26
+ *
27
+ * 5. Products derived from this software may not be called "OpenSSL"
28
+ * nor may "OpenSSL" appear in their names without prior written
29
+ * permission of the OpenSSL Project.
30
+ *
31
+ * 6. Redistributions of any form whatsoever must retain the following
32
+ * acknowledgment:
33
+ * "This product includes software developed by the OpenSSL Project
34
+ * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
35
+ *
36
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
37
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
38
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
39
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
40
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
42
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
43
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
44
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
45
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
46
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
47
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
48
+ * ====================================================================
49
+ *
50
+ */
51
+
52
+ #ifndef HEADER_AES_H
53
+ # define HEADER_AES_H
54
+
55
+ # include <openssl/opensslconf.h>
56
+
57
+ # ifdef OPENSSL_NO_AES
58
+ # error AES is disabled.
59
+ # endif
60
+
61
+ # include <stddef.h>
62
+
63
+ # define AES_ENCRYPT 1
64
+ # define AES_DECRYPT 0
65
+
66
+ /*
67
+ * Because array size can't be a const in C, the following two are macros.
68
+ * Both sizes are in bytes.
69
+ */
70
+ # define AES_MAXNR 14
71
+ # define AES_BLOCK_SIZE 16
72
+
73
+ #ifdef __cplusplus
74
+ extern "C" {
75
+ #endif
76
+
77
+ /* This should be a hidden type, but EVP requires that the size be known */
78
+ struct aes_key_st {
79
+ # ifdef AES_LONG
80
+ unsigned long rd_key[4 * (AES_MAXNR + 1)];
81
+ # else
82
+ unsigned int rd_key[4 * (AES_MAXNR + 1)];
83
+ # endif
84
+ int rounds;
85
+ };
86
+ typedef struct aes_key_st AES_KEY;
87
+
88
+ const char *AES_options(void);
89
+
90
+ int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
91
+ AES_KEY *key);
92
+ int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
93
+ AES_KEY *key);
94
+
95
+ int private_AES_set_encrypt_key(const unsigned char *userKey, const int bits,
96
+ AES_KEY *key);
97
+ int private_AES_set_decrypt_key(const unsigned char *userKey, const int bits,
98
+ AES_KEY *key);
99
+
100
+ void AES_encrypt(const unsigned char *in, unsigned char *out,
101
+ const AES_KEY *key);
102
+ void AES_decrypt(const unsigned char *in, unsigned char *out,
103
+ const AES_KEY *key);
104
+
105
+ void AES_ecb_encrypt(const unsigned char *in, unsigned char *out,
106
+ const AES_KEY *key, const int enc);
107
+ void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
108
+ size_t length, const AES_KEY *key,
109
+ unsigned char *ivec, const int enc);
110
+ void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out,
111
+ size_t length, const AES_KEY *key,
112
+ unsigned char *ivec, int *num, const int enc);
113
+ void AES_cfb1_encrypt(const unsigned char *in, unsigned char *out,
114
+ size_t length, const AES_KEY *key,
115
+ unsigned char *ivec, int *num, const int enc);
116
+ void AES_cfb8_encrypt(const unsigned char *in, unsigned char *out,
117
+ size_t length, const AES_KEY *key,
118
+ unsigned char *ivec, int *num, const int enc);
119
+ void AES_ofb128_encrypt(const unsigned char *in, unsigned char *out,
120
+ size_t length, const AES_KEY *key,
121
+ unsigned char *ivec, int *num);
122
+ void AES_ctr128_encrypt(const unsigned char *in, unsigned char *out,
123
+ size_t length, const AES_KEY *key,
124
+ unsigned char ivec[AES_BLOCK_SIZE],
125
+ unsigned char ecount_buf[AES_BLOCK_SIZE],
126
+ unsigned int *num);
127
+ /* NB: the IV is _two_ blocks long */
128
+ void AES_ige_encrypt(const unsigned char *in, unsigned char *out,
129
+ size_t length, const AES_KEY *key,
130
+ unsigned char *ivec, const int enc);
131
+ /* NB: the IV is _four_ blocks long */
132
+ void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out,
133
+ size_t length, const AES_KEY *key,
134
+ const AES_KEY *key2, const unsigned char *ivec,
135
+ const int enc);
136
+
137
+ int AES_wrap_key(AES_KEY *key, const unsigned char *iv,
138
+ unsigned char *out,
139
+ const unsigned char *in, unsigned int inlen);
140
+ int AES_unwrap_key(AES_KEY *key, const unsigned char *iv,
141
+ unsigned char *out,
142
+ const unsigned char *in, unsigned int inlen);
143
+
144
+
145
+ #ifdef __cplusplus
146
+ }
147
+ #endif
148
+
149
+ #endif /* !HEADER_AES_H */
@@ -0,0 +1,1419 @@
1
+ /* crypto/asn1/asn1.h */
2
+ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3
+ * All rights reserved.
4
+ *
5
+ * This package is an SSL implementation written
6
+ * by Eric Young (eay@cryptsoft.com).
7
+ * The implementation was written so as to conform with Netscapes SSL.
8
+ *
9
+ * This library is free for commercial and non-commercial use as long as
10
+ * the following conditions are aheared to. The following conditions
11
+ * apply to all code found in this distribution, be it the RC4, RSA,
12
+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13
+ * included with this distribution is covered by the same copyright terms
14
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15
+ *
16
+ * Copyright remains Eric Young's, and as such any Copyright notices in
17
+ * the code are not to be removed.
18
+ * If this package is used in a product, Eric Young should be given attribution
19
+ * as the author of the parts of the library used.
20
+ * This can be in the form of a textual message at program startup or
21
+ * in documentation (online or textual) provided with the package.
22
+ *
23
+ * Redistribution and use in source and binary forms, with or without
24
+ * modification, are permitted provided that the following conditions
25
+ * are met:
26
+ * 1. Redistributions of source code must retain the copyright
27
+ * notice, this list of conditions and the following disclaimer.
28
+ * 2. Redistributions in binary form must reproduce the above copyright
29
+ * notice, this list of conditions and the following disclaimer in the
30
+ * documentation and/or other materials provided with the distribution.
31
+ * 3. All advertising materials mentioning features or use of this software
32
+ * must display the following acknowledgement:
33
+ * "This product includes cryptographic software written by
34
+ * Eric Young (eay@cryptsoft.com)"
35
+ * The word 'cryptographic' can be left out if the rouines from the library
36
+ * being used are not cryptographic related :-).
37
+ * 4. If you include any Windows specific code (or a derivative thereof) from
38
+ * the apps directory (application code) you must include an acknowledgement:
39
+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40
+ *
41
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51
+ * SUCH DAMAGE.
52
+ *
53
+ * The licence and distribution terms for any publically available version or
54
+ * derivative of this code cannot be changed. i.e. this code cannot simply be
55
+ * copied and put under another distribution licence
56
+ * [including the GNU Public Licence.]
57
+ */
58
+
59
+ #ifndef HEADER_ASN1_H
60
+ # define HEADER_ASN1_H
61
+
62
+ # include <time.h>
63
+ # include <openssl/e_os2.h>
64
+ # ifndef OPENSSL_NO_BIO
65
+ # include <openssl/bio.h>
66
+ # endif
67
+ # include <openssl/stack.h>
68
+ # include <openssl/safestack.h>
69
+
70
+ # include <openssl/symhacks.h>
71
+
72
+ # include <openssl/ossl_typ.h>
73
+ # ifndef OPENSSL_NO_DEPRECATED
74
+ # include <openssl/bn.h>
75
+ # endif
76
+
77
+ # ifdef OPENSSL_BUILD_SHLIBCRYPTO
78
+ # undef OPENSSL_EXTERN
79
+ # define OPENSSL_EXTERN OPENSSL_EXPORT
80
+ # endif
81
+
82
+ #ifdef __cplusplus
83
+ extern "C" {
84
+ #endif
85
+
86
+ # define V_ASN1_UNIVERSAL 0x00
87
+ # define V_ASN1_APPLICATION 0x40
88
+ # define V_ASN1_CONTEXT_SPECIFIC 0x80
89
+ # define V_ASN1_PRIVATE 0xc0
90
+
91
+ # define V_ASN1_CONSTRUCTED 0x20
92
+ # define V_ASN1_PRIMITIVE_TAG 0x1f
93
+ # define V_ASN1_PRIMATIVE_TAG 0x1f
94
+
95
+ # define V_ASN1_APP_CHOOSE -2/* let the recipient choose */
96
+ # define V_ASN1_OTHER -3/* used in ASN1_TYPE */
97
+ # define V_ASN1_ANY -4/* used in ASN1 template code */
98
+
99
+ # define V_ASN1_NEG 0x100/* negative flag */
100
+
101
+ # define V_ASN1_UNDEF -1
102
+ # define V_ASN1_EOC 0
103
+ # define V_ASN1_BOOLEAN 1 /**/
104
+ # define V_ASN1_INTEGER 2
105
+ # define V_ASN1_NEG_INTEGER (2 | V_ASN1_NEG)
106
+ # define V_ASN1_BIT_STRING 3
107
+ # define V_ASN1_OCTET_STRING 4
108
+ # define V_ASN1_NULL 5
109
+ # define V_ASN1_OBJECT 6
110
+ # define V_ASN1_OBJECT_DESCRIPTOR 7
111
+ # define V_ASN1_EXTERNAL 8
112
+ # define V_ASN1_REAL 9
113
+ # define V_ASN1_ENUMERATED 10
114
+ # define V_ASN1_NEG_ENUMERATED (10 | V_ASN1_NEG)
115
+ # define V_ASN1_UTF8STRING 12
116
+ # define V_ASN1_SEQUENCE 16
117
+ # define V_ASN1_SET 17
118
+ # define V_ASN1_NUMERICSTRING 18 /**/
119
+ # define V_ASN1_PRINTABLESTRING 19
120
+ # define V_ASN1_T61STRING 20
121
+ # define V_ASN1_TELETEXSTRING 20/* alias */
122
+ # define V_ASN1_VIDEOTEXSTRING 21 /**/
123
+ # define V_ASN1_IA5STRING 22
124
+ # define V_ASN1_UTCTIME 23
125
+ # define V_ASN1_GENERALIZEDTIME 24 /**/
126
+ # define V_ASN1_GRAPHICSTRING 25 /**/
127
+ # define V_ASN1_ISO64STRING 26 /**/
128
+ # define V_ASN1_VISIBLESTRING 26/* alias */
129
+ # define V_ASN1_GENERALSTRING 27 /**/
130
+ # define V_ASN1_UNIVERSALSTRING 28 /**/
131
+ # define V_ASN1_BMPSTRING 30
132
+ /* For use with d2i_ASN1_type_bytes() */
133
+ # define B_ASN1_NUMERICSTRING 0x0001
134
+ # define B_ASN1_PRINTABLESTRING 0x0002
135
+ # define B_ASN1_T61STRING 0x0004
136
+ # define B_ASN1_TELETEXSTRING 0x0004
137
+ # define B_ASN1_VIDEOTEXSTRING 0x0008
138
+ # define B_ASN1_IA5STRING 0x0010
139
+ # define B_ASN1_GRAPHICSTRING 0x0020
140
+ # define B_ASN1_ISO64STRING 0x0040
141
+ # define B_ASN1_VISIBLESTRING 0x0040
142
+ # define B_ASN1_GENERALSTRING 0x0080
143
+ # define B_ASN1_UNIVERSALSTRING 0x0100
144
+ # define B_ASN1_OCTET_STRING 0x0200
145
+ # define B_ASN1_BIT_STRING 0x0400
146
+ # define B_ASN1_BMPSTRING 0x0800
147
+ # define B_ASN1_UNKNOWN 0x1000
148
+ # define B_ASN1_UTF8STRING 0x2000
149
+ # define B_ASN1_UTCTIME 0x4000
150
+ # define B_ASN1_GENERALIZEDTIME 0x8000
151
+ # define B_ASN1_SEQUENCE 0x10000
152
+ /* For use with ASN1_mbstring_copy() */
153
+ # define MBSTRING_FLAG 0x1000
154
+ # define MBSTRING_UTF8 (MBSTRING_FLAG)
155
+ # define MBSTRING_ASC (MBSTRING_FLAG|1)
156
+ # define MBSTRING_BMP (MBSTRING_FLAG|2)
157
+ # define MBSTRING_UNIV (MBSTRING_FLAG|4)
158
+ # define SMIME_OLDMIME 0x400
159
+ # define SMIME_CRLFEOL 0x800
160
+ # define SMIME_STREAM 0x1000
161
+ struct X509_algor_st;
162
+ DECLARE_STACK_OF(X509_ALGOR)
163
+
164
+ # define DECLARE_ASN1_SET_OF(type)/* filled in by mkstack.pl */
165
+ # define IMPLEMENT_ASN1_SET_OF(type)/* nothing, no longer needed */
166
+
167
+ /*
168
+ * We MUST make sure that, except for constness, asn1_ctx_st and
169
+ * asn1_const_ctx are exactly the same. Fortunately, as soon as the old ASN1
170
+ * parsing macros are gone, we can throw this away as well...
171
+ */
172
+ typedef struct asn1_ctx_st {
173
+ unsigned char *p; /* work char pointer */
174
+ int eos; /* end of sequence read for indefinite
175
+ * encoding */
176
+ int error; /* error code to use when returning an error */
177
+ int inf; /* constructed if 0x20, indefinite is 0x21 */
178
+ int tag; /* tag from last 'get object' */
179
+ int xclass; /* class from last 'get object' */
180
+ long slen; /* length of last 'get object' */
181
+ unsigned char *max; /* largest value of p allowed */
182
+ unsigned char *q; /* temporary variable */
183
+ unsigned char **pp; /* variable */
184
+ int line; /* used in error processing */
185
+ } ASN1_CTX;
186
+
187
+ typedef struct asn1_const_ctx_st {
188
+ const unsigned char *p; /* work char pointer */
189
+ int eos; /* end of sequence read for indefinite
190
+ * encoding */
191
+ int error; /* error code to use when returning an error */
192
+ int inf; /* constructed if 0x20, indefinite is 0x21 */
193
+ int tag; /* tag from last 'get object' */
194
+ int xclass; /* class from last 'get object' */
195
+ long slen; /* length of last 'get object' */
196
+ const unsigned char *max; /* largest value of p allowed */
197
+ const unsigned char *q; /* temporary variable */
198
+ const unsigned char **pp; /* variable */
199
+ int line; /* used in error processing */
200
+ } ASN1_const_CTX;
201
+
202
+ /*
203
+ * These are used internally in the ASN1_OBJECT to keep track of whether the
204
+ * names and data need to be free()ed
205
+ */
206
+ # define ASN1_OBJECT_FLAG_DYNAMIC 0x01/* internal use */
207
+ # define ASN1_OBJECT_FLAG_CRITICAL 0x02/* critical x509v3 object id */
208
+ # define ASN1_OBJECT_FLAG_DYNAMIC_STRINGS 0x04/* internal use */
209
+ # define ASN1_OBJECT_FLAG_DYNAMIC_DATA 0x08/* internal use */
210
+ struct asn1_object_st {
211
+ const char *sn, *ln;
212
+ int nid;
213
+ int length;
214
+ const unsigned char *data; /* data remains const after init */
215
+ int flags; /* Should we free this one */
216
+ };
217
+
218
+ # define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */
219
+ /*
220
+ * This indicates that the ASN1_STRING is not a real value but just a place
221
+ * holder for the location where indefinite length constructed data should be
222
+ * inserted in the memory buffer
223
+ */
224
+ # define ASN1_STRING_FLAG_NDEF 0x010
225
+
226
+ /*
227
+ * This flag is used by the CMS code to indicate that a string is not
228
+ * complete and is a place holder for content when it had all been accessed.
229
+ * The flag will be reset when content has been written to it.
230
+ */
231
+
232
+ # define ASN1_STRING_FLAG_CONT 0x020
233
+ /*
234
+ * This flag is used by ASN1 code to indicate an ASN1_STRING is an MSTRING
235
+ * type.
236
+ */
237
+ # define ASN1_STRING_FLAG_MSTRING 0x040
238
+ /* This is the base type that holds just about everything :-) */
239
+ struct asn1_string_st {
240
+ int length;
241
+ int type;
242
+ unsigned char *data;
243
+ /*
244
+ * The value of the following field depends on the type being held. It
245
+ * is mostly being used for BIT_STRING so if the input data has a
246
+ * non-zero 'unused bits' value, it will be handled correctly
247
+ */
248
+ long flags;
249
+ };
250
+
251
+ /*
252
+ * ASN1_ENCODING structure: this is used to save the received encoding of an
253
+ * ASN1 type. This is useful to get round problems with invalid encodings
254
+ * which can break signatures.
255
+ */
256
+
257
+ typedef struct ASN1_ENCODING_st {
258
+ unsigned char *enc; /* DER encoding */
259
+ long len; /* Length of encoding */
260
+ int modified; /* set to 1 if 'enc' is invalid */
261
+ } ASN1_ENCODING;
262
+
263
+ /* Used with ASN1 LONG type: if a long is set to this it is omitted */
264
+ # define ASN1_LONG_UNDEF 0x7fffffffL
265
+
266
+ # define STABLE_FLAGS_MALLOC 0x01
267
+ # define STABLE_NO_MASK 0x02
268
+ # define DIRSTRING_TYPE \
269
+ (B_ASN1_PRINTABLESTRING|B_ASN1_T61STRING|B_ASN1_BMPSTRING|B_ASN1_UTF8STRING)
270
+ # define PKCS9STRING_TYPE (DIRSTRING_TYPE|B_ASN1_IA5STRING)
271
+
272
+ typedef struct asn1_string_table_st {
273
+ int nid;
274
+ long minsize;
275
+ long maxsize;
276
+ unsigned long mask;
277
+ unsigned long flags;
278
+ } ASN1_STRING_TABLE;
279
+
280
+ DECLARE_STACK_OF(ASN1_STRING_TABLE)
281
+
282
+ /* size limits: this stuff is taken straight from RFC2459 */
283
+
284
+ # define ub_name 32768
285
+ # define ub_common_name 64
286
+ # define ub_locality_name 128
287
+ # define ub_state_name 128
288
+ # define ub_organization_name 64
289
+ # define ub_organization_unit_name 64
290
+ # define ub_title 64
291
+ # define ub_email_address 128
292
+
293
+ /*
294
+ * Declarations for template structures: for full definitions see asn1t.h
295
+ */
296
+ typedef struct ASN1_TEMPLATE_st ASN1_TEMPLATE;
297
+ typedef struct ASN1_TLC_st ASN1_TLC;
298
+ /* This is just an opaque pointer */
299
+ typedef struct ASN1_VALUE_st ASN1_VALUE;
300
+
301
+ /* Declare ASN1 functions: the implement macro in in asn1t.h */
302
+
303
+ # define DECLARE_ASN1_FUNCTIONS(type) DECLARE_ASN1_FUNCTIONS_name(type, type)
304
+
305
+ # define DECLARE_ASN1_ALLOC_FUNCTIONS(type) \
306
+ DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, type)
307
+
308
+ # define DECLARE_ASN1_FUNCTIONS_name(type, name) \
309
+ DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \
310
+ DECLARE_ASN1_ENCODE_FUNCTIONS(type, name, name)
311
+
312
+ # define DECLARE_ASN1_FUNCTIONS_fname(type, itname, name) \
313
+ DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \
314
+ DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name)
315
+
316
+ # define DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) \
317
+ type *d2i_##name(type **a, const unsigned char **in, long len); \
318
+ int i2d_##name(type *a, unsigned char **out); \
319
+ DECLARE_ASN1_ITEM(itname)
320
+
321
+ # define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \
322
+ type *d2i_##name(type **a, const unsigned char **in, long len); \
323
+ int i2d_##name(const type *a, unsigned char **out); \
324
+ DECLARE_ASN1_ITEM(name)
325
+
326
+ # define DECLARE_ASN1_NDEF_FUNCTION(name) \
327
+ int i2d_##name##_NDEF(name *a, unsigned char **out);
328
+
329
+ # define DECLARE_ASN1_FUNCTIONS_const(name) \
330
+ DECLARE_ASN1_ALLOC_FUNCTIONS(name) \
331
+ DECLARE_ASN1_ENCODE_FUNCTIONS_const(name, name)
332
+
333
+ # define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \
334
+ type *name##_new(void); \
335
+ void name##_free(type *a);
336
+
337
+ # define DECLARE_ASN1_PRINT_FUNCTION(stname) \
338
+ DECLARE_ASN1_PRINT_FUNCTION_fname(stname, stname)
339
+
340
+ # define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \
341
+ int fname##_print_ctx(BIO *out, stname *x, int indent, \
342
+ const ASN1_PCTX *pctx);
343
+
344
+ # define D2I_OF(type) type *(*)(type **,const unsigned char **,long)
345
+ # define I2D_OF(type) int (*)(type *,unsigned char **)
346
+ # define I2D_OF_const(type) int (*)(const type *,unsigned char **)
347
+
348
+ # define CHECKED_D2I_OF(type, d2i) \
349
+ ((d2i_of_void*) (1 ? d2i : ((D2I_OF(type))0)))
350
+ # define CHECKED_I2D_OF(type, i2d) \
351
+ ((i2d_of_void*) (1 ? i2d : ((I2D_OF(type))0)))
352
+ # define CHECKED_NEW_OF(type, xnew) \
353
+ ((void *(*)(void)) (1 ? xnew : ((type *(*)(void))0)))
354
+ # define CHECKED_PTR_OF(type, p) \
355
+ ((void*) (1 ? p : (type*)0))
356
+ # define CHECKED_PPTR_OF(type, p) \
357
+ ((void**) (1 ? p : (type**)0))
358
+
359
+ # define TYPEDEF_D2I_OF(type) typedef type *d2i_of_##type(type **,const unsigned char **,long)
360
+ # define TYPEDEF_I2D_OF(type) typedef int i2d_of_##type(type *,unsigned char **)
361
+ # define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type)
362
+
363
+ TYPEDEF_D2I2D_OF(void);
364
+
365
+ /*-
366
+ * The following macros and typedefs allow an ASN1_ITEM
367
+ * to be embedded in a structure and referenced. Since
368
+ * the ASN1_ITEM pointers need to be globally accessible
369
+ * (possibly from shared libraries) they may exist in
370
+ * different forms. On platforms that support it the
371
+ * ASN1_ITEM structure itself will be globally exported.
372
+ * Other platforms will export a function that returns
373
+ * an ASN1_ITEM pointer.
374
+ *
375
+ * To handle both cases transparently the macros below
376
+ * should be used instead of hard coding an ASN1_ITEM
377
+ * pointer in a structure.
378
+ *
379
+ * The structure will look like this:
380
+ *
381
+ * typedef struct SOMETHING_st {
382
+ * ...
383
+ * ASN1_ITEM_EXP *iptr;
384
+ * ...
385
+ * } SOMETHING;
386
+ *
387
+ * It would be initialised as e.g.:
388
+ *
389
+ * SOMETHING somevar = {...,ASN1_ITEM_ref(X509),...};
390
+ *
391
+ * and the actual pointer extracted with:
392
+ *
393
+ * const ASN1_ITEM *it = ASN1_ITEM_ptr(somevar.iptr);
394
+ *
395
+ * Finally an ASN1_ITEM pointer can be extracted from an
396
+ * appropriate reference with: ASN1_ITEM_rptr(X509). This
397
+ * would be used when a function takes an ASN1_ITEM * argument.
398
+ *
399
+ */
400
+
401
+ # ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION
402
+
403
+ /* ASN1_ITEM pointer exported type */
404
+ typedef const ASN1_ITEM ASN1_ITEM_EXP;
405
+
406
+ /* Macro to obtain ASN1_ITEM pointer from exported type */
407
+ # define ASN1_ITEM_ptr(iptr) (iptr)
408
+
409
+ /* Macro to include ASN1_ITEM pointer from base type */
410
+ # define ASN1_ITEM_ref(iptr) (&(iptr##_it))
411
+
412
+ # define ASN1_ITEM_rptr(ref) (&(ref##_it))
413
+
414
+ # define DECLARE_ASN1_ITEM(name) \
415
+ OPENSSL_EXTERN const ASN1_ITEM name##_it;
416
+
417
+ # else
418
+
419
+ /*
420
+ * Platforms that can't easily handle shared global variables are declared as
421
+ * functions returning ASN1_ITEM pointers.
422
+ */
423
+
424
+ /* ASN1_ITEM pointer exported type */
425
+ typedef const ASN1_ITEM *ASN1_ITEM_EXP (void);
426
+
427
+ /* Macro to obtain ASN1_ITEM pointer from exported type */
428
+ # define ASN1_ITEM_ptr(iptr) (iptr())
429
+
430
+ /* Macro to include ASN1_ITEM pointer from base type */
431
+ # define ASN1_ITEM_ref(iptr) (iptr##_it)
432
+
433
+ # define ASN1_ITEM_rptr(ref) (ref##_it())
434
+
435
+ # define DECLARE_ASN1_ITEM(name) \
436
+ const ASN1_ITEM * name##_it(void);
437
+
438
+ # endif
439
+
440
+ /* Parameters used by ASN1_STRING_print_ex() */
441
+
442
+ /*
443
+ * These determine which characters to escape: RFC2253 special characters,
444
+ * control characters and MSB set characters
445
+ */
446
+
447
+ # define ASN1_STRFLGS_ESC_2253 1
448
+ # define ASN1_STRFLGS_ESC_CTRL 2
449
+ # define ASN1_STRFLGS_ESC_MSB 4
450
+
451
+ /*
452
+ * This flag determines how we do escaping: normally RC2253 backslash only,
453
+ * set this to use backslash and quote.
454
+ */
455
+
456
+ # define ASN1_STRFLGS_ESC_QUOTE 8
457
+
458
+ /* These three flags are internal use only. */
459
+
460
+ /* Character is a valid PrintableString character */
461
+ # define CHARTYPE_PRINTABLESTRING 0x10
462
+ /* Character needs escaping if it is the first character */
463
+ # define CHARTYPE_FIRST_ESC_2253 0x20
464
+ /* Character needs escaping if it is the last character */
465
+ # define CHARTYPE_LAST_ESC_2253 0x40
466
+
467
+ /*
468
+ * NB the internal flags are safely reused below by flags handled at the top
469
+ * level.
470
+ */
471
+
472
+ /*
473
+ * If this is set we convert all character strings to UTF8 first
474
+ */
475
+
476
+ # define ASN1_STRFLGS_UTF8_CONVERT 0x10
477
+
478
+ /*
479
+ * If this is set we don't attempt to interpret content: just assume all
480
+ * strings are 1 byte per character. This will produce some pretty odd
481
+ * looking output!
482
+ */
483
+
484
+ # define ASN1_STRFLGS_IGNORE_TYPE 0x20
485
+
486
+ /* If this is set we include the string type in the output */
487
+ # define ASN1_STRFLGS_SHOW_TYPE 0x40
488
+
489
+ /*
490
+ * This determines which strings to display and which to 'dump' (hex dump of
491
+ * content octets or DER encoding). We can only dump non character strings or
492
+ * everything. If we don't dump 'unknown' they are interpreted as character
493
+ * strings with 1 octet per character and are subject to the usual escaping
494
+ * options.
495
+ */
496
+
497
+ # define ASN1_STRFLGS_DUMP_ALL 0x80
498
+ # define ASN1_STRFLGS_DUMP_UNKNOWN 0x100
499
+
500
+ /*
501
+ * These determine what 'dumping' does, we can dump the content octets or the
502
+ * DER encoding: both use the RFC2253 #XXXXX notation.
503
+ */
504
+
505
+ # define ASN1_STRFLGS_DUMP_DER 0x200
506
+
507
+ /*
508
+ * All the string flags consistent with RFC2253, escaping control characters
509
+ * isn't essential in RFC2253 but it is advisable anyway.
510
+ */
511
+
512
+ # define ASN1_STRFLGS_RFC2253 (ASN1_STRFLGS_ESC_2253 | \
513
+ ASN1_STRFLGS_ESC_CTRL | \
514
+ ASN1_STRFLGS_ESC_MSB | \
515
+ ASN1_STRFLGS_UTF8_CONVERT | \
516
+ ASN1_STRFLGS_DUMP_UNKNOWN | \
517
+ ASN1_STRFLGS_DUMP_DER)
518
+
519
+ DECLARE_STACK_OF(ASN1_INTEGER)
520
+ DECLARE_ASN1_SET_OF(ASN1_INTEGER)
521
+
522
+ DECLARE_STACK_OF(ASN1_GENERALSTRING)
523
+
524
+ typedef struct asn1_type_st {
525
+ int type;
526
+ union {
527
+ char *ptr;
528
+ ASN1_BOOLEAN boolean;
529
+ ASN1_STRING *asn1_string;
530
+ ASN1_OBJECT *object;
531
+ ASN1_INTEGER *integer;
532
+ ASN1_ENUMERATED *enumerated;
533
+ ASN1_BIT_STRING *bit_string;
534
+ ASN1_OCTET_STRING *octet_string;
535
+ ASN1_PRINTABLESTRING *printablestring;
536
+ ASN1_T61STRING *t61string;
537
+ ASN1_IA5STRING *ia5string;
538
+ ASN1_GENERALSTRING *generalstring;
539
+ ASN1_BMPSTRING *bmpstring;
540
+ ASN1_UNIVERSALSTRING *universalstring;
541
+ ASN1_UTCTIME *utctime;
542
+ ASN1_GENERALIZEDTIME *generalizedtime;
543
+ ASN1_VISIBLESTRING *visiblestring;
544
+ ASN1_UTF8STRING *utf8string;
545
+ /*
546
+ * set and sequence are left complete and still contain the set or
547
+ * sequence bytes
548
+ */
549
+ ASN1_STRING *set;
550
+ ASN1_STRING *sequence;
551
+ ASN1_VALUE *asn1_value;
552
+ } value;
553
+ } ASN1_TYPE;
554
+
555
+ DECLARE_STACK_OF(ASN1_TYPE)
556
+ DECLARE_ASN1_SET_OF(ASN1_TYPE)
557
+
558
+ typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY;
559
+
560
+ DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY)
561
+ DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SET_ANY)
562
+
563
+ typedef struct NETSCAPE_X509_st {
564
+ ASN1_OCTET_STRING *header;
565
+ X509 *cert;
566
+ } NETSCAPE_X509;
567
+
568
+ /* This is used to contain a list of bit names */
569
+ typedef struct BIT_STRING_BITNAME_st {
570
+ int bitnum;
571
+ const char *lname;
572
+ const char *sname;
573
+ } BIT_STRING_BITNAME;
574
+
575
+ # define M_ASN1_STRING_length(x) ((x)->length)
576
+ # define M_ASN1_STRING_length_set(x, n) ((x)->length = (n))
577
+ # define M_ASN1_STRING_type(x) ((x)->type)
578
+ # define M_ASN1_STRING_data(x) ((x)->data)
579
+
580
+ /* Macros for string operations */
581
+ # define M_ASN1_BIT_STRING_new() (ASN1_BIT_STRING *)\
582
+ ASN1_STRING_type_new(V_ASN1_BIT_STRING)
583
+ # define M_ASN1_BIT_STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
584
+ # define M_ASN1_BIT_STRING_dup(a) (ASN1_BIT_STRING *)\
585
+ ASN1_STRING_dup((const ASN1_STRING *)a)
586
+ # define M_ASN1_BIT_STRING_cmp(a,b) ASN1_STRING_cmp(\
587
+ (const ASN1_STRING *)a,(const ASN1_STRING *)b)
588
+ # define M_ASN1_BIT_STRING_set(a,b,c) ASN1_STRING_set((ASN1_STRING *)a,b,c)
589
+
590
+ # define M_ASN1_INTEGER_new() (ASN1_INTEGER *)\
591
+ ASN1_STRING_type_new(V_ASN1_INTEGER)
592
+ # define M_ASN1_INTEGER_free(a) ASN1_STRING_free((ASN1_STRING *)a)
593
+ # define M_ASN1_INTEGER_dup(a) (ASN1_INTEGER *)\
594
+ ASN1_STRING_dup((const ASN1_STRING *)a)
595
+ # define M_ASN1_INTEGER_cmp(a,b) ASN1_STRING_cmp(\
596
+ (const ASN1_STRING *)a,(const ASN1_STRING *)b)
597
+
598
+ # define M_ASN1_ENUMERATED_new() (ASN1_ENUMERATED *)\
599
+ ASN1_STRING_type_new(V_ASN1_ENUMERATED)
600
+ # define M_ASN1_ENUMERATED_free(a) ASN1_STRING_free((ASN1_STRING *)a)
601
+ # define M_ASN1_ENUMERATED_dup(a) (ASN1_ENUMERATED *)\
602
+ ASN1_STRING_dup((const ASN1_STRING *)a)
603
+ # define M_ASN1_ENUMERATED_cmp(a,b) ASN1_STRING_cmp(\
604
+ (const ASN1_STRING *)a,(const ASN1_STRING *)b)
605
+
606
+ # define M_ASN1_OCTET_STRING_new() (ASN1_OCTET_STRING *)\
607
+ ASN1_STRING_type_new(V_ASN1_OCTET_STRING)
608
+ # define M_ASN1_OCTET_STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
609
+ # define M_ASN1_OCTET_STRING_dup(a) (ASN1_OCTET_STRING *)\
610
+ ASN1_STRING_dup((const ASN1_STRING *)a)
611
+ # define M_ASN1_OCTET_STRING_cmp(a,b) ASN1_STRING_cmp(\
612
+ (const ASN1_STRING *)a,(const ASN1_STRING *)b)
613
+ # define M_ASN1_OCTET_STRING_set(a,b,c) ASN1_STRING_set((ASN1_STRING *)a,b,c)
614
+ # define M_ASN1_OCTET_STRING_print(a,b) ASN1_STRING_print(a,(ASN1_STRING *)b)
615
+ # define M_i2d_ASN1_OCTET_STRING(a,pp) \
616
+ i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_OCTET_STRING,\
617
+ V_ASN1_UNIVERSAL)
618
+
619
+ # define B_ASN1_TIME \
620
+ B_ASN1_UTCTIME | \
621
+ B_ASN1_GENERALIZEDTIME
622
+
623
+ # define B_ASN1_PRINTABLE \
624
+ B_ASN1_NUMERICSTRING| \
625
+ B_ASN1_PRINTABLESTRING| \
626
+ B_ASN1_T61STRING| \
627
+ B_ASN1_IA5STRING| \
628
+ B_ASN1_BIT_STRING| \
629
+ B_ASN1_UNIVERSALSTRING|\
630
+ B_ASN1_BMPSTRING|\
631
+ B_ASN1_UTF8STRING|\
632
+ B_ASN1_SEQUENCE|\
633
+ B_ASN1_UNKNOWN
634
+
635
+ # define B_ASN1_DIRECTORYSTRING \
636
+ B_ASN1_PRINTABLESTRING| \
637
+ B_ASN1_TELETEXSTRING|\
638
+ B_ASN1_BMPSTRING|\
639
+ B_ASN1_UNIVERSALSTRING|\
640
+ B_ASN1_UTF8STRING
641
+
642
+ # define B_ASN1_DISPLAYTEXT \
643
+ B_ASN1_IA5STRING| \
644
+ B_ASN1_VISIBLESTRING| \
645
+ B_ASN1_BMPSTRING|\
646
+ B_ASN1_UTF8STRING
647
+
648
+ # define M_ASN1_PRINTABLE_new() ASN1_STRING_type_new(V_ASN1_T61STRING)
649
+ # define M_ASN1_PRINTABLE_free(a) ASN1_STRING_free((ASN1_STRING *)a)
650
+ # define M_i2d_ASN1_PRINTABLE(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\
651
+ pp,a->type,V_ASN1_UNIVERSAL)
652
+ # define M_d2i_ASN1_PRINTABLE(a,pp,l) \
653
+ d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \
654
+ B_ASN1_PRINTABLE)
655
+
656
+ # define M_DIRECTORYSTRING_new() ASN1_STRING_type_new(V_ASN1_PRINTABLESTRING)
657
+ # define M_DIRECTORYSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
658
+ # define M_i2d_DIRECTORYSTRING(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\
659
+ pp,a->type,V_ASN1_UNIVERSAL)
660
+ # define M_d2i_DIRECTORYSTRING(a,pp,l) \
661
+ d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \
662
+ B_ASN1_DIRECTORYSTRING)
663
+
664
+ # define M_DISPLAYTEXT_new() ASN1_STRING_type_new(V_ASN1_VISIBLESTRING)
665
+ # define M_DISPLAYTEXT_free(a) ASN1_STRING_free((ASN1_STRING *)a)
666
+ # define M_i2d_DISPLAYTEXT(a,pp) i2d_ASN1_bytes((ASN1_STRING *)a,\
667
+ pp,a->type,V_ASN1_UNIVERSAL)
668
+ # define M_d2i_DISPLAYTEXT(a,pp,l) \
669
+ d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l, \
670
+ B_ASN1_DISPLAYTEXT)
671
+
672
+ # define M_ASN1_PRINTABLESTRING_new() (ASN1_PRINTABLESTRING *)\
673
+ ASN1_STRING_type_new(V_ASN1_PRINTABLESTRING)
674
+ # define M_ASN1_PRINTABLESTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
675
+ # define M_i2d_ASN1_PRINTABLESTRING(a,pp) \
676
+ i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_PRINTABLESTRING,\
677
+ V_ASN1_UNIVERSAL)
678
+ # define M_d2i_ASN1_PRINTABLESTRING(a,pp,l) \
679
+ (ASN1_PRINTABLESTRING *)d2i_ASN1_type_bytes\
680
+ ((ASN1_STRING **)a,pp,l,B_ASN1_PRINTABLESTRING)
681
+
682
+ # define M_ASN1_T61STRING_new() (ASN1_T61STRING *)\
683
+ ASN1_STRING_type_new(V_ASN1_T61STRING)
684
+ # define M_ASN1_T61STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
685
+ # define M_i2d_ASN1_T61STRING(a,pp) \
686
+ i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_T61STRING,\
687
+ V_ASN1_UNIVERSAL)
688
+ # define M_d2i_ASN1_T61STRING(a,pp,l) \
689
+ (ASN1_T61STRING *)d2i_ASN1_type_bytes\
690
+ ((ASN1_STRING **)a,pp,l,B_ASN1_T61STRING)
691
+
692
+ # define M_ASN1_IA5STRING_new() (ASN1_IA5STRING *)\
693
+ ASN1_STRING_type_new(V_ASN1_IA5STRING)
694
+ # define M_ASN1_IA5STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
695
+ # define M_ASN1_IA5STRING_dup(a) \
696
+ (ASN1_IA5STRING *)ASN1_STRING_dup((const ASN1_STRING *)a)
697
+ # define M_i2d_ASN1_IA5STRING(a,pp) \
698
+ i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_IA5STRING,\
699
+ V_ASN1_UNIVERSAL)
700
+ # define M_d2i_ASN1_IA5STRING(a,pp,l) \
701
+ (ASN1_IA5STRING *)d2i_ASN1_type_bytes((ASN1_STRING **)a,pp,l,\
702
+ B_ASN1_IA5STRING)
703
+
704
+ # define M_ASN1_UTCTIME_new() (ASN1_UTCTIME *)\
705
+ ASN1_STRING_type_new(V_ASN1_UTCTIME)
706
+ # define M_ASN1_UTCTIME_free(a) ASN1_STRING_free((ASN1_STRING *)a)
707
+ # define M_ASN1_UTCTIME_dup(a) (ASN1_UTCTIME *)\
708
+ ASN1_STRING_dup((const ASN1_STRING *)a)
709
+
710
+ # define M_ASN1_GENERALIZEDTIME_new() (ASN1_GENERALIZEDTIME *)\
711
+ ASN1_STRING_type_new(V_ASN1_GENERALIZEDTIME)
712
+ # define M_ASN1_GENERALIZEDTIME_free(a) ASN1_STRING_free((ASN1_STRING *)a)
713
+ # define M_ASN1_GENERALIZEDTIME_dup(a) (ASN1_GENERALIZEDTIME *)ASN1_STRING_dup(\
714
+ (const ASN1_STRING *)a)
715
+
716
+ # define M_ASN1_TIME_new() (ASN1_TIME *)\
717
+ ASN1_STRING_type_new(V_ASN1_UTCTIME)
718
+ # define M_ASN1_TIME_free(a) ASN1_STRING_free((ASN1_STRING *)a)
719
+ # define M_ASN1_TIME_dup(a) (ASN1_TIME *)\
720
+ ASN1_STRING_dup((const ASN1_STRING *)a)
721
+
722
+ # define M_ASN1_GENERALSTRING_new() (ASN1_GENERALSTRING *)\
723
+ ASN1_STRING_type_new(V_ASN1_GENERALSTRING)
724
+ # define M_ASN1_GENERALSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
725
+ # define M_i2d_ASN1_GENERALSTRING(a,pp) \
726
+ i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_GENERALSTRING,\
727
+ V_ASN1_UNIVERSAL)
728
+ # define M_d2i_ASN1_GENERALSTRING(a,pp,l) \
729
+ (ASN1_GENERALSTRING *)d2i_ASN1_type_bytes\
730
+ ((ASN1_STRING **)a,pp,l,B_ASN1_GENERALSTRING)
731
+
732
+ # define M_ASN1_UNIVERSALSTRING_new() (ASN1_UNIVERSALSTRING *)\
733
+ ASN1_STRING_type_new(V_ASN1_UNIVERSALSTRING)
734
+ # define M_ASN1_UNIVERSALSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
735
+ # define M_i2d_ASN1_UNIVERSALSTRING(a,pp) \
736
+ i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_UNIVERSALSTRING,\
737
+ V_ASN1_UNIVERSAL)
738
+ # define M_d2i_ASN1_UNIVERSALSTRING(a,pp,l) \
739
+ (ASN1_UNIVERSALSTRING *)d2i_ASN1_type_bytes\
740
+ ((ASN1_STRING **)a,pp,l,B_ASN1_UNIVERSALSTRING)
741
+
742
+ # define M_ASN1_BMPSTRING_new() (ASN1_BMPSTRING *)\
743
+ ASN1_STRING_type_new(V_ASN1_BMPSTRING)
744
+ # define M_ASN1_BMPSTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
745
+ # define M_i2d_ASN1_BMPSTRING(a,pp) \
746
+ i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_BMPSTRING,\
747
+ V_ASN1_UNIVERSAL)
748
+ # define M_d2i_ASN1_BMPSTRING(a,pp,l) \
749
+ (ASN1_BMPSTRING *)d2i_ASN1_type_bytes\
750
+ ((ASN1_STRING **)a,pp,l,B_ASN1_BMPSTRING)
751
+
752
+ # define M_ASN1_VISIBLESTRING_new() (ASN1_VISIBLESTRING *)\
753
+ ASN1_STRING_type_new(V_ASN1_VISIBLESTRING)
754
+ # define M_ASN1_VISIBLESTRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
755
+ # define M_i2d_ASN1_VISIBLESTRING(a,pp) \
756
+ i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_VISIBLESTRING,\
757
+ V_ASN1_UNIVERSAL)
758
+ # define M_d2i_ASN1_VISIBLESTRING(a,pp,l) \
759
+ (ASN1_VISIBLESTRING *)d2i_ASN1_type_bytes\
760
+ ((ASN1_STRING **)a,pp,l,B_ASN1_VISIBLESTRING)
761
+
762
+ # define M_ASN1_UTF8STRING_new() (ASN1_UTF8STRING *)\
763
+ ASN1_STRING_type_new(V_ASN1_UTF8STRING)
764
+ # define M_ASN1_UTF8STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
765
+ # define M_i2d_ASN1_UTF8STRING(a,pp) \
766
+ i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_UTF8STRING,\
767
+ V_ASN1_UNIVERSAL)
768
+ # define M_d2i_ASN1_UTF8STRING(a,pp,l) \
769
+ (ASN1_UTF8STRING *)d2i_ASN1_type_bytes\
770
+ ((ASN1_STRING **)a,pp,l,B_ASN1_UTF8STRING)
771
+
772
+ /* for the is_set parameter to i2d_ASN1_SET */
773
+ # define IS_SEQUENCE 0
774
+ # define IS_SET 1
775
+
776
+ DECLARE_ASN1_FUNCTIONS_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE)
777
+
778
+ int ASN1_TYPE_get(ASN1_TYPE *a);
779
+ void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value);
780
+ int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value);
781
+ int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b);
782
+
783
+ ASN1_OBJECT *ASN1_OBJECT_new(void);
784
+ void ASN1_OBJECT_free(ASN1_OBJECT *a);
785
+ int i2d_ASN1_OBJECT(ASN1_OBJECT *a, unsigned char **pp);
786
+ ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp,
787
+ long length);
788
+ ASN1_OBJECT *d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp,
789
+ long length);
790
+
791
+ DECLARE_ASN1_ITEM(ASN1_OBJECT)
792
+
793
+ DECLARE_STACK_OF(ASN1_OBJECT)
794
+ DECLARE_ASN1_SET_OF(ASN1_OBJECT)
795
+
796
+ ASN1_STRING *ASN1_STRING_new(void);
797
+ void ASN1_STRING_free(ASN1_STRING *a);
798
+ void ASN1_STRING_clear_free(ASN1_STRING *a);
799
+ int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str);
800
+ ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *a);
801
+ ASN1_STRING *ASN1_STRING_type_new(int type);
802
+ int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b);
803
+ /*
804
+ * Since this is used to store all sorts of things, via macros, for now,
805
+ * make its data void *
806
+ */
807
+ int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len);
808
+ void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len);
809
+ int ASN1_STRING_length(const ASN1_STRING *x);
810
+ void ASN1_STRING_length_set(ASN1_STRING *x, int n);
811
+ int ASN1_STRING_type(ASN1_STRING *x);
812
+ unsigned char *ASN1_STRING_data(ASN1_STRING *x);
813
+
814
+ DECLARE_ASN1_FUNCTIONS(ASN1_BIT_STRING)
815
+ int i2c_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **pp);
816
+ ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a,
817
+ const unsigned char **pp, long length);
818
+ int ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d, int length);
819
+ int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value);
820
+ int ASN1_BIT_STRING_get_bit(ASN1_BIT_STRING *a, int n);
821
+ int ASN1_BIT_STRING_check(ASN1_BIT_STRING *a,
822
+ unsigned char *flags, int flags_len);
823
+
824
+ # ifndef OPENSSL_NO_BIO
825
+ int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs,
826
+ BIT_STRING_BITNAME *tbl, int indent);
827
+ # endif
828
+ int ASN1_BIT_STRING_num_asc(char *name, BIT_STRING_BITNAME *tbl);
829
+ int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, char *name, int value,
830
+ BIT_STRING_BITNAME *tbl);
831
+
832
+ int i2d_ASN1_BOOLEAN(int a, unsigned char **pp);
833
+ int d2i_ASN1_BOOLEAN(int *a, const unsigned char **pp, long length);
834
+
835
+ DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER)
836
+ int i2c_ASN1_INTEGER(ASN1_INTEGER *a, unsigned char **pp);
837
+ ASN1_INTEGER *c2i_ASN1_INTEGER(ASN1_INTEGER **a, const unsigned char **pp,
838
+ long length);
839
+ ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp,
840
+ long length);
841
+ ASN1_INTEGER *ASN1_INTEGER_dup(const ASN1_INTEGER *x);
842
+ int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y);
843
+
844
+ DECLARE_ASN1_FUNCTIONS(ASN1_ENUMERATED)
845
+
846
+ int ASN1_UTCTIME_check(const ASN1_UTCTIME *a);
847
+ ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t);
848
+ ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t,
849
+ int offset_day, long offset_sec);
850
+ int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str);
851
+ int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t);
852
+ # if 0
853
+ time_t ASN1_UTCTIME_get(const ASN1_UTCTIME *s);
854
+ # endif
855
+
856
+ int ASN1_GENERALIZEDTIME_check(const ASN1_GENERALIZEDTIME *a);
857
+ ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s,
858
+ time_t t);
859
+ ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s,
860
+ time_t t, int offset_day,
861
+ long offset_sec);
862
+ int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str);
863
+ int ASN1_TIME_diff(int *pday, int *psec,
864
+ const ASN1_TIME *from, const ASN1_TIME *to);
865
+
866
+ DECLARE_ASN1_FUNCTIONS(ASN1_OCTET_STRING)
867
+ ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(const ASN1_OCTET_STRING *a);
868
+ int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a,
869
+ const ASN1_OCTET_STRING *b);
870
+ int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, const unsigned char *data,
871
+ int len);
872
+
873
+ DECLARE_ASN1_FUNCTIONS(ASN1_VISIBLESTRING)
874
+ DECLARE_ASN1_FUNCTIONS(ASN1_UNIVERSALSTRING)
875
+ DECLARE_ASN1_FUNCTIONS(ASN1_UTF8STRING)
876
+ DECLARE_ASN1_FUNCTIONS(ASN1_NULL)
877
+ DECLARE_ASN1_FUNCTIONS(ASN1_BMPSTRING)
878
+
879
+ int UTF8_getc(const unsigned char *str, int len, unsigned long *val);
880
+ int UTF8_putc(unsigned char *str, int len, unsigned long value);
881
+
882
+ DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, ASN1_PRINTABLE)
883
+
884
+ DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DIRECTORYSTRING)
885
+ DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DISPLAYTEXT)
886
+ DECLARE_ASN1_FUNCTIONS(ASN1_PRINTABLESTRING)
887
+ DECLARE_ASN1_FUNCTIONS(ASN1_T61STRING)
888
+ DECLARE_ASN1_FUNCTIONS(ASN1_IA5STRING)
889
+ DECLARE_ASN1_FUNCTIONS(ASN1_GENERALSTRING)
890
+ DECLARE_ASN1_FUNCTIONS(ASN1_UTCTIME)
891
+ DECLARE_ASN1_FUNCTIONS(ASN1_GENERALIZEDTIME)
892
+ DECLARE_ASN1_FUNCTIONS(ASN1_TIME)
893
+
894
+ DECLARE_ASN1_ITEM(ASN1_OCTET_STRING_NDEF)
895
+
896
+ ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t);
897
+ ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t,
898
+ int offset_day, long offset_sec);
899
+ int ASN1_TIME_check(ASN1_TIME *t);
900
+ ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME
901
+ **out);
902
+ int ASN1_TIME_set_string(ASN1_TIME *s, const char *str);
903
+
904
+ int i2d_ASN1_SET(STACK_OF(OPENSSL_BLOCK) *a, unsigned char **pp,
905
+ i2d_of_void *i2d, int ex_tag, int ex_class, int is_set);
906
+ STACK_OF(OPENSSL_BLOCK) *d2i_ASN1_SET(STACK_OF(OPENSSL_BLOCK) **a,
907
+ const unsigned char **pp,
908
+ long length, d2i_of_void *d2i,
909
+ void (*free_func) (OPENSSL_BLOCK),
910
+ int ex_tag, int ex_class);
911
+
912
+ # ifndef OPENSSL_NO_BIO
913
+ int i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a);
914
+ int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size);
915
+ int i2a_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *a);
916
+ int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size);
917
+ int i2a_ASN1_OBJECT(BIO *bp, ASN1_OBJECT *a);
918
+ int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size);
919
+ int i2a_ASN1_STRING(BIO *bp, ASN1_STRING *a, int type);
920
+ # endif
921
+ int i2t_ASN1_OBJECT(char *buf, int buf_len, ASN1_OBJECT *a);
922
+
923
+ int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num);
924
+ ASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data, int len,
925
+ const char *sn, const char *ln);
926
+
927
+ int ASN1_INTEGER_set(ASN1_INTEGER *a, long v);
928
+ long ASN1_INTEGER_get(const ASN1_INTEGER *a);
929
+ ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai);
930
+ BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn);
931
+
932
+ int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v);
933
+ long ASN1_ENUMERATED_get(ASN1_ENUMERATED *a);
934
+ ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(BIGNUM *bn, ASN1_ENUMERATED *ai);
935
+ BIGNUM *ASN1_ENUMERATED_to_BN(ASN1_ENUMERATED *ai, BIGNUM *bn);
936
+
937
+ /* General */
938
+ /* given a string, return the correct type, max is the maximum length */
939
+ int ASN1_PRINTABLE_type(const unsigned char *s, int max);
940
+
941
+ int i2d_ASN1_bytes(ASN1_STRING *a, unsigned char **pp, int tag, int xclass);
942
+ ASN1_STRING *d2i_ASN1_bytes(ASN1_STRING **a, const unsigned char **pp,
943
+ long length, int Ptag, int Pclass);
944
+ unsigned long ASN1_tag2bit(int tag);
945
+ /* type is one or more of the B_ASN1_ values. */
946
+ ASN1_STRING *d2i_ASN1_type_bytes(ASN1_STRING **a, const unsigned char **pp,
947
+ long length, int type);
948
+
949
+ /* PARSING */
950
+ int asn1_Finish(ASN1_CTX *c);
951
+ int asn1_const_Finish(ASN1_const_CTX *c);
952
+
953
+ /* SPECIALS */
954
+ int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag,
955
+ int *pclass, long omax);
956
+ int ASN1_check_infinite_end(unsigned char **p, long len);
957
+ int ASN1_const_check_infinite_end(const unsigned char **p, long len);
958
+ void ASN1_put_object(unsigned char **pp, int constructed, int length,
959
+ int tag, int xclass);
960
+ int ASN1_put_eoc(unsigned char **pp);
961
+ int ASN1_object_size(int constructed, int length, int tag);
962
+
963
+ /* Used to implement other functions */
964
+ void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, void *x);
965
+
966
+ # define ASN1_dup_of(type,i2d,d2i,x) \
967
+ ((type*)ASN1_dup(CHECKED_I2D_OF(type, i2d), \
968
+ CHECKED_D2I_OF(type, d2i), \
969
+ CHECKED_PTR_OF(type, x)))
970
+
971
+ # define ASN1_dup_of_const(type,i2d,d2i,x) \
972
+ ((type*)ASN1_dup(CHECKED_I2D_OF(const type, i2d), \
973
+ CHECKED_D2I_OF(type, d2i), \
974
+ CHECKED_PTR_OF(const type, x)))
975
+
976
+ void *ASN1_item_dup(const ASN1_ITEM *it, void *x);
977
+
978
+ /* ASN1 alloc/free macros for when a type is only used internally */
979
+
980
+ # define M_ASN1_new_of(type) (type *)ASN1_item_new(ASN1_ITEM_rptr(type))
981
+ # define M_ASN1_free_of(x, type) \
982
+ ASN1_item_free(CHECKED_PTR_OF(type, x), ASN1_ITEM_rptr(type))
983
+
984
+ # ifndef OPENSSL_NO_FP_API
985
+ void *ASN1_d2i_fp(void *(*xnew) (void), d2i_of_void *d2i, FILE *in, void **x);
986
+
987
+ # define ASN1_d2i_fp_of(type,xnew,d2i,in,x) \
988
+ ((type*)ASN1_d2i_fp(CHECKED_NEW_OF(type, xnew), \
989
+ CHECKED_D2I_OF(type, d2i), \
990
+ in, \
991
+ CHECKED_PPTR_OF(type, x)))
992
+
993
+ void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x);
994
+ int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, void *x);
995
+
996
+ # define ASN1_i2d_fp_of(type,i2d,out,x) \
997
+ (ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \
998
+ out, \
999
+ CHECKED_PTR_OF(type, x)))
1000
+
1001
+ # define ASN1_i2d_fp_of_const(type,i2d,out,x) \
1002
+ (ASN1_i2d_fp(CHECKED_I2D_OF(const type, i2d), \
1003
+ out, \
1004
+ CHECKED_PTR_OF(const type, x)))
1005
+
1006
+ int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, void *x);
1007
+ int ASN1_STRING_print_ex_fp(FILE *fp, ASN1_STRING *str, unsigned long flags);
1008
+ # endif
1009
+
1010
+ int ASN1_STRING_to_UTF8(unsigned char **out, ASN1_STRING *in);
1011
+
1012
+ # ifndef OPENSSL_NO_BIO
1013
+ void *ASN1_d2i_bio(void *(*xnew) (void), d2i_of_void *d2i, BIO *in, void **x);
1014
+
1015
+ # define ASN1_d2i_bio_of(type,xnew,d2i,in,x) \
1016
+ ((type*)ASN1_d2i_bio( CHECKED_NEW_OF(type, xnew), \
1017
+ CHECKED_D2I_OF(type, d2i), \
1018
+ in, \
1019
+ CHECKED_PPTR_OF(type, x)))
1020
+
1021
+ void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x);
1022
+ int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, unsigned char *x);
1023
+
1024
+ # define ASN1_i2d_bio_of(type,i2d,out,x) \
1025
+ (ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \
1026
+ out, \
1027
+ CHECKED_PTR_OF(type, x)))
1028
+
1029
+ # define ASN1_i2d_bio_of_const(type,i2d,out,x) \
1030
+ (ASN1_i2d_bio(CHECKED_I2D_OF(const type, i2d), \
1031
+ out, \
1032
+ CHECKED_PTR_OF(const type, x)))
1033
+
1034
+ int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x);
1035
+ int ASN1_UTCTIME_print(BIO *fp, const ASN1_UTCTIME *a);
1036
+ int ASN1_GENERALIZEDTIME_print(BIO *fp, const ASN1_GENERALIZEDTIME *a);
1037
+ int ASN1_TIME_print(BIO *fp, const ASN1_TIME *a);
1038
+ int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v);
1039
+ int ASN1_STRING_print_ex(BIO *out, ASN1_STRING *str, unsigned long flags);
1040
+ int ASN1_bn_print(BIO *bp, const char *number, const BIGNUM *num,
1041
+ unsigned char *buf, int off);
1042
+ int ASN1_parse(BIO *bp, const unsigned char *pp, long len, int indent);
1043
+ int ASN1_parse_dump(BIO *bp, const unsigned char *pp, long len, int indent,
1044
+ int dump);
1045
+ # endif
1046
+ const char *ASN1_tag2str(int tag);
1047
+
1048
+ /* Used to load and write netscape format cert */
1049
+
1050
+ DECLARE_ASN1_FUNCTIONS(NETSCAPE_X509)
1051
+
1052
+ int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s);
1053
+
1054
+ int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len);
1055
+ int ASN1_TYPE_get_octetstring(ASN1_TYPE *a, unsigned char *data, int max_len);
1056
+ int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num,
1057
+ unsigned char *data, int len);
1058
+ int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a, long *num,
1059
+ unsigned char *data, int max_len);
1060
+
1061
+ STACK_OF(OPENSSL_BLOCK) *ASN1_seq_unpack(const unsigned char *buf, int len,
1062
+ d2i_of_void *d2i,
1063
+ void (*free_func) (OPENSSL_BLOCK));
1064
+ unsigned char *ASN1_seq_pack(STACK_OF(OPENSSL_BLOCK) *safes, i2d_of_void *i2d,
1065
+ unsigned char **buf, int *len);
1066
+ void *ASN1_unpack_string(ASN1_STRING *oct, d2i_of_void *d2i);
1067
+ void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it);
1068
+ ASN1_STRING *ASN1_pack_string(void *obj, i2d_of_void *i2d,
1069
+ ASN1_OCTET_STRING **oct);
1070
+
1071
+ # define ASN1_pack_string_of(type,obj,i2d,oct) \
1072
+ (ASN1_pack_string(CHECKED_PTR_OF(type, obj), \
1073
+ CHECKED_I2D_OF(type, i2d), \
1074
+ oct))
1075
+
1076
+ ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it,
1077
+ ASN1_OCTET_STRING **oct);
1078
+
1079
+ void ASN1_STRING_set_default_mask(unsigned long mask);
1080
+ int ASN1_STRING_set_default_mask_asc(const char *p);
1081
+ unsigned long ASN1_STRING_get_default_mask(void);
1082
+ int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len,
1083
+ int inform, unsigned long mask);
1084
+ int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
1085
+ int inform, unsigned long mask,
1086
+ long minsize, long maxsize);
1087
+
1088
+ ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out,
1089
+ const unsigned char *in, int inlen,
1090
+ int inform, int nid);
1091
+ ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid);
1092
+ int ASN1_STRING_TABLE_add(int, long, long, unsigned long, unsigned long);
1093
+ void ASN1_STRING_TABLE_cleanup(void);
1094
+
1095
+ /* ASN1 template functions */
1096
+
1097
+ /* Old API compatible functions */
1098
+ ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it);
1099
+ void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it);
1100
+ ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in,
1101
+ long len, const ASN1_ITEM *it);
1102
+ int ASN1_item_i2d(ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it);
1103
+ int ASN1_item_ndef_i2d(ASN1_VALUE *val, unsigned char **out,
1104
+ const ASN1_ITEM *it);
1105
+
1106
+ void ASN1_add_oid_module(void);
1107
+
1108
+ ASN1_TYPE *ASN1_generate_nconf(char *str, CONF *nconf);
1109
+ ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf);
1110
+
1111
+ /* ASN1 Print flags */
1112
+
1113
+ /* Indicate missing OPTIONAL fields */
1114
+ # define ASN1_PCTX_FLAGS_SHOW_ABSENT 0x001
1115
+ /* Mark start and end of SEQUENCE */
1116
+ # define ASN1_PCTX_FLAGS_SHOW_SEQUENCE 0x002
1117
+ /* Mark start and end of SEQUENCE/SET OF */
1118
+ # define ASN1_PCTX_FLAGS_SHOW_SSOF 0x004
1119
+ /* Show the ASN1 type of primitives */
1120
+ # define ASN1_PCTX_FLAGS_SHOW_TYPE 0x008
1121
+ /* Don't show ASN1 type of ANY */
1122
+ # define ASN1_PCTX_FLAGS_NO_ANY_TYPE 0x010
1123
+ /* Don't show ASN1 type of MSTRINGs */
1124
+ # define ASN1_PCTX_FLAGS_NO_MSTRING_TYPE 0x020
1125
+ /* Don't show field names in SEQUENCE */
1126
+ # define ASN1_PCTX_FLAGS_NO_FIELD_NAME 0x040
1127
+ /* Show structure names of each SEQUENCE field */
1128
+ # define ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME 0x080
1129
+ /* Don't show structure name even at top level */
1130
+ # define ASN1_PCTX_FLAGS_NO_STRUCT_NAME 0x100
1131
+
1132
+ int ASN1_item_print(BIO *out, ASN1_VALUE *ifld, int indent,
1133
+ const ASN1_ITEM *it, const ASN1_PCTX *pctx);
1134
+ ASN1_PCTX *ASN1_PCTX_new(void);
1135
+ void ASN1_PCTX_free(ASN1_PCTX *p);
1136
+ unsigned long ASN1_PCTX_get_flags(ASN1_PCTX *p);
1137
+ void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags);
1138
+ unsigned long ASN1_PCTX_get_nm_flags(ASN1_PCTX *p);
1139
+ void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags);
1140
+ unsigned long ASN1_PCTX_get_cert_flags(ASN1_PCTX *p);
1141
+ void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags);
1142
+ unsigned long ASN1_PCTX_get_oid_flags(ASN1_PCTX *p);
1143
+ void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags);
1144
+ unsigned long ASN1_PCTX_get_str_flags(ASN1_PCTX *p);
1145
+ void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags);
1146
+
1147
+ BIO_METHOD *BIO_f_asn1(void);
1148
+
1149
+ BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it);
1150
+
1151
+ int i2d_ASN1_bio_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags,
1152
+ const ASN1_ITEM *it);
1153
+ int PEM_write_bio_ASN1_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags,
1154
+ const char *hdr, const ASN1_ITEM *it);
1155
+ int SMIME_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags,
1156
+ int ctype_nid, int econt_nid,
1157
+ STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it);
1158
+ ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it);
1159
+ int SMIME_crlf_copy(BIO *in, BIO *out, int flags);
1160
+ int SMIME_text(BIO *in, BIO *out);
1161
+
1162
+ /* BEGIN ERROR CODES */
1163
+ /*
1164
+ * The following lines are auto generated by the script mkerr.pl. Any changes
1165
+ * made after this point may be overwritten when the script is next run.
1166
+ */
1167
+ void ERR_load_ASN1_strings(void);
1168
+
1169
+ /* Error codes for the ASN1 functions. */
1170
+
1171
+ /* Function codes. */
1172
+ # define ASN1_F_A2D_ASN1_OBJECT 100
1173
+ # define ASN1_F_A2I_ASN1_ENUMERATED 101
1174
+ # define ASN1_F_A2I_ASN1_INTEGER 102
1175
+ # define ASN1_F_A2I_ASN1_STRING 103
1176
+ # define ASN1_F_APPEND_EXP 176
1177
+ # define ASN1_F_ASN1_BIT_STRING_SET_BIT 183
1178
+ # define ASN1_F_ASN1_CB 177
1179
+ # define ASN1_F_ASN1_CHECK_TLEN 104
1180
+ # define ASN1_F_ASN1_COLLATE_PRIMITIVE 105
1181
+ # define ASN1_F_ASN1_COLLECT 106
1182
+ # define ASN1_F_ASN1_D2I_EX_PRIMITIVE 108
1183
+ # define ASN1_F_ASN1_D2I_FP 109
1184
+ # define ASN1_F_ASN1_D2I_READ_BIO 107
1185
+ # define ASN1_F_ASN1_DIGEST 184
1186
+ # define ASN1_F_ASN1_DO_ADB 110
1187
+ # define ASN1_F_ASN1_DUP 111
1188
+ # define ASN1_F_ASN1_ENUMERATED_SET 112
1189
+ # define ASN1_F_ASN1_ENUMERATED_TO_BN 113
1190
+ # define ASN1_F_ASN1_EX_C2I 204
1191
+ # define ASN1_F_ASN1_FIND_END 190
1192
+ # define ASN1_F_ASN1_GENERALIZEDTIME_ADJ 216
1193
+ # define ASN1_F_ASN1_GENERALIZEDTIME_SET 185
1194
+ # define ASN1_F_ASN1_GENERATE_V3 178
1195
+ # define ASN1_F_ASN1_GET_OBJECT 114
1196
+ # define ASN1_F_ASN1_HEADER_NEW 115
1197
+ # define ASN1_F_ASN1_I2D_BIO 116
1198
+ # define ASN1_F_ASN1_I2D_FP 117
1199
+ # define ASN1_F_ASN1_INTEGER_SET 118
1200
+ # define ASN1_F_ASN1_INTEGER_TO_BN 119
1201
+ # define ASN1_F_ASN1_ITEM_D2I_FP 206
1202
+ # define ASN1_F_ASN1_ITEM_DUP 191
1203
+ # define ASN1_F_ASN1_ITEM_EX_COMBINE_NEW 121
1204
+ # define ASN1_F_ASN1_ITEM_EX_D2I 120
1205
+ # define ASN1_F_ASN1_ITEM_I2D_BIO 192
1206
+ # define ASN1_F_ASN1_ITEM_I2D_FP 193
1207
+ # define ASN1_F_ASN1_ITEM_PACK 198
1208
+ # define ASN1_F_ASN1_ITEM_SIGN 195
1209
+ # define ASN1_F_ASN1_ITEM_SIGN_CTX 220
1210
+ # define ASN1_F_ASN1_ITEM_UNPACK 199
1211
+ # define ASN1_F_ASN1_ITEM_VERIFY 197
1212
+ # define ASN1_F_ASN1_MBSTRING_NCOPY 122
1213
+ # define ASN1_F_ASN1_OBJECT_NEW 123
1214
+ # define ASN1_F_ASN1_OUTPUT_DATA 214
1215
+ # define ASN1_F_ASN1_PACK_STRING 124
1216
+ # define ASN1_F_ASN1_PCTX_NEW 205
1217
+ # define ASN1_F_ASN1_PKCS5_PBE_SET 125
1218
+ # define ASN1_F_ASN1_SEQ_PACK 126
1219
+ # define ASN1_F_ASN1_SEQ_UNPACK 127
1220
+ # define ASN1_F_ASN1_SIGN 128
1221
+ # define ASN1_F_ASN1_STR2TYPE 179
1222
+ # define ASN1_F_ASN1_STRING_SET 186
1223
+ # define ASN1_F_ASN1_STRING_TABLE_ADD 129
1224
+ # define ASN1_F_ASN1_STRING_TYPE_NEW 130
1225
+ # define ASN1_F_ASN1_TEMPLATE_EX_D2I 132
1226
+ # define ASN1_F_ASN1_TEMPLATE_NEW 133
1227
+ # define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I 131
1228
+ # define ASN1_F_ASN1_TIME_ADJ 217
1229
+ # define ASN1_F_ASN1_TIME_SET 175
1230
+ # define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING 134
1231
+ # define ASN1_F_ASN1_TYPE_GET_OCTETSTRING 135
1232
+ # define ASN1_F_ASN1_UNPACK_STRING 136
1233
+ # define ASN1_F_ASN1_UTCTIME_ADJ 218
1234
+ # define ASN1_F_ASN1_UTCTIME_SET 187
1235
+ # define ASN1_F_ASN1_VERIFY 137
1236
+ # define ASN1_F_B64_READ_ASN1 209
1237
+ # define ASN1_F_B64_WRITE_ASN1 210
1238
+ # define ASN1_F_BIO_NEW_NDEF 208
1239
+ # define ASN1_F_BITSTR_CB 180
1240
+ # define ASN1_F_BN_TO_ASN1_ENUMERATED 138
1241
+ # define ASN1_F_BN_TO_ASN1_INTEGER 139
1242
+ # define ASN1_F_C2I_ASN1_BIT_STRING 189
1243
+ # define ASN1_F_C2I_ASN1_INTEGER 194
1244
+ # define ASN1_F_C2I_ASN1_OBJECT 196
1245
+ # define ASN1_F_COLLECT_DATA 140
1246
+ # define ASN1_F_D2I_ASN1_BIT_STRING 141
1247
+ # define ASN1_F_D2I_ASN1_BOOLEAN 142
1248
+ # define ASN1_F_D2I_ASN1_BYTES 143
1249
+ # define ASN1_F_D2I_ASN1_GENERALIZEDTIME 144
1250
+ # define ASN1_F_D2I_ASN1_HEADER 145
1251
+ # define ASN1_F_D2I_ASN1_INTEGER 146
1252
+ # define ASN1_F_D2I_ASN1_OBJECT 147
1253
+ # define ASN1_F_D2I_ASN1_SET 148
1254
+ # define ASN1_F_D2I_ASN1_TYPE_BYTES 149
1255
+ # define ASN1_F_D2I_ASN1_UINTEGER 150
1256
+ # define ASN1_F_D2I_ASN1_UTCTIME 151
1257
+ # define ASN1_F_D2I_AUTOPRIVATEKEY 207
1258
+ # define ASN1_F_D2I_NETSCAPE_RSA 152
1259
+ # define ASN1_F_D2I_NETSCAPE_RSA_2 153
1260
+ # define ASN1_F_D2I_PRIVATEKEY 154
1261
+ # define ASN1_F_D2I_PUBLICKEY 155
1262
+ # define ASN1_F_D2I_RSA_NET 200
1263
+ # define ASN1_F_D2I_RSA_NET_2 201
1264
+ # define ASN1_F_D2I_X509 156
1265
+ # define ASN1_F_D2I_X509_CINF 157
1266
+ # define ASN1_F_D2I_X509_PKEY 159
1267
+ # define ASN1_F_I2D_ASN1_BIO_STREAM 211
1268
+ # define ASN1_F_I2D_ASN1_SET 188
1269
+ # define ASN1_F_I2D_ASN1_TIME 160
1270
+ # define ASN1_F_I2D_DSA_PUBKEY 161
1271
+ # define ASN1_F_I2D_EC_PUBKEY 181
1272
+ # define ASN1_F_I2D_PRIVATEKEY 163
1273
+ # define ASN1_F_I2D_PUBLICKEY 164
1274
+ # define ASN1_F_I2D_RSA_NET 162
1275
+ # define ASN1_F_I2D_RSA_PUBKEY 165
1276
+ # define ASN1_F_LONG_C2I 166
1277
+ # define ASN1_F_OID_MODULE_INIT 174
1278
+ # define ASN1_F_PARSE_TAGGING 182
1279
+ # define ASN1_F_PKCS5_PBE2_SET_IV 167
1280
+ # define ASN1_F_PKCS5_PBE_SET 202
1281
+ # define ASN1_F_PKCS5_PBE_SET0_ALGOR 215
1282
+ # define ASN1_F_PKCS5_PBKDF2_SET 219
1283
+ # define ASN1_F_SMIME_READ_ASN1 212
1284
+ # define ASN1_F_SMIME_TEXT 213
1285
+ # define ASN1_F_X509_CINF_NEW 168
1286
+ # define ASN1_F_X509_CRL_ADD0_REVOKED 169
1287
+ # define ASN1_F_X509_INFO_NEW 170
1288
+ # define ASN1_F_X509_NAME_ENCODE 203
1289
+ # define ASN1_F_X509_NAME_EX_D2I 158
1290
+ # define ASN1_F_X509_NAME_EX_NEW 171
1291
+ # define ASN1_F_X509_NEW 172
1292
+ # define ASN1_F_X509_PKEY_NEW 173
1293
+
1294
+ /* Reason codes. */
1295
+ # define ASN1_R_ADDING_OBJECT 171
1296
+ # define ASN1_R_ASN1_PARSE_ERROR 203
1297
+ # define ASN1_R_ASN1_SIG_PARSE_ERROR 204
1298
+ # define ASN1_R_AUX_ERROR 100
1299
+ # define ASN1_R_BAD_CLASS 101
1300
+ # define ASN1_R_BAD_OBJECT_HEADER 102
1301
+ # define ASN1_R_BAD_PASSWORD_READ 103
1302
+ # define ASN1_R_BAD_TAG 104
1303
+ # define ASN1_R_BMPSTRING_IS_WRONG_LENGTH 214
1304
+ # define ASN1_R_BN_LIB 105
1305
+ # define ASN1_R_BOOLEAN_IS_WRONG_LENGTH 106
1306
+ # define ASN1_R_BUFFER_TOO_SMALL 107
1307
+ # define ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 108
1308
+ # define ASN1_R_CONTEXT_NOT_INITIALISED 217
1309
+ # define ASN1_R_DATA_IS_WRONG 109
1310
+ # define ASN1_R_DECODE_ERROR 110
1311
+ # define ASN1_R_DECODING_ERROR 111
1312
+ # define ASN1_R_DEPTH_EXCEEDED 174
1313
+ # define ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED 198
1314
+ # define ASN1_R_ENCODE_ERROR 112
1315
+ # define ASN1_R_ERROR_GETTING_TIME 173
1316
+ # define ASN1_R_ERROR_LOADING_SECTION 172
1317
+ # define ASN1_R_ERROR_PARSING_SET_ELEMENT 113
1318
+ # define ASN1_R_ERROR_SETTING_CIPHER_PARAMS 114
1319
+ # define ASN1_R_EXPECTING_AN_INTEGER 115
1320
+ # define ASN1_R_EXPECTING_AN_OBJECT 116
1321
+ # define ASN1_R_EXPECTING_A_BOOLEAN 117
1322
+ # define ASN1_R_EXPECTING_A_TIME 118
1323
+ # define ASN1_R_EXPLICIT_LENGTH_MISMATCH 119
1324
+ # define ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED 120
1325
+ # define ASN1_R_FIELD_MISSING 121
1326
+ # define ASN1_R_FIRST_NUM_TOO_LARGE 122
1327
+ # define ASN1_R_HEADER_TOO_LONG 123
1328
+ # define ASN1_R_ILLEGAL_BITSTRING_FORMAT 175
1329
+ # define ASN1_R_ILLEGAL_BOOLEAN 176
1330
+ # define ASN1_R_ILLEGAL_CHARACTERS 124
1331
+ # define ASN1_R_ILLEGAL_FORMAT 177
1332
+ # define ASN1_R_ILLEGAL_HEX 178
1333
+ # define ASN1_R_ILLEGAL_IMPLICIT_TAG 179
1334
+ # define ASN1_R_ILLEGAL_INTEGER 180
1335
+ # define ASN1_R_ILLEGAL_NESTED_TAGGING 181
1336
+ # define ASN1_R_ILLEGAL_NULL 125
1337
+ # define ASN1_R_ILLEGAL_NULL_VALUE 182
1338
+ # define ASN1_R_ILLEGAL_OBJECT 183
1339
+ # define ASN1_R_ILLEGAL_OPTIONAL_ANY 126
1340
+ # define ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE 170
1341
+ # define ASN1_R_ILLEGAL_TAGGED_ANY 127
1342
+ # define ASN1_R_ILLEGAL_TIME_VALUE 184
1343
+ # define ASN1_R_INTEGER_NOT_ASCII_FORMAT 185
1344
+ # define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG 128
1345
+ # define ASN1_R_INVALID_BIT_STRING_BITS_LEFT 220
1346
+ # define ASN1_R_INVALID_BMPSTRING_LENGTH 129
1347
+ # define ASN1_R_INVALID_DIGIT 130
1348
+ # define ASN1_R_INVALID_MIME_TYPE 205
1349
+ # define ASN1_R_INVALID_MODIFIER 186
1350
+ # define ASN1_R_INVALID_NUMBER 187
1351
+ # define ASN1_R_INVALID_OBJECT_ENCODING 216
1352
+ # define ASN1_R_INVALID_SEPARATOR 131
1353
+ # define ASN1_R_INVALID_TIME_FORMAT 132
1354
+ # define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH 133
1355
+ # define ASN1_R_INVALID_UTF8STRING 134
1356
+ # define ASN1_R_IV_TOO_LARGE 135
1357
+ # define ASN1_R_LENGTH_ERROR 136
1358
+ # define ASN1_R_LIST_ERROR 188
1359
+ # define ASN1_R_MIME_NO_CONTENT_TYPE 206
1360
+ # define ASN1_R_MIME_PARSE_ERROR 207
1361
+ # define ASN1_R_MIME_SIG_PARSE_ERROR 208
1362
+ # define ASN1_R_MISSING_EOC 137
1363
+ # define ASN1_R_MISSING_SECOND_NUMBER 138
1364
+ # define ASN1_R_MISSING_VALUE 189
1365
+ # define ASN1_R_MSTRING_NOT_UNIVERSAL 139
1366
+ # define ASN1_R_MSTRING_WRONG_TAG 140
1367
+ # define ASN1_R_NESTED_ASN1_STRING 197
1368
+ # define ASN1_R_NON_HEX_CHARACTERS 141
1369
+ # define ASN1_R_NOT_ASCII_FORMAT 190
1370
+ # define ASN1_R_NOT_ENOUGH_DATA 142
1371
+ # define ASN1_R_NO_CONTENT_TYPE 209
1372
+ # define ASN1_R_NO_DEFAULT_DIGEST 201
1373
+ # define ASN1_R_NO_MATCHING_CHOICE_TYPE 143
1374
+ # define ASN1_R_NO_MULTIPART_BODY_FAILURE 210
1375
+ # define ASN1_R_NO_MULTIPART_BOUNDARY 211
1376
+ # define ASN1_R_NO_SIG_CONTENT_TYPE 212
1377
+ # define ASN1_R_NULL_IS_WRONG_LENGTH 144
1378
+ # define ASN1_R_OBJECT_NOT_ASCII_FORMAT 191
1379
+ # define ASN1_R_ODD_NUMBER_OF_CHARS 145
1380
+ # define ASN1_R_PRIVATE_KEY_HEADER_MISSING 146
1381
+ # define ASN1_R_SECOND_NUMBER_TOO_LARGE 147
1382
+ # define ASN1_R_SEQUENCE_LENGTH_MISMATCH 148
1383
+ # define ASN1_R_SEQUENCE_NOT_CONSTRUCTED 149
1384
+ # define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG 192
1385
+ # define ASN1_R_SHORT_LINE 150
1386
+ # define ASN1_R_SIG_INVALID_MIME_TYPE 213
1387
+ # define ASN1_R_STREAMING_NOT_SUPPORTED 202
1388
+ # define ASN1_R_STRING_TOO_LONG 151
1389
+ # define ASN1_R_STRING_TOO_SHORT 152
1390
+ # define ASN1_R_TAG_VALUE_TOO_HIGH 153
1391
+ # define ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 154
1392
+ # define ASN1_R_TIME_NOT_ASCII_FORMAT 193
1393
+ # define ASN1_R_TOO_LONG 155
1394
+ # define ASN1_R_TYPE_NOT_CONSTRUCTED 156
1395
+ # define ASN1_R_TYPE_NOT_PRIMITIVE 218
1396
+ # define ASN1_R_UNABLE_TO_DECODE_RSA_KEY 157
1397
+ # define ASN1_R_UNABLE_TO_DECODE_RSA_PRIVATE_KEY 158
1398
+ # define ASN1_R_UNEXPECTED_EOC 159
1399
+ # define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH 215
1400
+ # define ASN1_R_UNKNOWN_FORMAT 160
1401
+ # define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM 161
1402
+ # define ASN1_R_UNKNOWN_OBJECT_TYPE 162
1403
+ # define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE 163
1404
+ # define ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM 199
1405
+ # define ASN1_R_UNKNOWN_TAG 194
1406
+ # define ASN1_R_UNKOWN_FORMAT 195
1407
+ # define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE 164
1408
+ # define ASN1_R_UNSUPPORTED_CIPHER 165
1409
+ # define ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM 166
1410
+ # define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 167
1411
+ # define ASN1_R_UNSUPPORTED_TYPE 196
1412
+ # define ASN1_R_WRONG_PUBLIC_KEY_TYPE 200
1413
+ # define ASN1_R_WRONG_TAG 168
1414
+ # define ASN1_R_WRONG_TYPE 169
1415
+
1416
+ #ifdef __cplusplus
1417
+ }
1418
+ #endif
1419
+ #endif