PR: 1422
[oweals/openssl.git] / crypto / asn1 / asn1.h
index fdcc33a5dd4bcda3f182b5199f96d33022a7f6de..f06d942503ad25a20e055c59d819665ac5ed4a88 100644 (file)
@@ -158,6 +158,10 @@ extern "C" {
 #define MBSTRING_BMP           (MBSTRING_FLAG|2)
 #define MBSTRING_UNIV          (MBSTRING_FLAG|4)
 
+#define SMIME_OLDMIME          0x400
+#define SMIME_CRLFEOL          0x800
+#define SMIME_STREAM           0x1000
+
 struct X509_algor_st;
 DECLARE_STACK_OF(X509_ALGOR)
 
@@ -219,6 +223,13 @@ typedef struct asn1_object_st
  * be inserted in the memory buffer 
  */
 #define ASN1_STRING_FLAG_NDEF 0x010 
+
+/* This flag is used by the CMS code to indicate that a string is not
+ * complete and is a place holder for content when it had all been 
+ * accessed. The flag will be reset when content has been written to it.
+ */
+#define ASN1_STRING_FLAG_CONT 0x020 
+
 /* This is the base type that holds just about everything :-) */
 typedef struct asn1_string_st
        {
@@ -601,6 +612,7 @@ typedef struct BIT_STRING_BITNAME_st {
                        B_ASN1_GENERALIZEDTIME
 
 #define B_ASN1_PRINTABLE \
+                       B_ASN1_NUMERICSTRING| \
                        B_ASN1_PRINTABLESTRING| \
                        B_ASN1_T61STRING| \
                        B_ASN1_IA5STRING| \
@@ -1064,7 +1076,17 @@ void ASN1_add_oid_module(void);
 
 ASN1_TYPE *ASN1_generate_nconf(char *str, CONF *nconf);
 ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf);
-       
+
+typedef int asn1_output_data_fn(BIO *out, BIO *data, ASN1_VALUE *val, int flags,
+                                       const ASN1_ITEM *it);
+
+int int_smime_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags,
+                               int ctype_nid, int econt_nid,
+                               STACK_OF(X509_ALGOR) *mdalgs,
+                               asn1_output_data_fn *data_fn,
+                               const ASN1_ITEM *it);
+ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it);
+
 /* BEGIN ERROR CODES */
 /* The following lines are auto generated by the script mkerr.pl. Any changes
  * made after this point may be overwritten when the script is next run.
@@ -1114,6 +1136,7 @@ void ERR_load_ASN1_strings(void);
 #define ASN1_F_ASN1_ITEM_VERIFY                                 197
 #define ASN1_F_ASN1_MBSTRING_NCOPY                      122
 #define ASN1_F_ASN1_OBJECT_NEW                          123
+#define ASN1_F_ASN1_OUTPUT_DATA                                 207
 #define ASN1_F_ASN1_PACK_STRING                                 124
 #define ASN1_F_ASN1_PCTX_NEW                            205
 #define ASN1_F_ASN1_PKCS5_PBE_SET                       125
@@ -1133,6 +1156,8 @@ void ERR_load_ASN1_strings(void);
 #define ASN1_F_ASN1_UNPACK_STRING                       136
 #define ASN1_F_ASN1_UTCTIME_SET                                 187
 #define ASN1_F_ASN1_VERIFY                              137
+#define ASN1_F_B64_READ_ASN1                            208
+#define ASN1_F_B64_WRITE_ASN1                           209
 #define ASN1_F_BITSTR_CB                                180
 #define ASN1_F_BN_TO_ASN1_ENUMERATED                    138
 #define ASN1_F_BN_TO_ASN1_INTEGER                       139
@@ -1173,6 +1198,8 @@ void ERR_load_ASN1_strings(void);
 #define ASN1_F_PARSE_TAGGING                            182
 #define ASN1_F_PKCS5_PBE2_SET                           167
 #define ASN1_F_PKCS5_PBE_SET                            202
+#define ASN1_F_SMIME_READ_ASN1                          210
+#define ASN1_F_SMIME_TEXT                               211
 #define ASN1_F_X509_CINF_NEW                            168
 #define ASN1_F_X509_CRL_ADD0_REVOKED                    169
 #define ASN1_F_X509_INFO_NEW                            170
@@ -1184,6 +1211,8 @@ void ERR_load_ASN1_strings(void);
 
 /* Reason codes. */
 #define ASN1_R_ADDING_OBJECT                            171
+#define ASN1_R_ASN1_PARSE_ERROR                                 198
+#define ASN1_R_ASN1_SIG_PARSE_ERROR                     199
 #define ASN1_R_AUX_ERROR                                100
 #define ASN1_R_BAD_CLASS                                101
 #define ASN1_R_BAD_OBJECT_HEADER                        102
@@ -1230,6 +1259,7 @@ void ERR_load_ASN1_strings(void);
 #define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG               128
 #define ASN1_R_INVALID_BMPSTRING_LENGTH                         129
 #define ASN1_R_INVALID_DIGIT                            130
+#define ASN1_R_INVALID_MIME_TYPE                        200
 #define ASN1_R_INVALID_MODIFIER                                 186
 #define ASN1_R_INVALID_NUMBER                           187
 #define ASN1_R_INVALID_SEPARATOR                        131
@@ -1239,6 +1269,9 @@ void ERR_load_ASN1_strings(void);
 #define ASN1_R_IV_TOO_LARGE                             135
 #define ASN1_R_LENGTH_ERROR                             136
 #define ASN1_R_LIST_ERROR                               188
+#define ASN1_R_MIME_NO_CONTENT_TYPE                     201
+#define ASN1_R_MIME_PARSE_ERROR                                 202
+#define ASN1_R_MIME_SIG_PARSE_ERROR                     203
 #define ASN1_R_MISSING_EOC                              137
 #define ASN1_R_MISSING_SECOND_NUMBER                    138
 #define ASN1_R_MISSING_VALUE                            189
@@ -1248,7 +1281,11 @@ void ERR_load_ASN1_strings(void);
 #define ASN1_R_NON_HEX_CHARACTERS                       141
 #define ASN1_R_NOT_ASCII_FORMAT                                 190
 #define ASN1_R_NOT_ENOUGH_DATA                          142
+#define ASN1_R_NO_CONTENT_TYPE                          204
 #define ASN1_R_NO_MATCHING_CHOICE_TYPE                  143
+#define ASN1_R_NO_MULTIPART_BODY_FAILURE                205
+#define ASN1_R_NO_MULTIPART_BOUNDARY                    206
+#define ASN1_R_NO_SIG_CONTENT_TYPE                      207
 #define ASN1_R_NULL_IS_WRONG_LENGTH                     144
 #define ASN1_R_OBJECT_NOT_ASCII_FORMAT                  191
 #define ASN1_R_ODD_NUMBER_OF_CHARS                      145
@@ -1258,6 +1295,8 @@ void ERR_load_ASN1_strings(void);
 #define ASN1_R_SEQUENCE_NOT_CONSTRUCTED                         149
 #define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG             192
 #define ASN1_R_SHORT_LINE                               150
+#define ASN1_R_SIG_INVALID_MIME_TYPE                    208
+#define ASN1_R_STREAMING_NOT_SUPPORTED                  209
 #define ASN1_R_STRING_TOO_LONG                          151
 #define ASN1_R_STRING_TOO_SHORT                                 152
 #define ASN1_R_TAG_VALUE_TOO_HIGH                       153