diff options
Diffstat (limited to 'src/lib/libcrypto/asn1/tasn_prn.c')
| -rw-r--r-- | src/lib/libcrypto/asn1/tasn_prn.c | 216 |
1 files changed, 108 insertions, 108 deletions
diff --git a/src/lib/libcrypto/asn1/tasn_prn.c b/src/lib/libcrypto/asn1/tasn_prn.c index ec524edac8..f62c085f3b 100644 --- a/src/lib/libcrypto/asn1/tasn_prn.c +++ b/src/lib/libcrypto/asn1/tasn_prn.c | |||
| @@ -73,86 +73,86 @@ | |||
| 73 | /* ASN1_PCTX routines */ | 73 | /* ASN1_PCTX routines */ |
| 74 | 74 | ||
| 75 | ASN1_PCTX default_pctx = | 75 | ASN1_PCTX default_pctx = |
| 76 | { | 76 | { |
| 77 | ASN1_PCTX_FLAGS_SHOW_ABSENT, /* flags */ | 77 | ASN1_PCTX_FLAGS_SHOW_ABSENT, /* flags */ |
| 78 | 0, /* nm_flags */ | 78 | 0, /* nm_flags */ |
| 79 | 0, /* cert_flags */ | 79 | 0, /* cert_flags */ |
| 80 | 0, /* oid_flags */ | 80 | 0, /* oid_flags */ |
| 81 | 0 /* str_flags */ | 81 | 0 /* str_flags */ |
| 82 | }; | 82 | }; |
| 83 | 83 | ||
| 84 | 84 | ||
| 85 | ASN1_PCTX *ASN1_PCTX_new(void) | 85 | ASN1_PCTX *ASN1_PCTX_new(void) |
| 86 | { | 86 | { |
| 87 | ASN1_PCTX *ret; | 87 | ASN1_PCTX *ret; |
| 88 | ret = malloc(sizeof(ASN1_PCTX)); | 88 | ret = malloc(sizeof(ASN1_PCTX)); |
| 89 | if (ret == NULL) | 89 | if (ret == NULL) |
| 90 | { | 90 | { |
| 91 | ASN1err(ASN1_F_ASN1_PCTX_NEW, ERR_R_MALLOC_FAILURE); | 91 | ASN1err(ASN1_F_ASN1_PCTX_NEW, ERR_R_MALLOC_FAILURE); |
| 92 | return NULL; | 92 | return NULL; |
| 93 | } | 93 | } |
| 94 | ret->flags = 0; | 94 | ret->flags = 0; |
| 95 | ret->nm_flags = 0; | 95 | ret->nm_flags = 0; |
| 96 | ret->cert_flags = 0; | 96 | ret->cert_flags = 0; |
| 97 | ret->oid_flags = 0; | 97 | ret->oid_flags = 0; |
| 98 | ret->str_flags = 0; | 98 | ret->str_flags = 0; |
| 99 | return ret; | 99 | return ret; |
| 100 | } | 100 | } |
| 101 | 101 | ||
| 102 | void ASN1_PCTX_free(ASN1_PCTX *p) | 102 | void ASN1_PCTX_free(ASN1_PCTX *p) |
| 103 | { | 103 | { |
| 104 | free(p); | 104 | free(p); |
| 105 | } | 105 | } |
| 106 | 106 | ||
| 107 | unsigned long ASN1_PCTX_get_flags(ASN1_PCTX *p) | 107 | unsigned long ASN1_PCTX_get_flags(ASN1_PCTX *p) |
| 108 | { | 108 | { |
| 109 | return p->flags; | 109 | return p->flags; |
| 110 | } | 110 | } |
| 111 | 111 | ||
| 112 | void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags) | 112 | void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags) |
| 113 | { | 113 | { |
| 114 | p->flags = flags; | 114 | p->flags = flags; |
| 115 | } | 115 | } |
| 116 | 116 | ||
| 117 | unsigned long ASN1_PCTX_get_nm_flags(ASN1_PCTX *p) | 117 | unsigned long ASN1_PCTX_get_nm_flags(ASN1_PCTX *p) |
| 118 | { | 118 | { |
| 119 | return p->nm_flags; | 119 | return p->nm_flags; |
| 120 | } | 120 | } |
| 121 | 121 | ||
| 122 | void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags) | 122 | void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags) |
| 123 | { | 123 | { |
| 124 | p->nm_flags = flags; | 124 | p->nm_flags = flags; |
| 125 | } | 125 | } |
| 126 | 126 | ||
| 127 | unsigned long ASN1_PCTX_get_cert_flags(ASN1_PCTX *p) | 127 | unsigned long ASN1_PCTX_get_cert_flags(ASN1_PCTX *p) |
| 128 | { | 128 | { |
| 129 | return p->cert_flags; | 129 | return p->cert_flags; |
| 130 | } | 130 | } |
| 131 | 131 | ||
| 132 | void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags) | 132 | void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags) |
| 133 | { | 133 | { |
| 134 | p->cert_flags = flags; | 134 | p->cert_flags = flags; |
| 135 | } | 135 | } |
| 136 | 136 | ||
| 137 | unsigned long ASN1_PCTX_get_oid_flags(ASN1_PCTX *p) | 137 | unsigned long ASN1_PCTX_get_oid_flags(ASN1_PCTX *p) |
| 138 | { | 138 | { |
| 139 | return p->oid_flags; | 139 | return p->oid_flags; |
| 140 | } | 140 | } |
| 141 | 141 | ||
| 142 | void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags) | 142 | void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags) |
| 143 | { | 143 | { |
| 144 | p->oid_flags = flags; | 144 | p->oid_flags = flags; |
| 145 | } | 145 | } |
| 146 | 146 | ||
| 147 | unsigned long ASN1_PCTX_get_str_flags(ASN1_PCTX *p) | 147 | unsigned long ASN1_PCTX_get_str_flags(ASN1_PCTX *p) |
| 148 | { | 148 | { |
| 149 | return p->str_flags; | 149 | return p->str_flags; |
| 150 | } | 150 | } |
| 151 | 151 | ||
| 152 | void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags) | 152 | void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags) |
| 153 | { | 153 | { |
| 154 | p->str_flags = flags; | 154 | p->str_flags = flags; |
| 155 | } | 155 | } |
| 156 | 156 | ||
| 157 | /* Main print routines */ | 157 | /* Main print routines */ |
| 158 | 158 | ||
| @@ -175,7 +175,7 @@ static int asn1_print_fsname(BIO *out, int indent, | |||
| 175 | 175 | ||
| 176 | int ASN1_item_print(BIO *out, ASN1_VALUE *ifld, int indent, | 176 | int ASN1_item_print(BIO *out, ASN1_VALUE *ifld, int indent, |
| 177 | const ASN1_ITEM *it, const ASN1_PCTX *pctx) | 177 | const ASN1_ITEM *it, const ASN1_PCTX *pctx) |
| 178 | { | 178 | { |
| 179 | const char *sname; | 179 | const char *sname; |
| 180 | if (pctx == NULL) | 180 | if (pctx == NULL) |
| 181 | pctx = &default_pctx; | 181 | pctx = &default_pctx; |
| @@ -185,13 +185,13 @@ int ASN1_item_print(BIO *out, ASN1_VALUE *ifld, int indent, | |||
| 185 | sname = it->sname; | 185 | sname = it->sname; |
| 186 | return asn1_item_print_ctx(out, &ifld, indent, it, | 186 | return asn1_item_print_ctx(out, &ifld, indent, it, |
| 187 | NULL, sname, 0, pctx); | 187 | NULL, sname, 0, pctx); |
| 188 | } | 188 | } |
| 189 | 189 | ||
| 190 | static int asn1_item_print_ctx(BIO *out, ASN1_VALUE **fld, int indent, | 190 | static int asn1_item_print_ctx(BIO *out, ASN1_VALUE **fld, int indent, |
| 191 | const ASN1_ITEM *it, | 191 | const ASN1_ITEM *it, |
| 192 | const char *fname, const char *sname, | 192 | const char *fname, const char *sname, |
| 193 | int nohdr, const ASN1_PCTX *pctx) | 193 | int nohdr, const ASN1_PCTX *pctx) |
| 194 | { | 194 | { |
| 195 | const ASN1_TEMPLATE *tt; | 195 | const ASN1_TEMPLATE *tt; |
| 196 | const ASN1_EXTERN_FUNCS *ef; | 196 | const ASN1_EXTERN_FUNCS *ef; |
| 197 | ASN1_VALUE **tmpfld; | 197 | ASN1_VALUE **tmpfld; |
| @@ -200,36 +200,36 @@ static int asn1_item_print_ctx(BIO *out, ASN1_VALUE **fld, int indent, | |||
| 200 | ASN1_PRINT_ARG parg; | 200 | ASN1_PRINT_ARG parg; |
| 201 | int i; | 201 | int i; |
| 202 | if (aux && aux->asn1_cb) | 202 | if (aux && aux->asn1_cb) |
| 203 | { | 203 | { |
| 204 | parg.out = out; | 204 | parg.out = out; |
| 205 | parg.indent = indent; | 205 | parg.indent = indent; |
| 206 | parg.pctx = pctx; | 206 | parg.pctx = pctx; |
| 207 | asn1_cb = aux->asn1_cb; | 207 | asn1_cb = aux->asn1_cb; |
| 208 | } | 208 | } |
| 209 | else asn1_cb = 0; | 209 | else asn1_cb = 0; |
| 210 | 210 | ||
| 211 | if(*fld == NULL) | 211 | if(*fld == NULL) |
| 212 | { | 212 | { |
| 213 | if (pctx->flags & ASN1_PCTX_FLAGS_SHOW_ABSENT) | 213 | if (pctx->flags & ASN1_PCTX_FLAGS_SHOW_ABSENT) |
| 214 | { | 214 | { |
| 215 | if (!nohdr && !asn1_print_fsname(out, indent, | 215 | if (!nohdr && !asn1_print_fsname(out, indent, |
| 216 | fname, sname, pctx)) | 216 | fname, sname, pctx)) |
| 217 | return 0; | 217 | return 0; |
| 218 | if (BIO_puts(out, "<ABSENT>\n") <= 0) | 218 | if (BIO_puts(out, "<ABSENT>\n") <= 0) |
| 219 | return 0; | 219 | return 0; |
| 220 | } | ||
| 221 | return 1; | ||
| 222 | } | 220 | } |
| 221 | return 1; | ||
| 222 | } | ||
| 223 | 223 | ||
| 224 | switch(it->itype) | 224 | switch(it->itype) |
| 225 | { | 225 | { |
| 226 | case ASN1_ITYPE_PRIMITIVE: | 226 | case ASN1_ITYPE_PRIMITIVE: |
| 227 | if(it->templates) | 227 | if(it->templates) |
| 228 | { | 228 | { |
| 229 | if (!asn1_template_print_ctx(out, fld, indent, | 229 | if (!asn1_template_print_ctx(out, fld, indent, |
| 230 | it->templates, pctx)) | 230 | it->templates, pctx)) |
| 231 | return 0; | 231 | return 0; |
| 232 | } | 232 | } |
| 233 | /* fall thru */ | 233 | /* fall thru */ |
| 234 | case ASN1_ITYPE_MSTRING: | 234 | case ASN1_ITYPE_MSTRING: |
| 235 | if (!asn1_primitive_print(out, fld, it, | 235 | if (!asn1_primitive_print(out, fld, it, |
| @@ -243,14 +243,14 @@ static int asn1_item_print_ctx(BIO *out, ASN1_VALUE **fld, int indent, | |||
| 243 | /* Use new style print routine if possible */ | 243 | /* Use new style print routine if possible */ |
| 244 | ef = it->funcs; | 244 | ef = it->funcs; |
| 245 | if (ef && ef->asn1_ex_print) | 245 | if (ef && ef->asn1_ex_print) |
| 246 | { | 246 | { |
| 247 | i = ef->asn1_ex_print(out, fld, indent, "", pctx); | 247 | i = ef->asn1_ex_print(out, fld, indent, "", pctx); |
| 248 | if (!i) | 248 | if (!i) |
| 249 | return 0; | 249 | return 0; |
| 250 | if ((i == 2) && (BIO_puts(out, "\n") <= 0)) | 250 | if ((i == 2) && (BIO_puts(out, "\n") <= 0)) |
| 251 | return 0; | 251 | return 0; |
| 252 | return 1; | 252 | return 1; |
| 253 | } | 253 | } |
| 254 | else if (sname && | 254 | else if (sname && |
| 255 | BIO_printf(out, ":EXTERNAL TYPE %s\n", sname) <= 0) | 255 | BIO_printf(out, ":EXTERNAL TYPE %s\n", sname) <= 0) |
| 256 | return 0; | 256 | return 0; |
| @@ -265,12 +265,12 @@ static int asn1_item_print_ctx(BIO *out, ASN1_VALUE **fld, int indent, | |||
| 265 | i = asn1_get_choice_selector(fld, it); | 265 | i = asn1_get_choice_selector(fld, it); |
| 266 | /* This should never happen... */ | 266 | /* This should never happen... */ |
| 267 | if((i < 0) || (i >= it->tcount)) | 267 | if((i < 0) || (i >= it->tcount)) |
| 268 | { | 268 | { |
| 269 | if (BIO_printf(out, | 269 | if (BIO_printf(out, |
| 270 | "ERROR: selector [%d] invalid\n", i) <= 0) | 270 | "ERROR: selector [%d] invalid\n", i) <= 0) |
| 271 | return 0; | 271 | return 0; |
| 272 | return 1; | 272 | return 1; |
| 273 | } | 273 | } |
| 274 | tt = it->templates + i; | 274 | tt = it->templates + i; |
| 275 | tmpfld = asn1_get_field_ptr(fld, tt); | 275 | tmpfld = asn1_get_field_ptr(fld, tt); |
| 276 | if (!asn1_template_print_ctx(out, tmpfld, indent, tt, pctx)) | 276 | if (!asn1_template_print_ctx(out, tmpfld, indent, tt, pctx)) |
| @@ -282,63 +282,63 @@ static int asn1_item_print_ctx(BIO *out, ASN1_VALUE **fld, int indent, | |||
| 282 | if (!nohdr && !asn1_print_fsname(out, indent, fname, sname, pctx)) | 282 | if (!nohdr && !asn1_print_fsname(out, indent, fname, sname, pctx)) |
| 283 | return 0; | 283 | return 0; |
| 284 | if (fname || sname) | 284 | if (fname || sname) |
| 285 | { | 285 | { |
| 286 | if (pctx->flags & ASN1_PCTX_FLAGS_SHOW_SEQUENCE) | 286 | if (pctx->flags & ASN1_PCTX_FLAGS_SHOW_SEQUENCE) |
| 287 | { | 287 | { |
| 288 | if (BIO_puts(out, " {\n") <= 0) | 288 | if (BIO_puts(out, " {\n") <= 0) |
| 289 | return 0; | 289 | return 0; |
| 290 | } | 290 | } |
| 291 | else | 291 | else |
| 292 | { | 292 | { |
| 293 | if (BIO_puts(out, "\n") <= 0) | 293 | if (BIO_puts(out, "\n") <= 0) |
| 294 | return 0; | 294 | return 0; |
| 295 | } | ||
| 296 | } | 295 | } |
| 296 | } | ||
| 297 | 297 | ||
| 298 | if (asn1_cb) | 298 | if (asn1_cb) |
| 299 | { | 299 | { |
| 300 | i = asn1_cb(ASN1_OP_PRINT_PRE, fld, it, &parg); | 300 | i = asn1_cb(ASN1_OP_PRINT_PRE, fld, it, &parg); |
| 301 | if (i == 0) | 301 | if (i == 0) |
| 302 | return 0; | 302 | return 0; |
| 303 | if (i == 2) | 303 | if (i == 2) |
| 304 | return 1; | 304 | return 1; |
| 305 | } | 305 | } |
| 306 | 306 | ||
| 307 | /* Print each field entry */ | 307 | /* Print each field entry */ |
| 308 | for(i = 0, tt = it->templates; i < it->tcount; i++, tt++) | 308 | for(i = 0, tt = it->templates; i < it->tcount; i++, tt++) |
| 309 | { | 309 | { |
| 310 | const ASN1_TEMPLATE *seqtt; | 310 | const ASN1_TEMPLATE *seqtt; |
| 311 | seqtt = asn1_do_adb(fld, tt, 1); | 311 | seqtt = asn1_do_adb(fld, tt, 1); |
| 312 | tmpfld = asn1_get_field_ptr(fld, seqtt); | 312 | tmpfld = asn1_get_field_ptr(fld, seqtt); |
| 313 | if (!asn1_template_print_ctx(out, tmpfld, | 313 | if (!asn1_template_print_ctx(out, tmpfld, |
| 314 | indent + 2, seqtt, pctx)) | 314 | indent + 2, seqtt, pctx)) |
| 315 | return 0; | 315 | return 0; |
| 316 | } | 316 | } |
| 317 | if (pctx->flags & ASN1_PCTX_FLAGS_SHOW_SEQUENCE) | 317 | if (pctx->flags & ASN1_PCTX_FLAGS_SHOW_SEQUENCE) |
| 318 | { | 318 | { |
| 319 | if (BIO_printf(out, "%*s}\n", indent, "") < 0) | 319 | if (BIO_printf(out, "%*s}\n", indent, "") < 0) |
| 320 | return 0; | 320 | return 0; |
| 321 | } | 321 | } |
| 322 | 322 | ||
| 323 | if (asn1_cb) | 323 | if (asn1_cb) |
| 324 | { | 324 | { |
| 325 | i = asn1_cb(ASN1_OP_PRINT_POST, fld, it, &parg); | 325 | i = asn1_cb(ASN1_OP_PRINT_POST, fld, it, &parg); |
| 326 | if (i == 0) | 326 | if (i == 0) |
| 327 | return 0; | 327 | return 0; |
| 328 | } | 328 | } |
| 329 | break; | 329 | break; |
| 330 | 330 | ||
| 331 | default: | 331 | default: |
| 332 | BIO_printf(out, "Unprocessed type %d\n", it->itype); | 332 | BIO_printf(out, "Unprocessed type %d\n", it->itype); |
| 333 | return 0; | 333 | return 0; |
| 334 | } | 334 | } |
| 335 | 335 | ||
| 336 | return 1; | 336 | return 1; |
| 337 | } | 337 | } |
| 338 | 338 | ||
| 339 | int asn1_template_print_ctx(BIO *out, ASN1_VALUE **fld, int indent, | 339 | int asn1_template_print_ctx(BIO *out, ASN1_VALUE **fld, int indent, |
| 340 | const ASN1_TEMPLATE *tt, const ASN1_PCTX *pctx) | 340 | const ASN1_TEMPLATE *tt, const ASN1_PCTX *pctx) |
| 341 | { | 341 | { |
| 342 | int i, flags; | 342 | int i, flags; |
| 343 | const char *sname, *fname; | 343 | const char *sname, *fname; |
| 344 | flags = tt->flags; | 344 | flags = tt->flags; |
| @@ -351,16 +351,16 @@ int asn1_template_print_ctx(BIO *out, ASN1_VALUE **fld, int indent, | |||
| 351 | else | 351 | else |
| 352 | fname = tt->field_name; | 352 | fname = tt->field_name; |
| 353 | if(flags & ASN1_TFLG_SK_MASK) | 353 | if(flags & ASN1_TFLG_SK_MASK) |
| 354 | { | 354 | { |
| 355 | char *tname; | 355 | char *tname; |
| 356 | ASN1_VALUE *skitem; | 356 | ASN1_VALUE *skitem; |
| 357 | STACK_OF(ASN1_VALUE) *stack; | 357 | STACK_OF(ASN1_VALUE) *stack; |
| 358 | 358 | ||
| 359 | /* SET OF, SEQUENCE OF */ | 359 | /* SET OF, SEQUENCE OF */ |
| 360 | if (fname) | 360 | if (fname) |
| 361 | { | 361 | { |
| 362 | if(pctx->flags & ASN1_PCTX_FLAGS_SHOW_SSOF) | 362 | if(pctx->flags & ASN1_PCTX_FLAGS_SHOW_SSOF) |
| 363 | { | 363 | { |
| 364 | if(flags & ASN1_TFLG_SET_OF) | 364 | if(flags & ASN1_TFLG_SET_OF) |
| 365 | tname = "SET"; | 365 | tname = "SET"; |
| 366 | else | 366 | else |
| @@ -368,14 +368,14 @@ int asn1_template_print_ctx(BIO *out, ASN1_VALUE **fld, int indent, | |||
| 368 | if (BIO_printf(out, "%*s%s OF %s {\n", | 368 | if (BIO_printf(out, "%*s%s OF %s {\n", |
| 369 | indent, "", tname, tt->field_name) <= 0) | 369 | indent, "", tname, tt->field_name) <= 0) |
| 370 | return 0; | 370 | return 0; |
| 371 | } | 371 | } |
| 372 | else if (BIO_printf(out, "%*s%s:\n", indent, "", | 372 | else if (BIO_printf(out, "%*s%s:\n", indent, "", |
| 373 | fname) <= 0) | 373 | fname) <= 0) |
| 374 | return 0; | 374 | return 0; |
| 375 | } | 375 | } |
| 376 | stack = (STACK_OF(ASN1_VALUE) *)*fld; | 376 | stack = (STACK_OF(ASN1_VALUE) *)*fld; |
| 377 | for(i = 0; i < sk_ASN1_VALUE_num(stack); i++) | 377 | for(i = 0; i < sk_ASN1_VALUE_num(stack); i++) |
| 378 | { | 378 | { |
| 379 | if ((i > 0) && (BIO_puts(out, "\n") <= 0)) | 379 | if ((i > 0) && (BIO_puts(out, "\n") <= 0)) |
| 380 | return 0; | 380 | return 0; |
| 381 | 381 | ||
| @@ -383,24 +383,24 @@ int asn1_template_print_ctx(BIO *out, ASN1_VALUE **fld, int indent, | |||
| 383 | if (!asn1_item_print_ctx(out, &skitem, indent + 2, | 383 | if (!asn1_item_print_ctx(out, &skitem, indent + 2, |
| 384 | ASN1_ITEM_ptr(tt->item), NULL, NULL, 1, pctx)) | 384 | ASN1_ITEM_ptr(tt->item), NULL, NULL, 1, pctx)) |
| 385 | return 0; | 385 | return 0; |
| 386 | } | 386 | } |
| 387 | if (!i && BIO_printf(out, "%*s<EMPTY>\n", indent + 2, "") <= 0) | 387 | if (!i && BIO_printf(out, "%*s<EMPTY>\n", indent + 2, "") <= 0) |
| 388 | return 0; | 388 | return 0; |
| 389 | if(pctx->flags & ASN1_PCTX_FLAGS_SHOW_SEQUENCE) | 389 | if(pctx->flags & ASN1_PCTX_FLAGS_SHOW_SEQUENCE) |
| 390 | { | 390 | { |
| 391 | if (BIO_printf(out, "%*s}\n", indent, "") <= 0) | 391 | if (BIO_printf(out, "%*s}\n", indent, "") <= 0) |
| 392 | return 0; | 392 | return 0; |
| 393 | } | ||
| 394 | return 1; | ||
| 395 | } | 393 | } |
| 394 | return 1; | ||
| 395 | } | ||
| 396 | return asn1_item_print_ctx(out, fld, indent, ASN1_ITEM_ptr(tt->item), | 396 | return asn1_item_print_ctx(out, fld, indent, ASN1_ITEM_ptr(tt->item), |
| 397 | fname, sname, 0, pctx); | 397 | fname, sname, 0, pctx); |
| 398 | } | 398 | } |
| 399 | 399 | ||
| 400 | static int asn1_print_fsname(BIO *out, int indent, | 400 | static int asn1_print_fsname(BIO *out, int indent, |
| 401 | const char *fname, const char *sname, | 401 | const char *fname, const char *sname, |
| 402 | const ASN1_PCTX *pctx) | 402 | const ASN1_PCTX *pctx) |
| 403 | { | 403 | { |
| 404 | static char spaces[] = " "; | 404 | static char spaces[] = " "; |
| 405 | const int nspaces = sizeof(spaces) - 1; | 405 | const int nspaces = sizeof(spaces) - 1; |
| 406 | 406 | ||
| @@ -410,11 +410,11 @@ static int asn1_print_fsname(BIO *out, int indent, | |||
| 410 | #endif | 410 | #endif |
| 411 | 411 | ||
| 412 | while (indent > nspaces) | 412 | while (indent > nspaces) |
| 413 | { | 413 | { |
| 414 | if (BIO_write(out, spaces, nspaces) != nspaces) | 414 | if (BIO_write(out, spaces, nspaces) != nspaces) |
| 415 | return 0; | 415 | return 0; |
| 416 | indent -= nspaces; | 416 | indent -= nspaces; |
| 417 | } | 417 | } |
| 418 | if (BIO_write(out, spaces, indent) != indent) | 418 | if (BIO_write(out, spaces, indent) != indent) |
| 419 | return 0; | 419 | return 0; |
| 420 | if (pctx->flags & ASN1_PCTX_FLAGS_NO_STRUCT_NAME) | 420 | if (pctx->flags & ASN1_PCTX_FLAGS_NO_STRUCT_NAME) |
| @@ -424,34 +424,34 @@ static int asn1_print_fsname(BIO *out, int indent, | |||
| 424 | if (!sname && !fname) | 424 | if (!sname && !fname) |
| 425 | return 1; | 425 | return 1; |
| 426 | if (fname) | 426 | if (fname) |
| 427 | { | 427 | { |
| 428 | if (BIO_puts(out, fname) <= 0) | 428 | if (BIO_puts(out, fname) <= 0) |
| 429 | return 0; | 429 | return 0; |
| 430 | } | 430 | } |
| 431 | if (sname) | 431 | if (sname) |
| 432 | { | 432 | { |
| 433 | if (fname) | 433 | if (fname) |
| 434 | { | 434 | { |
| 435 | if (BIO_printf(out, " (%s)", sname) <= 0) | 435 | if (BIO_printf(out, " (%s)", sname) <= 0) |
| 436 | return 0; | 436 | return 0; |
| 437 | } | 437 | } |
| 438 | else | 438 | else |
| 439 | { | 439 | { |
| 440 | if (BIO_puts(out, sname) <= 0) | 440 | if (BIO_puts(out, sname) <= 0) |
| 441 | return 0; | 441 | return 0; |
| 442 | } | ||
| 443 | } | 442 | } |
| 443 | } | ||
| 444 | if (BIO_write(out, ": ", 2) != 2) | 444 | if (BIO_write(out, ": ", 2) != 2) |
| 445 | return 0; | 445 | return 0; |
| 446 | return 1; | 446 | return 1; |
| 447 | } | 447 | } |
| 448 | 448 | ||
| 449 | static int asn1_print_boolean_ctx(BIO *out, int boolval, | 449 | static int asn1_print_boolean_ctx(BIO *out, int boolval, |
| 450 | const ASN1_PCTX *pctx) | 450 | const ASN1_PCTX *pctx) |
| 451 | { | 451 | { |
| 452 | const char *str; | 452 | const char *str; |
| 453 | switch (boolval) | 453 | switch (boolval) |
| 454 | { | 454 | { |
| 455 | case -1: | 455 | case -1: |
| 456 | str = "BOOL ABSENT"; | 456 | str = "BOOL ABSENT"; |
| 457 | break; | 457 | break; |
| @@ -464,17 +464,17 @@ static int asn1_print_boolean_ctx(BIO *out, int boolval, | |||
| 464 | str = "TRUE"; | 464 | str = "TRUE"; |
| 465 | break; | 465 | break; |
| 466 | 466 | ||
| 467 | } | 467 | } |
| 468 | 468 | ||
| 469 | if (BIO_puts(out, str) <= 0) | 469 | if (BIO_puts(out, str) <= 0) |
| 470 | return 0; | 470 | return 0; |
| 471 | return 1; | 471 | return 1; |
| 472 | 472 | ||
| 473 | } | 473 | } |
| 474 | 474 | ||
| 475 | static int asn1_print_integer_ctx(BIO *out, ASN1_INTEGER *str, | 475 | static int asn1_print_integer_ctx(BIO *out, ASN1_INTEGER *str, |
| 476 | const ASN1_PCTX *pctx) | 476 | const ASN1_PCTX *pctx) |
| 477 | { | 477 | { |
| 478 | char *s; | 478 | char *s; |
| 479 | int ret = 1; | 479 | int ret = 1; |
| 480 | s = i2s_ASN1_INTEGER(NULL, str); | 480 | s = i2s_ASN1_INTEGER(NULL, str); |
| @@ -482,11 +482,11 @@ static int asn1_print_integer_ctx(BIO *out, ASN1_INTEGER *str, | |||
| 482 | ret = 0; | 482 | ret = 0; |
| 483 | free(s); | 483 | free(s); |
| 484 | return ret; | 484 | return ret; |
| 485 | } | 485 | } |
| 486 | 486 | ||
| 487 | static int asn1_print_oid_ctx(BIO *out, const ASN1_OBJECT *oid, | 487 | static int asn1_print_oid_ctx(BIO *out, const ASN1_OBJECT *oid, |
| 488 | const ASN1_PCTX *pctx) | 488 | const ASN1_PCTX *pctx) |
| 489 | { | 489 | { |
| 490 | char objbuf[80]; | 490 | char objbuf[80]; |
| 491 | const char *ln; | 491 | const char *ln; |
| 492 | ln = OBJ_nid2ln(OBJ_obj2nid(oid)); | 492 | ln = OBJ_nid2ln(OBJ_obj2nid(oid)); |
| @@ -496,17 +496,17 @@ static int asn1_print_oid_ctx(BIO *out, const ASN1_OBJECT *oid, | |||
| 496 | if (BIO_printf(out, "%s (%s)", ln, objbuf) <= 0) | 496 | if (BIO_printf(out, "%s (%s)", ln, objbuf) <= 0) |
| 497 | return 0; | 497 | return 0; |
| 498 | return 1; | 498 | return 1; |
| 499 | } | 499 | } |
| 500 | 500 | ||
| 501 | static int asn1_print_obstring_ctx(BIO *out, ASN1_STRING *str, int indent, | 501 | static int asn1_print_obstring_ctx(BIO *out, ASN1_STRING *str, int indent, |
| 502 | const ASN1_PCTX *pctx) | 502 | const ASN1_PCTX *pctx) |
| 503 | { | 503 | { |
| 504 | if (str->type == V_ASN1_BIT_STRING) | 504 | if (str->type == V_ASN1_BIT_STRING) |
| 505 | { | 505 | { |
| 506 | if (BIO_printf(out, " (%ld unused bits)\n", | 506 | if (BIO_printf(out, " (%ld unused bits)\n", |
| 507 | str->flags & 0x7) <= 0) | 507 | str->flags & 0x7) <= 0) |
| 508 | return 0; | 508 | return 0; |
| 509 | } | 509 | } |
| 510 | else if (BIO_puts(out, "\n") <= 0) | 510 | else if (BIO_puts(out, "\n") <= 0) |
| 511 | return 0; | 511 | return 0; |
| 512 | if ((str->length > 0) | 512 | if ((str->length > 0) |
| @@ -514,13 +514,13 @@ static int asn1_print_obstring_ctx(BIO *out, ASN1_STRING *str, int indent, | |||
| 514 | indent + 2) <= 0) | 514 | indent + 2) <= 0) |
| 515 | return 0; | 515 | return 0; |
| 516 | return 1; | 516 | return 1; |
| 517 | } | 517 | } |
| 518 | 518 | ||
| 519 | static int asn1_primitive_print(BIO *out, ASN1_VALUE **fld, | 519 | static int asn1_primitive_print(BIO *out, ASN1_VALUE **fld, |
| 520 | const ASN1_ITEM *it, int indent, | 520 | const ASN1_ITEM *it, int indent, |
| 521 | const char *fname, const char *sname, | 521 | const char *fname, const char *sname, |
| 522 | const ASN1_PCTX *pctx) | 522 | const ASN1_PCTX *pctx) |
| 523 | { | 523 | { |
| 524 | long utype; | 524 | long utype; |
| 525 | ASN1_STRING *str; | 525 | ASN1_STRING *str; |
| 526 | int ret = 1, needlf = 1; | 526 | int ret = 1, needlf = 1; |
| @@ -537,7 +537,7 @@ static int asn1_primitive_print(BIO *out, ASN1_VALUE **fld, | |||
| 537 | else | 537 | else |
| 538 | utype = it->utype; | 538 | utype = it->utype; |
| 539 | if (utype == V_ASN1_ANY) | 539 | if (utype == V_ASN1_ANY) |
| 540 | { | 540 | { |
| 541 | ASN1_TYPE *atype = (ASN1_TYPE *)*fld; | 541 | ASN1_TYPE *atype = (ASN1_TYPE *)*fld; |
| 542 | utype = atype->type; | 542 | utype = atype->type; |
| 543 | fld = &atype->value.asn1_value; | 543 | fld = &atype->value.asn1_value; |
| @@ -546,39 +546,39 @@ static int asn1_primitive_print(BIO *out, ASN1_VALUE **fld, | |||
| 546 | pname = NULL; | 546 | pname = NULL; |
| 547 | else | 547 | else |
| 548 | pname = ASN1_tag2str(utype); | 548 | pname = ASN1_tag2str(utype); |
| 549 | } | 549 | } |
| 550 | else | 550 | else |
| 551 | { | 551 | { |
| 552 | if (pctx->flags & ASN1_PCTX_FLAGS_SHOW_TYPE) | 552 | if (pctx->flags & ASN1_PCTX_FLAGS_SHOW_TYPE) |
| 553 | pname = ASN1_tag2str(utype); | 553 | pname = ASN1_tag2str(utype); |
| 554 | else | 554 | else |
| 555 | pname = NULL; | 555 | pname = NULL; |
| 556 | } | 556 | } |
| 557 | 557 | ||
| 558 | if (utype == V_ASN1_NULL) | 558 | if (utype == V_ASN1_NULL) |
| 559 | { | 559 | { |
| 560 | if (BIO_puts(out, "NULL\n") <= 0) | 560 | if (BIO_puts(out, "NULL\n") <= 0) |
| 561 | return 0; | 561 | return 0; |
| 562 | return 1; | 562 | return 1; |
| 563 | } | 563 | } |
| 564 | 564 | ||
| 565 | if (pname) | 565 | if (pname) |
| 566 | { | 566 | { |
| 567 | if (BIO_puts(out, pname) <= 0) | 567 | if (BIO_puts(out, pname) <= 0) |
| 568 | return 0; | 568 | return 0; |
| 569 | if (BIO_puts(out, ":") <= 0) | 569 | if (BIO_puts(out, ":") <= 0) |
| 570 | return 0; | 570 | return 0; |
| 571 | } | 571 | } |
| 572 | 572 | ||
| 573 | switch (utype) | 573 | switch (utype) |
| 574 | { | 574 | { |
| 575 | case V_ASN1_BOOLEAN: | 575 | case V_ASN1_BOOLEAN: |
| 576 | { | 576 | { |
| 577 | int boolval = *(int *)fld; | 577 | int boolval = *(int *)fld; |
| 578 | if (boolval == -1) | 578 | if (boolval == -1) |
| 579 | boolval = it->size; | 579 | boolval = it->size; |
| 580 | ret = asn1_print_boolean_ctx(out, boolval, pctx); | 580 | ret = asn1_print_boolean_ctx(out, boolval, pctx); |
| 581 | } | 581 | } |
| 582 | break; | 582 | break; |
| 583 | 583 | ||
| 584 | case V_ASN1_INTEGER: | 584 | case V_ASN1_INTEGER: |
| @@ -618,10 +618,10 @@ static int asn1_primitive_print(BIO *out, ASN1_VALUE **fld, | |||
| 618 | default: | 618 | default: |
| 619 | ret = ASN1_STRING_print_ex(out, str, pctx->str_flags); | 619 | ret = ASN1_STRING_print_ex(out, str, pctx->str_flags); |
| 620 | 620 | ||
| 621 | } | 621 | } |
| 622 | if (!ret) | 622 | if (!ret) |
| 623 | return 0; | 623 | return 0; |
| 624 | if (needlf && BIO_puts(out, "\n") <= 0) | 624 | if (needlf && BIO_puts(out, "\n") <= 0) |
| 625 | return 0; | 625 | return 0; |
| 626 | return 1; | 626 | return 1; |
| 627 | } | 627 | } |
