summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/asn1/asn1_mac.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/asn1/asn1_mac.h')
-rw-r--r--src/lib/libcrypto/asn1/asn1_mac.h39
1 files changed, 14 insertions, 25 deletions
diff --git a/src/lib/libcrypto/asn1/asn1_mac.h b/src/lib/libcrypto/asn1/asn1_mac.h
index d958ca60d9..a48649ceeb 100644
--- a/src/lib/libcrypto/asn1/asn1_mac.h
+++ b/src/lib/libcrypto/asn1/asn1_mac.h
@@ -73,11 +73,11 @@ extern "C" {
73 ERR_PUT_error(ASN1_MAC_ERR_LIB,(f),(r),__FILE__,(line)) 73 ERR_PUT_error(ASN1_MAC_ERR_LIB,(f),(r),__FILE__,(line))
74 74
75#define M_ASN1_D2I_vars(a,type,func) \ 75#define M_ASN1_D2I_vars(a,type,func) \
76 ASN1_const_CTX c; \ 76 ASN1_CTX c; \
77 type ret=NULL; \ 77 type ret=NULL; \
78 \ 78 \
79 c.pp=(const unsigned char **)pp; \ 79 c.pp=(unsigned char **)pp; \
80 c.q= *(const unsigned char **)pp; \ 80 c.q= *(unsigned char **)pp; \
81 c.error=ERR_R_NESTED_ASN1_ERROR; \ 81 c.error=ERR_R_NESTED_ASN1_ERROR; \
82 if ((a == NULL) || ((*a) == NULL)) \ 82 if ((a == NULL) || ((*a) == NULL)) \
83 { if ((ret=(type)func()) == NULL) \ 83 { if ((ret=(type)func()) == NULL) \
@@ -85,13 +85,13 @@ extern "C" {
85 else ret=(*a); 85 else ret=(*a);
86 86
87#define M_ASN1_D2I_Init() \ 87#define M_ASN1_D2I_Init() \
88 c.p= *(const unsigned char **)pp; \ 88 c.p= *(unsigned char **)pp; \
89 c.max=(length == 0)?0:(c.p+length); 89 c.max=(length == 0)?0:(c.p+length);
90 90
91#define M_ASN1_D2I_Finish_2(a) \ 91#define M_ASN1_D2I_Finish_2(a) \
92 if (!asn1_const_Finish(&c)) \ 92 if (!asn1_Finish(&c)) \
93 { c.line=__LINE__; goto err; } \ 93 { c.line=__LINE__; goto err; } \
94 *(const unsigned char **)pp=c.p; \ 94 *(unsigned char **)pp=c.p; \
95 if (a != NULL) (*a)=ret; \ 95 if (a != NULL) (*a)=ret; \
96 return(ret); 96 return(ret);
97 97
@@ -99,7 +99,7 @@ extern "C" {
99 M_ASN1_D2I_Finish_2(a); \ 99 M_ASN1_D2I_Finish_2(a); \
100err:\ 100err:\
101 ASN1_MAC_H_err((e),c.error,c.line); \ 101 ASN1_MAC_H_err((e),c.error,c.line); \
102 asn1_add_error(*(const unsigned char **)pp,(int)(c.q- *pp)); \ 102 asn1_add_error(*(unsigned char **)pp,(int)(c.q- *pp)); \
103 if ((ret != NULL) && ((a == NULL) || (*a != ret))) func(ret); \ 103 if ((ret != NULL) && ((a == NULL) || (*a != ret))) func(ret); \
104 return(NULL) 104 return(NULL)
105 105
@@ -123,22 +123,15 @@ err:\
123 123
124#define M_ASN1_D2I_end_sequence() \ 124#define M_ASN1_D2I_end_sequence() \
125 (((c.inf&1) == 0)?(c.slen <= 0): \ 125 (((c.inf&1) == 0)?(c.slen <= 0): \
126 (c.eos=ASN1_const_check_infinite_end(&c.p,c.slen))) 126 (c.eos=ASN1_check_infinite_end(&c.p,c.slen)))
127 127
128/* Don't use this with d2i_ASN1_BOOLEAN() */ 128/* Don't use this with d2i_ASN1_BOOLEAN() */
129#define M_ASN1_D2I_get(b, func) \ 129#define M_ASN1_D2I_get(b,func) \
130 c.q=c.p; \ 130 c.q=c.p; \
131 if (func(&(b),&c.p,c.slen) == NULL) \ 131 if (func(&(b),&c.p,c.slen) == NULL) \
132 {c.line=__LINE__; goto err; } \ 132 {c.line=__LINE__; goto err; } \
133 c.slen-=(c.p-c.q); 133 c.slen-=(c.p-c.q);
134 134
135/* Don't use this with d2i_ASN1_BOOLEAN() */
136#define M_ASN1_D2I_get_x(type,b,func) \
137 c.q=c.p; \
138 if (((D2I_OF(type))func)(&(b),&c.p,c.slen) == NULL) \
139 {c.line=__LINE__; goto err; } \
140 c.slen-=(c.p-c.q);
141
142/* use this instead () */ 135/* use this instead () */
143#define M_ASN1_D2I_get_int(b,func) \ 136#define M_ASN1_D2I_get_int(b,func) \
144 c.q=c.p; \ 137 c.q=c.p; \
@@ -285,7 +278,7 @@ err:\
285 { c.line=__LINE__; goto err; } \ 278 { c.line=__LINE__; goto err; } \
286 if (Tinf == (V_ASN1_CONSTRUCTED+1)) { \ 279 if (Tinf == (V_ASN1_CONSTRUCTED+1)) { \
287 Tlen = c.slen - (c.p - c.q); \ 280 Tlen = c.slen - (c.p - c.q); \
288 if(!ASN1_const_check_infinite_end(&c.p, Tlen)) \ 281 if(!ASN1_check_infinite_end(&c.p, Tlen)) \
289 { c.error=ERR_R_MISSING_ASN1_EOS; \ 282 { c.error=ERR_R_MISSING_ASN1_EOS; \
290 c.line=__LINE__; goto err; } \ 283 c.line=__LINE__; goto err; } \
291 }\ 284 }\
@@ -360,12 +353,8 @@ err:\
360 return(NULL) 353 return(NULL)
361 354
362 355
363/* BIG UGLY WARNING! This is so damn ugly I wanna puke. Unfortunately, 356#define M_ASN1_next (*c.p)
364 some macros that use ASN1_const_CTX still insist on writing in the input 357#define M_ASN1_next_prev (*c.q)
365 stream. ARGH! ARGH! ARGH! Let's get rid of this macro package.
366 Please? -- Richard Levitte */
367#define M_ASN1_next (*((unsigned char *)(c.p)))
368#define M_ASN1_next_prev (*((unsigned char *)(c.q)))
369 358
370/*************************************************/ 359/*************************************************/
371 360
@@ -562,8 +551,8 @@ err:\
562#define M_ASN1_I2D_finish() *pp=p; \ 551#define M_ASN1_I2D_finish() *pp=p; \
563 return(r); 552 return(r);
564 553
565int asn1_GetSequence(ASN1_const_CTX *c, long *length); 554int asn1_GetSequence(ASN1_CTX *c, long *length);
566void asn1_add_error(const unsigned char *address,int offset); 555void asn1_add_error(unsigned char *address,int offset);
567#ifdef __cplusplus 556#ifdef __cplusplus
568} 557}
569#endif 558#endif