diff options
| author | jsing <> | 2015-07-25 14:52:47 +0000 |
|---|---|---|
| committer | jsing <> | 2015-07-25 14:52:47 +0000 |
| commit | 46ed298bcf1dad58918bf52d1a660ecda7f840c9 (patch) | |
| tree | 3a4ef75aff2b83beae2d00f42e4b715192f4e2fc /src | |
| parent | 18ce2b1a5b87510b6193b7bae2d361bed8947c50 (diff) | |
| download | openbsd-46ed298bcf1dad58918bf52d1a660ecda7f840c9.tar.gz openbsd-46ed298bcf1dad58918bf52d1a660ecda7f840c9.tar.bz2 openbsd-46ed298bcf1dad58918bf52d1a660ecda7f840c9.zip | |
Expand ASN.1 template macros - no change in generated assembly.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libcrypto/krb5/krb5_asn.c | 411 | ||||
| -rw-r--r-- | src/lib/libcrypto/ocsp/ocsp_asn.c | 572 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/krb5/krb5_asn.c | 411 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/ocsp/ocsp_asn.c | 572 |
4 files changed, 1694 insertions, 272 deletions
diff --git a/src/lib/libcrypto/krb5/krb5_asn.c b/src/lib/libcrypto/krb5/krb5_asn.c index 1a95e62935..4713fce37b 100644 --- a/src/lib/libcrypto/krb5/krb5_asn.c +++ b/src/lib/libcrypto/krb5/krb5_asn.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: krb5_asn.c,v 1.3 2015/02/09 16:04:46 jsing Exp $ */ | 1 | /* $OpenBSD: krb5_asn.c,v 1.4 2015/07/25 14:49:45 jsing Exp $ */ |
| 2 | /* Written by Vern Staats <staatsvr@asc.hpc.mil> for the OpenSSL project, | 2 | /* Written by Vern Staats <staatsvr@asc.hpc.mil> for the OpenSSL project, |
| 3 | ** using ocsp/{*.h,*asn*.c} as a starting point | 3 | ** using ocsp/{*.h,*asn*.c} as a starting point |
| 4 | */ | 4 | */ |
| @@ -60,11 +60,39 @@ | |||
| 60 | #include <openssl/krb5_asn.h> | 60 | #include <openssl/krb5_asn.h> |
| 61 | 61 | ||
| 62 | 62 | ||
| 63 | ASN1_SEQUENCE(KRB5_ENCDATA) = { | 63 | static const ASN1_TEMPLATE KRB5_ENCDATA_seq_tt[] = { |
| 64 | ASN1_EXP(KRB5_ENCDATA, etype, ASN1_INTEGER, 0), | 64 | { |
| 65 | ASN1_EXP_OPT(KRB5_ENCDATA, kvno, ASN1_INTEGER, 1), | 65 | .flags = ASN1_TFLG_EXPLICIT, |
| 66 | ASN1_EXP(KRB5_ENCDATA, cipher, ASN1_OCTET_STRING,2) | 66 | .tag = 0, |
| 67 | } ASN1_SEQUENCE_END(KRB5_ENCDATA) | 67 | .offset = offsetof(KRB5_ENCDATA, etype), |
| 68 | .field_name = "etype", | ||
| 69 | .item = &ASN1_INTEGER_it, | ||
| 70 | }, | ||
| 71 | { | ||
| 72 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
| 73 | .tag = 1, | ||
| 74 | .offset = offsetof(KRB5_ENCDATA, kvno), | ||
| 75 | .field_name = "kvno", | ||
| 76 | .item = &ASN1_INTEGER_it, | ||
| 77 | }, | ||
| 78 | { | ||
| 79 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 80 | .tag = 2, | ||
| 81 | .offset = offsetof(KRB5_ENCDATA, cipher), | ||
| 82 | .field_name = "cipher", | ||
| 83 | .item = &ASN1_OCTET_STRING_it, | ||
| 84 | }, | ||
| 85 | }; | ||
| 86 | |||
| 87 | const ASN1_ITEM KRB5_ENCDATA_it = { | ||
| 88 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 89 | .utype = V_ASN1_SEQUENCE, | ||
| 90 | .templates = KRB5_ENCDATA_seq_tt, | ||
| 91 | .tcount = sizeof(KRB5_ENCDATA_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 92 | .funcs = NULL, | ||
| 93 | .size = sizeof(KRB5_ENCDATA), | ||
| 94 | .sname = "KRB5_ENCDATA", | ||
| 95 | }; | ||
| 68 | 96 | ||
| 69 | 97 | ||
| 70 | KRB5_ENCDATA * | 98 | KRB5_ENCDATA * |
| @@ -93,10 +121,32 @@ KRB5_ENCDATA_free(KRB5_ENCDATA *a) | |||
| 93 | } | 121 | } |
| 94 | 122 | ||
| 95 | 123 | ||
| 96 | ASN1_SEQUENCE(KRB5_PRINCNAME) = { | 124 | static const ASN1_TEMPLATE KRB5_PRINCNAME_seq_tt[] = { |
| 97 | ASN1_EXP(KRB5_PRINCNAME, nametype, ASN1_INTEGER, 0), | 125 | { |
| 98 | ASN1_EXP_SEQUENCE_OF(KRB5_PRINCNAME, namestring, ASN1_GENERALSTRING, 1) | 126 | .flags = ASN1_TFLG_EXPLICIT, |
| 99 | } ASN1_SEQUENCE_END(KRB5_PRINCNAME) | 127 | .tag = 0, |
| 128 | .offset = offsetof(KRB5_PRINCNAME, nametype), | ||
| 129 | .field_name = "nametype", | ||
| 130 | .item = &ASN1_INTEGER_it, | ||
| 131 | }, | ||
| 132 | { | ||
| 133 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF, | ||
| 134 | .tag = 1, | ||
| 135 | .offset = offsetof(KRB5_PRINCNAME, namestring), | ||
| 136 | .field_name = "namestring", | ||
| 137 | .item = &ASN1_GENERALSTRING_it, | ||
| 138 | }, | ||
| 139 | }; | ||
| 140 | |||
| 141 | const ASN1_ITEM KRB5_PRINCNAME_it = { | ||
| 142 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 143 | .utype = V_ASN1_SEQUENCE, | ||
| 144 | .templates = KRB5_PRINCNAME_seq_tt, | ||
| 145 | .tcount = sizeof(KRB5_PRINCNAME_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 146 | .funcs = NULL, | ||
| 147 | .size = sizeof(KRB5_PRINCNAME), | ||
| 148 | .sname = "KRB5_PRINCNAME", | ||
| 149 | }; | ||
| 100 | 150 | ||
| 101 | 151 | ||
| 102 | KRB5_PRINCNAME * | 152 | KRB5_PRINCNAME * |
| @@ -126,12 +176,46 @@ KRB5_PRINCNAME_free(KRB5_PRINCNAME *a) | |||
| 126 | 176 | ||
| 127 | 177 | ||
| 128 | /* [APPLICATION 1] = 0x61 */ | 178 | /* [APPLICATION 1] = 0x61 */ |
| 129 | ASN1_SEQUENCE(KRB5_TKTBODY) = { | 179 | static const ASN1_TEMPLATE KRB5_TKTBODY_seq_tt[] = { |
| 130 | ASN1_EXP(KRB5_TKTBODY, tktvno, ASN1_INTEGER, 0), | 180 | { |
| 131 | ASN1_EXP(KRB5_TKTBODY, realm, ASN1_GENERALSTRING, 1), | 181 | .flags = ASN1_TFLG_EXPLICIT, |
| 132 | ASN1_EXP(KRB5_TKTBODY, sname, KRB5_PRINCNAME, 2), | 182 | .tag = 0, |
| 133 | ASN1_EXP(KRB5_TKTBODY, encdata, KRB5_ENCDATA, 3) | 183 | .offset = offsetof(KRB5_TKTBODY, tktvno), |
| 134 | } ASN1_SEQUENCE_END(KRB5_TKTBODY) | 184 | .field_name = "tktvno", |
| 185 | .item = &ASN1_INTEGER_it, | ||
| 186 | }, | ||
| 187 | { | ||
| 188 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 189 | .tag = 1, | ||
| 190 | .offset = offsetof(KRB5_TKTBODY, realm), | ||
| 191 | .field_name = "realm", | ||
| 192 | .item = &ASN1_GENERALSTRING_it, | ||
| 193 | }, | ||
| 194 | { | ||
| 195 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 196 | .tag = 2, | ||
| 197 | .offset = offsetof(KRB5_TKTBODY, sname), | ||
| 198 | .field_name = "sname", | ||
| 199 | .item = &KRB5_PRINCNAME_it, | ||
| 200 | }, | ||
| 201 | { | ||
| 202 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 203 | .tag = 3, | ||
| 204 | .offset = offsetof(KRB5_TKTBODY, encdata), | ||
| 205 | .field_name = "encdata", | ||
| 206 | .item = &KRB5_ENCDATA_it, | ||
| 207 | }, | ||
| 208 | }; | ||
| 209 | |||
| 210 | const ASN1_ITEM KRB5_TKTBODY_it = { | ||
| 211 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 212 | .utype = V_ASN1_SEQUENCE, | ||
| 213 | .templates = KRB5_TKTBODY_seq_tt, | ||
| 214 | .tcount = sizeof(KRB5_TKTBODY_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 215 | .funcs = NULL, | ||
| 216 | .size = sizeof(KRB5_TKTBODY), | ||
| 217 | .sname = "KRB5_TKTBODY", | ||
| 218 | }; | ||
| 135 | 219 | ||
| 136 | 220 | ||
| 137 | KRB5_TKTBODY * | 221 | KRB5_TKTBODY * |
| @@ -160,10 +244,23 @@ KRB5_TKTBODY_free(KRB5_TKTBODY *a) | |||
| 160 | } | 244 | } |
| 161 | 245 | ||
| 162 | 246 | ||
| 163 | ASN1_ITEM_TEMPLATE(KRB5_TICKET) = | 247 | static const ASN1_TEMPLATE KRB5_TICKET_item_tt = { |
| 164 | ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_EXPTAG|ASN1_TFLG_APPLICATION, 1, | 248 | .flags = ASN1_TFLG_EXPTAG | ASN1_TFLG_APPLICATION, |
| 165 | KRB5_TICKET, KRB5_TKTBODY) | 249 | .tag = 1, |
| 166 | ASN1_ITEM_TEMPLATE_END(KRB5_TICKET) | 250 | .offset = 0, |
| 251 | .field_name = "KRB5_TICKET", | ||
| 252 | .item = &KRB5_TKTBODY_it, | ||
| 253 | }; | ||
| 254 | |||
| 255 | const ASN1_ITEM KRB5_TICKET_it = { | ||
| 256 | .itype = ASN1_ITYPE_PRIMITIVE, | ||
| 257 | .utype = -1, | ||
| 258 | .templates = &KRB5_TICKET_item_tt, | ||
| 259 | .tcount = 0, | ||
| 260 | .funcs = NULL, | ||
| 261 | .size = 0, | ||
| 262 | .sname = "KRB5_TICKET", | ||
| 263 | }; | ||
| 167 | 264 | ||
| 168 | 265 | ||
| 169 | KRB5_TICKET * | 266 | KRB5_TICKET * |
| @@ -193,13 +290,53 @@ KRB5_TICKET_free(KRB5_TICKET *a) | |||
| 193 | 290 | ||
| 194 | 291 | ||
| 195 | /* [APPLICATION 14] = 0x6e */ | 292 | /* [APPLICATION 14] = 0x6e */ |
| 196 | ASN1_SEQUENCE(KRB5_APREQBODY) = { | 293 | static const ASN1_TEMPLATE KRB5_APREQBODY_seq_tt[] = { |
| 197 | ASN1_EXP(KRB5_APREQBODY, pvno, ASN1_INTEGER, 0), | 294 | { |
| 198 | ASN1_EXP(KRB5_APREQBODY, msgtype, ASN1_INTEGER, 1), | 295 | .flags = ASN1_TFLG_EXPLICIT, |
| 199 | ASN1_EXP(KRB5_APREQBODY, apoptions, ASN1_BIT_STRING, 2), | 296 | .tag = 0, |
| 200 | ASN1_EXP(KRB5_APREQBODY, ticket, KRB5_TICKET, 3), | 297 | .offset = offsetof(KRB5_APREQBODY, pvno), |
| 201 | ASN1_EXP(KRB5_APREQBODY, authenticator, KRB5_ENCDATA, 4), | 298 | .field_name = "pvno", |
| 202 | } ASN1_SEQUENCE_END(KRB5_APREQBODY) | 299 | .item = &ASN1_INTEGER_it, |
| 300 | }, | ||
| 301 | { | ||
| 302 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 303 | .tag = 1, | ||
| 304 | .offset = offsetof(KRB5_APREQBODY, msgtype), | ||
| 305 | .field_name = "msgtype", | ||
| 306 | .item = &ASN1_INTEGER_it, | ||
| 307 | }, | ||
| 308 | { | ||
| 309 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 310 | .tag = 2, | ||
| 311 | .offset = offsetof(KRB5_APREQBODY, apoptions), | ||
| 312 | .field_name = "apoptions", | ||
| 313 | .item = &ASN1_BIT_STRING_it, | ||
| 314 | }, | ||
| 315 | { | ||
| 316 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 317 | .tag = 3, | ||
| 318 | .offset = offsetof(KRB5_APREQBODY, ticket), | ||
| 319 | .field_name = "ticket", | ||
| 320 | .item = &KRB5_TICKET_it, | ||
| 321 | }, | ||
| 322 | { | ||
| 323 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 324 | .tag = 4, | ||
| 325 | .offset = offsetof(KRB5_APREQBODY, authenticator), | ||
| 326 | .field_name = "authenticator", | ||
| 327 | .item = &KRB5_ENCDATA_it, | ||
| 328 | }, | ||
| 329 | }; | ||
| 330 | |||
| 331 | const ASN1_ITEM KRB5_APREQBODY_it = { | ||
| 332 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 333 | .utype = V_ASN1_SEQUENCE, | ||
| 334 | .templates = KRB5_APREQBODY_seq_tt, | ||
| 335 | .tcount = sizeof(KRB5_APREQBODY_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 336 | .funcs = NULL, | ||
| 337 | .size = sizeof(KRB5_APREQBODY), | ||
| 338 | .sname = "KRB5_APREQBODY", | ||
| 339 | }; | ||
| 203 | 340 | ||
| 204 | 341 | ||
| 205 | KRB5_APREQBODY * | 342 | KRB5_APREQBODY * |
| @@ -227,10 +364,23 @@ KRB5_APREQBODY_free(KRB5_APREQBODY *a) | |||
| 227 | ASN1_item_free((ASN1_VALUE *)a, &KRB5_APREQBODY_it); | 364 | ASN1_item_free((ASN1_VALUE *)a, &KRB5_APREQBODY_it); |
| 228 | } | 365 | } |
| 229 | 366 | ||
| 230 | ASN1_ITEM_TEMPLATE(KRB5_APREQ) = | 367 | static const ASN1_TEMPLATE KRB5_APREQ_item_tt = { |
| 231 | ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_EXPTAG|ASN1_TFLG_APPLICATION, 14, | 368 | .flags = ASN1_TFLG_EXPTAG | ASN1_TFLG_APPLICATION, |
| 232 | KRB5_APREQ, KRB5_APREQBODY) | 369 | .tag = 14, |
| 233 | ASN1_ITEM_TEMPLATE_END(KRB5_APREQ) | 370 | .offset = 0, |
| 371 | .field_name = "KRB5_APREQ", | ||
| 372 | .item = &KRB5_APREQBODY_it, | ||
| 373 | }; | ||
| 374 | |||
| 375 | const ASN1_ITEM KRB5_APREQ_it = { | ||
| 376 | .itype = ASN1_ITYPE_PRIMITIVE, | ||
| 377 | .utype = -1, | ||
| 378 | .templates = &KRB5_APREQ_item_tt, | ||
| 379 | .tcount = 0, | ||
| 380 | .funcs = NULL, | ||
| 381 | .size = 0, | ||
| 382 | .sname = "KRB5_APREQ", | ||
| 383 | }; | ||
| 234 | 384 | ||
| 235 | 385 | ||
| 236 | KRB5_APREQ * | 386 | KRB5_APREQ * |
| @@ -261,10 +411,32 @@ KRB5_APREQ_free(KRB5_APREQ *a) | |||
| 261 | 411 | ||
| 262 | /* Authenticator stuff */ | 412 | /* Authenticator stuff */ |
| 263 | 413 | ||
| 264 | ASN1_SEQUENCE(KRB5_CHECKSUM) = { | 414 | static const ASN1_TEMPLATE KRB5_CHECKSUM_seq_tt[] = { |
| 265 | ASN1_EXP(KRB5_CHECKSUM, ctype, ASN1_INTEGER, 0), | 415 | { |
| 266 | ASN1_EXP(KRB5_CHECKSUM, checksum, ASN1_OCTET_STRING,1) | 416 | .flags = ASN1_TFLG_EXPLICIT, |
| 267 | } ASN1_SEQUENCE_END(KRB5_CHECKSUM) | 417 | .tag = 0, |
| 418 | .offset = offsetof(KRB5_CHECKSUM, ctype), | ||
| 419 | .field_name = "ctype", | ||
| 420 | .item = &ASN1_INTEGER_it, | ||
| 421 | }, | ||
| 422 | { | ||
| 423 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 424 | .tag = 1, | ||
| 425 | .offset = offsetof(KRB5_CHECKSUM, checksum), | ||
| 426 | .field_name = "checksum", | ||
| 427 | .item = &ASN1_OCTET_STRING_it, | ||
| 428 | }, | ||
| 429 | }; | ||
| 430 | |||
| 431 | const ASN1_ITEM KRB5_CHECKSUM_it = { | ||
| 432 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 433 | .utype = V_ASN1_SEQUENCE, | ||
| 434 | .templates = KRB5_CHECKSUM_seq_tt, | ||
| 435 | .tcount = sizeof(KRB5_CHECKSUM_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 436 | .funcs = NULL, | ||
| 437 | .size = sizeof(KRB5_CHECKSUM), | ||
| 438 | .sname = "KRB5_CHECKSUM", | ||
| 439 | }; | ||
| 268 | 440 | ||
| 269 | 441 | ||
| 270 | KRB5_CHECKSUM * | 442 | KRB5_CHECKSUM * |
| @@ -293,10 +465,32 @@ KRB5_CHECKSUM_free(KRB5_CHECKSUM *a) | |||
| 293 | } | 465 | } |
| 294 | 466 | ||
| 295 | 467 | ||
| 296 | ASN1_SEQUENCE(KRB5_ENCKEY) = { | 468 | static const ASN1_TEMPLATE KRB5_ENCKEY_seq_tt[] = { |
| 297 | ASN1_EXP(KRB5_ENCKEY, ktype, ASN1_INTEGER, 0), | 469 | { |
| 298 | ASN1_EXP(KRB5_ENCKEY, keyvalue, ASN1_OCTET_STRING,1) | 470 | .flags = ASN1_TFLG_EXPLICIT, |
| 299 | } ASN1_SEQUENCE_END(KRB5_ENCKEY) | 471 | .tag = 0, |
| 472 | .offset = offsetof(KRB5_ENCKEY, ktype), | ||
| 473 | .field_name = "ktype", | ||
| 474 | .item = &ASN1_INTEGER_it, | ||
| 475 | }, | ||
| 476 | { | ||
| 477 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 478 | .tag = 1, | ||
| 479 | .offset = offsetof(KRB5_ENCKEY, keyvalue), | ||
| 480 | .field_name = "keyvalue", | ||
| 481 | .item = &ASN1_OCTET_STRING_it, | ||
| 482 | }, | ||
| 483 | }; | ||
| 484 | |||
| 485 | const ASN1_ITEM KRB5_ENCKEY_it = { | ||
| 486 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 487 | .utype = V_ASN1_SEQUENCE, | ||
| 488 | .templates = KRB5_ENCKEY_seq_tt, | ||
| 489 | .tcount = sizeof(KRB5_ENCKEY_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 490 | .funcs = NULL, | ||
| 491 | .size = sizeof(KRB5_ENCKEY), | ||
| 492 | .sname = "KRB5_ENCKEY", | ||
| 493 | }; | ||
| 300 | 494 | ||
| 301 | 495 | ||
| 302 | KRB5_ENCKEY * | 496 | KRB5_ENCKEY * |
| @@ -326,10 +520,32 @@ KRB5_ENCKEY_free(KRB5_ENCKEY *a) | |||
| 326 | 520 | ||
| 327 | 521 | ||
| 328 | /* SEQ OF SEQ; see ASN1_EXP_SEQUENCE_OF_OPT() below */ | 522 | /* SEQ OF SEQ; see ASN1_EXP_SEQUENCE_OF_OPT() below */ |
| 329 | ASN1_SEQUENCE(KRB5_AUTHDATA) = { | 523 | static const ASN1_TEMPLATE KRB5_AUTHDATA_seq_tt[] = { |
| 330 | ASN1_EXP(KRB5_AUTHDATA, adtype, ASN1_INTEGER, 0), | 524 | { |
| 331 | ASN1_EXP(KRB5_AUTHDATA, addata, ASN1_OCTET_STRING,1) | 525 | .flags = ASN1_TFLG_EXPLICIT, |
| 332 | } ASN1_SEQUENCE_END(KRB5_AUTHDATA) | 526 | .tag = 0, |
| 527 | .offset = offsetof(KRB5_AUTHDATA, adtype), | ||
| 528 | .field_name = "adtype", | ||
| 529 | .item = &ASN1_INTEGER_it, | ||
| 530 | }, | ||
| 531 | { | ||
| 532 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 533 | .tag = 1, | ||
| 534 | .offset = offsetof(KRB5_AUTHDATA, addata), | ||
| 535 | .field_name = "addata", | ||
| 536 | .item = &ASN1_OCTET_STRING_it, | ||
| 537 | }, | ||
| 538 | }; | ||
| 539 | |||
| 540 | const ASN1_ITEM KRB5_AUTHDATA_it = { | ||
| 541 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 542 | .utype = V_ASN1_SEQUENCE, | ||
| 543 | .templates = KRB5_AUTHDATA_seq_tt, | ||
| 544 | .tcount = sizeof(KRB5_AUTHDATA_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 545 | .funcs = NULL, | ||
| 546 | .size = sizeof(KRB5_AUTHDATA), | ||
| 547 | .sname = "KRB5_AUTHDATA", | ||
| 548 | }; | ||
| 333 | 549 | ||
| 334 | 550 | ||
| 335 | KRB5_AUTHDATA * | 551 | KRB5_AUTHDATA * |
| @@ -359,18 +575,81 @@ KRB5_AUTHDATA_free(KRB5_AUTHDATA *a) | |||
| 359 | 575 | ||
| 360 | 576 | ||
| 361 | /* [APPLICATION 2] = 0x62 */ | 577 | /* [APPLICATION 2] = 0x62 */ |
| 362 | ASN1_SEQUENCE(KRB5_AUTHENTBODY) = { | 578 | static const ASN1_TEMPLATE KRB5_AUTHENTBODY_seq_tt[] = { |
| 363 | ASN1_EXP(KRB5_AUTHENTBODY, avno, ASN1_INTEGER, 0), | 579 | { |
| 364 | ASN1_EXP(KRB5_AUTHENTBODY, crealm, ASN1_GENERALSTRING, 1), | 580 | .flags = ASN1_TFLG_EXPLICIT, |
| 365 | ASN1_EXP(KRB5_AUTHENTBODY, cname, KRB5_PRINCNAME, 2), | 581 | .tag = 0, |
| 366 | ASN1_EXP_OPT(KRB5_AUTHENTBODY, cksum, KRB5_CHECKSUM, 3), | 582 | .offset = offsetof(KRB5_AUTHENTBODY, avno), |
| 367 | ASN1_EXP(KRB5_AUTHENTBODY, cusec, ASN1_INTEGER, 4), | 583 | .field_name = "avno", |
| 368 | ASN1_EXP(KRB5_AUTHENTBODY, ctime, ASN1_GENERALIZEDTIME, 5), | 584 | .item = &ASN1_INTEGER_it, |
| 369 | ASN1_EXP_OPT(KRB5_AUTHENTBODY, subkey, KRB5_ENCKEY, 6), | 585 | }, |
| 370 | ASN1_EXP_OPT(KRB5_AUTHENTBODY, seqnum, ASN1_INTEGER, 7), | 586 | { |
| 371 | ASN1_EXP_SEQUENCE_OF_OPT | 587 | .flags = ASN1_TFLG_EXPLICIT, |
| 372 | (KRB5_AUTHENTBODY, authorization, KRB5_AUTHDATA, 8), | 588 | .tag = 1, |
| 373 | } ASN1_SEQUENCE_END(KRB5_AUTHENTBODY) | 589 | .offset = offsetof(KRB5_AUTHENTBODY, crealm), |
| 590 | .field_name = "crealm", | ||
| 591 | .item = &ASN1_GENERALSTRING_it, | ||
| 592 | }, | ||
| 593 | { | ||
| 594 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 595 | .tag = 2, | ||
| 596 | .offset = offsetof(KRB5_AUTHENTBODY, cname), | ||
| 597 | .field_name = "cname", | ||
| 598 | .item = &KRB5_PRINCNAME_it, | ||
| 599 | }, | ||
| 600 | { | ||
| 601 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
| 602 | .tag = 3, | ||
| 603 | .offset = offsetof(KRB5_AUTHENTBODY, cksum), | ||
| 604 | .field_name = "cksum", | ||
| 605 | .item = &KRB5_CHECKSUM_it, | ||
| 606 | }, | ||
| 607 | { | ||
| 608 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 609 | .tag = 4, | ||
| 610 | .offset = offsetof(KRB5_AUTHENTBODY, cusec), | ||
| 611 | .field_name = "cusec", | ||
| 612 | .item = &ASN1_INTEGER_it, | ||
| 613 | }, | ||
| 614 | { | ||
| 615 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 616 | .tag = 5, | ||
| 617 | .offset = offsetof(KRB5_AUTHENTBODY, ctime), | ||
| 618 | .field_name = "ctime", | ||
| 619 | .item = &ASN1_GENERALIZEDTIME_it, | ||
| 620 | }, | ||
| 621 | { | ||
| 622 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
| 623 | .tag = 6, | ||
| 624 | .offset = offsetof(KRB5_AUTHENTBODY, subkey), | ||
| 625 | .field_name = "subkey", | ||
| 626 | .item = &KRB5_ENCKEY_it, | ||
| 627 | }, | ||
| 628 | { | ||
| 629 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
| 630 | .tag = 7, | ||
| 631 | .offset = offsetof(KRB5_AUTHENTBODY, seqnum), | ||
| 632 | .field_name = "seqnum", | ||
| 633 | .item = &ASN1_INTEGER_it, | ||
| 634 | }, | ||
| 635 | { | ||
| 636 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
| 637 | .tag = 8, | ||
| 638 | .offset = offsetof(KRB5_AUTHENTBODY, authorization), | ||
| 639 | .field_name = "authorization", | ||
| 640 | .item = &KRB5_AUTHDATA_it, | ||
| 641 | }, | ||
| 642 | }; | ||
| 643 | |||
| 644 | const ASN1_ITEM KRB5_AUTHENTBODY_it = { | ||
| 645 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 646 | .utype = V_ASN1_SEQUENCE, | ||
| 647 | .templates = KRB5_AUTHENTBODY_seq_tt, | ||
| 648 | .tcount = sizeof(KRB5_AUTHENTBODY_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 649 | .funcs = NULL, | ||
| 650 | .size = sizeof(KRB5_AUTHENTBODY), | ||
| 651 | .sname = "KRB5_AUTHENTBODY", | ||
| 652 | }; | ||
| 374 | 653 | ||
| 375 | 654 | ||
| 376 | KRB5_AUTHENTBODY * | 655 | KRB5_AUTHENTBODY * |
| @@ -398,10 +677,23 @@ KRB5_AUTHENTBODY_free(KRB5_AUTHENTBODY *a) | |||
| 398 | ASN1_item_free((ASN1_VALUE *)a, &KRB5_AUTHENTBODY_it); | 677 | ASN1_item_free((ASN1_VALUE *)a, &KRB5_AUTHENTBODY_it); |
| 399 | } | 678 | } |
| 400 | 679 | ||
| 401 | ASN1_ITEM_TEMPLATE(KRB5_AUTHENT) = | 680 | static const ASN1_TEMPLATE KRB5_AUTHENT_item_tt = { |
| 402 | ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_EXPTAG|ASN1_TFLG_APPLICATION, 2, | 681 | .flags = ASN1_TFLG_EXPTAG | ASN1_TFLG_APPLICATION, |
| 403 | KRB5_AUTHENT, KRB5_AUTHENTBODY) | 682 | .tag = 2, |
| 404 | ASN1_ITEM_TEMPLATE_END(KRB5_AUTHENT) | 683 | .offset = 0, |
| 684 | .field_name = "KRB5_AUTHENT", | ||
| 685 | .item = &KRB5_AUTHENTBODY_it, | ||
| 686 | }; | ||
| 687 | |||
| 688 | const ASN1_ITEM KRB5_AUTHENT_it = { | ||
| 689 | .itype = ASN1_ITYPE_PRIMITIVE, | ||
| 690 | .utype = -1, | ||
| 691 | .templates = &KRB5_AUTHENT_item_tt, | ||
| 692 | .tcount = 0, | ||
| 693 | .funcs = NULL, | ||
| 694 | .size = 0, | ||
| 695 | .sname = "KRB5_AUTHENT", | ||
| 696 | }; | ||
| 405 | 697 | ||
| 406 | 698 | ||
| 407 | KRB5_AUTHENT * | 699 | KRB5_AUTHENT * |
| @@ -428,4 +720,3 @@ KRB5_AUTHENT_free(KRB5_AUTHENT *a) | |||
| 428 | { | 720 | { |
| 429 | ASN1_item_free((ASN1_VALUE *)a, &KRB5_AUTHENT_it); | 721 | ASN1_item_free((ASN1_VALUE *)a, &KRB5_AUTHENT_it); |
| 430 | } | 722 | } |
| 431 | |||
diff --git a/src/lib/libcrypto/ocsp/ocsp_asn.c b/src/lib/libcrypto/ocsp/ocsp_asn.c index 6ca21af89a..72e7638c75 100644 --- a/src/lib/libcrypto/ocsp/ocsp_asn.c +++ b/src/lib/libcrypto/ocsp/ocsp_asn.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ocsp_asn.c,v 1.7 2015/02/09 16:04:46 jsing Exp $ */ | 1 | /* $OpenBSD: ocsp_asn.c,v 1.8 2015/07/25 14:52:47 jsing Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 2000. | 3 | * project 2000. |
| 4 | */ | 4 | */ |
| @@ -59,11 +59,39 @@ | |||
| 59 | #include <openssl/asn1t.h> | 59 | #include <openssl/asn1t.h> |
| 60 | #include <openssl/ocsp.h> | 60 | #include <openssl/ocsp.h> |
| 61 | 61 | ||
| 62 | ASN1_SEQUENCE(OCSP_SIGNATURE) = { | 62 | static const ASN1_TEMPLATE OCSP_SIGNATURE_seq_tt[] = { |
| 63 | ASN1_SIMPLE(OCSP_SIGNATURE, signatureAlgorithm, X509_ALGOR), | 63 | { |
| 64 | ASN1_SIMPLE(OCSP_SIGNATURE, signature, ASN1_BIT_STRING), | 64 | .flags = 0, |
| 65 | ASN1_EXP_SEQUENCE_OF_OPT(OCSP_SIGNATURE, certs, X509, 0) | 65 | .tag = 0, |
| 66 | } ASN1_SEQUENCE_END(OCSP_SIGNATURE) | 66 | .offset = offsetof(OCSP_SIGNATURE, signatureAlgorithm), |
| 67 | .field_name = "signatureAlgorithm", | ||
| 68 | .item = &X509_ALGOR_it, | ||
| 69 | }, | ||
| 70 | { | ||
| 71 | .flags = 0, | ||
| 72 | .tag = 0, | ||
| 73 | .offset = offsetof(OCSP_SIGNATURE, signature), | ||
| 74 | .field_name = "signature", | ||
| 75 | .item = &ASN1_BIT_STRING_it, | ||
| 76 | }, | ||
| 77 | { | ||
| 78 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
| 79 | .tag = 0, | ||
| 80 | .offset = offsetof(OCSP_SIGNATURE, certs), | ||
| 81 | .field_name = "certs", | ||
| 82 | .item = &X509_it, | ||
| 83 | }, | ||
| 84 | }; | ||
| 85 | |||
| 86 | const ASN1_ITEM OCSP_SIGNATURE_it = { | ||
| 87 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 88 | .utype = V_ASN1_SEQUENCE, | ||
| 89 | .templates = OCSP_SIGNATURE_seq_tt, | ||
| 90 | .tcount = sizeof(OCSP_SIGNATURE_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 91 | .funcs = NULL, | ||
| 92 | .size = sizeof(OCSP_SIGNATURE), | ||
| 93 | .sname = "OCSP_SIGNATURE", | ||
| 94 | }; | ||
| 67 | 95 | ||
| 68 | 96 | ||
| 69 | OCSP_SIGNATURE * | 97 | OCSP_SIGNATURE * |
| @@ -91,12 +119,46 @@ OCSP_SIGNATURE_free(OCSP_SIGNATURE *a) | |||
| 91 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_SIGNATURE_it); | 119 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_SIGNATURE_it); |
| 92 | } | 120 | } |
| 93 | 121 | ||
| 94 | ASN1_SEQUENCE(OCSP_CERTID) = { | 122 | static const ASN1_TEMPLATE OCSP_CERTID_seq_tt[] = { |
| 95 | ASN1_SIMPLE(OCSP_CERTID, hashAlgorithm, X509_ALGOR), | 123 | { |
| 96 | ASN1_SIMPLE(OCSP_CERTID, issuerNameHash, ASN1_OCTET_STRING), | 124 | .flags = 0, |
| 97 | ASN1_SIMPLE(OCSP_CERTID, issuerKeyHash, ASN1_OCTET_STRING), | 125 | .tag = 0, |
| 98 | ASN1_SIMPLE(OCSP_CERTID, serialNumber, ASN1_INTEGER) | 126 | .offset = offsetof(OCSP_CERTID, hashAlgorithm), |
| 99 | } ASN1_SEQUENCE_END(OCSP_CERTID) | 127 | .field_name = "hashAlgorithm", |
| 128 | .item = &X509_ALGOR_it, | ||
| 129 | }, | ||
| 130 | { | ||
| 131 | .flags = 0, | ||
| 132 | .tag = 0, | ||
| 133 | .offset = offsetof(OCSP_CERTID, issuerNameHash), | ||
| 134 | .field_name = "issuerNameHash", | ||
| 135 | .item = &ASN1_OCTET_STRING_it, | ||
| 136 | }, | ||
| 137 | { | ||
| 138 | .flags = 0, | ||
| 139 | .tag = 0, | ||
| 140 | .offset = offsetof(OCSP_CERTID, issuerKeyHash), | ||
| 141 | .field_name = "issuerKeyHash", | ||
| 142 | .item = &ASN1_OCTET_STRING_it, | ||
| 143 | }, | ||
| 144 | { | ||
| 145 | .flags = 0, | ||
| 146 | .tag = 0, | ||
| 147 | .offset = offsetof(OCSP_CERTID, serialNumber), | ||
| 148 | .field_name = "serialNumber", | ||
| 149 | .item = &ASN1_INTEGER_it, | ||
| 150 | }, | ||
| 151 | }; | ||
| 152 | |||
| 153 | const ASN1_ITEM OCSP_CERTID_it = { | ||
| 154 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 155 | .utype = V_ASN1_SEQUENCE, | ||
| 156 | .templates = OCSP_CERTID_seq_tt, | ||
| 157 | .tcount = sizeof(OCSP_CERTID_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 158 | .funcs = NULL, | ||
| 159 | .size = sizeof(OCSP_CERTID), | ||
| 160 | .sname = "OCSP_CERTID", | ||
| 161 | }; | ||
| 100 | 162 | ||
| 101 | 163 | ||
| 102 | OCSP_CERTID * | 164 | OCSP_CERTID * |
| @@ -124,10 +186,32 @@ OCSP_CERTID_free(OCSP_CERTID *a) | |||
| 124 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_CERTID_it); | 186 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_CERTID_it); |
| 125 | } | 187 | } |
| 126 | 188 | ||
| 127 | ASN1_SEQUENCE(OCSP_ONEREQ) = { | 189 | static const ASN1_TEMPLATE OCSP_ONEREQ_seq_tt[] = { |
| 128 | ASN1_SIMPLE(OCSP_ONEREQ, reqCert, OCSP_CERTID), | 190 | { |
| 129 | ASN1_EXP_SEQUENCE_OF_OPT(OCSP_ONEREQ, singleRequestExtensions, X509_EXTENSION, 0) | 191 | .flags = 0, |
| 130 | } ASN1_SEQUENCE_END(OCSP_ONEREQ) | 192 | .tag = 0, |
| 193 | .offset = offsetof(OCSP_ONEREQ, reqCert), | ||
| 194 | .field_name = "reqCert", | ||
| 195 | .item = &OCSP_CERTID_it, | ||
| 196 | }, | ||
| 197 | { | ||
| 198 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
| 199 | .tag = 0, | ||
| 200 | .offset = offsetof(OCSP_ONEREQ, singleRequestExtensions), | ||
| 201 | .field_name = "singleRequestExtensions", | ||
| 202 | .item = &X509_EXTENSION_it, | ||
| 203 | }, | ||
| 204 | }; | ||
| 205 | |||
| 206 | const ASN1_ITEM OCSP_ONEREQ_it = { | ||
| 207 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 208 | .utype = V_ASN1_SEQUENCE, | ||
| 209 | .templates = OCSP_ONEREQ_seq_tt, | ||
| 210 | .tcount = sizeof(OCSP_ONEREQ_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 211 | .funcs = NULL, | ||
| 212 | .size = sizeof(OCSP_ONEREQ), | ||
| 213 | .sname = "OCSP_ONEREQ", | ||
| 214 | }; | ||
| 131 | 215 | ||
| 132 | 216 | ||
| 133 | OCSP_ONEREQ * | 217 | OCSP_ONEREQ * |
| @@ -155,12 +239,46 @@ OCSP_ONEREQ_free(OCSP_ONEREQ *a) | |||
| 155 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_ONEREQ_it); | 239 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_ONEREQ_it); |
| 156 | } | 240 | } |
| 157 | 241 | ||
| 158 | ASN1_SEQUENCE(OCSP_REQINFO) = { | 242 | static const ASN1_TEMPLATE OCSP_REQINFO_seq_tt[] = { |
| 159 | ASN1_EXP_OPT(OCSP_REQINFO, version, ASN1_INTEGER, 0), | 243 | { |
| 160 | ASN1_EXP_OPT(OCSP_REQINFO, requestorName, GENERAL_NAME, 1), | 244 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, |
| 161 | ASN1_SEQUENCE_OF(OCSP_REQINFO, requestList, OCSP_ONEREQ), | 245 | .tag = 0, |
| 162 | ASN1_EXP_SEQUENCE_OF_OPT(OCSP_REQINFO, requestExtensions, X509_EXTENSION, 2) | 246 | .offset = offsetof(OCSP_REQINFO, version), |
| 163 | } ASN1_SEQUENCE_END(OCSP_REQINFO) | 247 | .field_name = "version", |
| 248 | .item = &ASN1_INTEGER_it, | ||
| 249 | }, | ||
| 250 | { | ||
| 251 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
| 252 | .tag = 1, | ||
| 253 | .offset = offsetof(OCSP_REQINFO, requestorName), | ||
| 254 | .field_name = "requestorName", | ||
| 255 | .item = &GENERAL_NAME_it, | ||
| 256 | }, | ||
| 257 | { | ||
| 258 | .flags = ASN1_TFLG_SEQUENCE_OF, | ||
| 259 | .tag = 0, | ||
| 260 | .offset = offsetof(OCSP_REQINFO, requestList), | ||
| 261 | .field_name = "requestList", | ||
| 262 | .item = &OCSP_ONEREQ_it, | ||
| 263 | }, | ||
| 264 | { | ||
| 265 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
| 266 | .tag = 2, | ||
| 267 | .offset = offsetof(OCSP_REQINFO, requestExtensions), | ||
| 268 | .field_name = "requestExtensions", | ||
| 269 | .item = &X509_EXTENSION_it, | ||
| 270 | }, | ||
| 271 | }; | ||
| 272 | |||
| 273 | const ASN1_ITEM OCSP_REQINFO_it = { | ||
| 274 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 275 | .utype = V_ASN1_SEQUENCE, | ||
| 276 | .templates = OCSP_REQINFO_seq_tt, | ||
| 277 | .tcount = sizeof(OCSP_REQINFO_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 278 | .funcs = NULL, | ||
| 279 | .size = sizeof(OCSP_REQINFO), | ||
| 280 | .sname = "OCSP_REQINFO", | ||
| 281 | }; | ||
| 164 | 282 | ||
| 165 | 283 | ||
| 166 | OCSP_REQINFO * | 284 | OCSP_REQINFO * |
| @@ -188,10 +306,32 @@ OCSP_REQINFO_free(OCSP_REQINFO *a) | |||
| 188 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_REQINFO_it); | 306 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_REQINFO_it); |
| 189 | } | 307 | } |
| 190 | 308 | ||
| 191 | ASN1_SEQUENCE(OCSP_REQUEST) = { | 309 | static const ASN1_TEMPLATE OCSP_REQUEST_seq_tt[] = { |
| 192 | ASN1_SIMPLE(OCSP_REQUEST, tbsRequest, OCSP_REQINFO), | 310 | { |
| 193 | ASN1_EXP_OPT(OCSP_REQUEST, optionalSignature, OCSP_SIGNATURE, 0) | 311 | .flags = 0, |
| 194 | } ASN1_SEQUENCE_END(OCSP_REQUEST) | 312 | .tag = 0, |
| 313 | .offset = offsetof(OCSP_REQUEST, tbsRequest), | ||
| 314 | .field_name = "tbsRequest", | ||
| 315 | .item = &OCSP_REQINFO_it, | ||
| 316 | }, | ||
| 317 | { | ||
| 318 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
| 319 | .tag = 0, | ||
| 320 | .offset = offsetof(OCSP_REQUEST, optionalSignature), | ||
| 321 | .field_name = "optionalSignature", | ||
| 322 | .item = &OCSP_SIGNATURE_it, | ||
| 323 | }, | ||
| 324 | }; | ||
| 325 | |||
| 326 | const ASN1_ITEM OCSP_REQUEST_it = { | ||
| 327 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 328 | .utype = V_ASN1_SEQUENCE, | ||
| 329 | .templates = OCSP_REQUEST_seq_tt, | ||
| 330 | .tcount = sizeof(OCSP_REQUEST_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 331 | .funcs = NULL, | ||
| 332 | .size = sizeof(OCSP_REQUEST), | ||
| 333 | .sname = "OCSP_REQUEST", | ||
| 334 | }; | ||
| 195 | 335 | ||
| 196 | 336 | ||
| 197 | OCSP_REQUEST * | 337 | OCSP_REQUEST * |
| @@ -221,10 +361,32 @@ OCSP_REQUEST_free(OCSP_REQUEST *a) | |||
| 221 | 361 | ||
| 222 | /* OCSP_RESPONSE templates */ | 362 | /* OCSP_RESPONSE templates */ |
| 223 | 363 | ||
| 224 | ASN1_SEQUENCE(OCSP_RESPBYTES) = { | 364 | static const ASN1_TEMPLATE OCSP_RESPBYTES_seq_tt[] = { |
| 225 | ASN1_SIMPLE(OCSP_RESPBYTES, responseType, ASN1_OBJECT), | 365 | { |
| 226 | ASN1_SIMPLE(OCSP_RESPBYTES, response, ASN1_OCTET_STRING) | 366 | .flags = 0, |
| 227 | } ASN1_SEQUENCE_END(OCSP_RESPBYTES) | 367 | .tag = 0, |
| 368 | .offset = offsetof(OCSP_RESPBYTES, responseType), | ||
| 369 | .field_name = "responseType", | ||
| 370 | .item = &ASN1_OBJECT_it, | ||
| 371 | }, | ||
| 372 | { | ||
| 373 | .flags = 0, | ||
| 374 | .tag = 0, | ||
| 375 | .offset = offsetof(OCSP_RESPBYTES, response), | ||
| 376 | .field_name = "response", | ||
| 377 | .item = &ASN1_OCTET_STRING_it, | ||
| 378 | }, | ||
| 379 | }; | ||
| 380 | |||
| 381 | const ASN1_ITEM OCSP_RESPBYTES_it = { | ||
| 382 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 383 | .utype = V_ASN1_SEQUENCE, | ||
| 384 | .templates = OCSP_RESPBYTES_seq_tt, | ||
| 385 | .tcount = sizeof(OCSP_RESPBYTES_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 386 | .funcs = NULL, | ||
| 387 | .size = sizeof(OCSP_RESPBYTES), | ||
| 388 | .sname = "OCSP_RESPBYTES", | ||
| 389 | }; | ||
| 228 | 390 | ||
| 229 | 391 | ||
| 230 | OCSP_RESPBYTES * | 392 | OCSP_RESPBYTES * |
| @@ -252,10 +414,32 @@ OCSP_RESPBYTES_free(OCSP_RESPBYTES *a) | |||
| 252 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPBYTES_it); | 414 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPBYTES_it); |
| 253 | } | 415 | } |
| 254 | 416 | ||
| 255 | ASN1_SEQUENCE(OCSP_RESPONSE) = { | 417 | static const ASN1_TEMPLATE OCSP_RESPONSE_seq_tt[] = { |
| 256 | ASN1_SIMPLE(OCSP_RESPONSE, responseStatus, ASN1_ENUMERATED), | 418 | { |
| 257 | ASN1_EXP_OPT(OCSP_RESPONSE, responseBytes, OCSP_RESPBYTES, 0) | 419 | .flags = 0, |
| 258 | } ASN1_SEQUENCE_END(OCSP_RESPONSE) | 420 | .tag = 0, |
| 421 | .offset = offsetof(OCSP_RESPONSE, responseStatus), | ||
| 422 | .field_name = "responseStatus", | ||
| 423 | .item = &ASN1_ENUMERATED_it, | ||
| 424 | }, | ||
| 425 | { | ||
| 426 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
| 427 | .tag = 0, | ||
| 428 | .offset = offsetof(OCSP_RESPONSE, responseBytes), | ||
| 429 | .field_name = "responseBytes", | ||
| 430 | .item = &OCSP_RESPBYTES_it, | ||
| 431 | }, | ||
| 432 | }; | ||
| 433 | |||
| 434 | const ASN1_ITEM OCSP_RESPONSE_it = { | ||
| 435 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 436 | .utype = V_ASN1_SEQUENCE, | ||
| 437 | .templates = OCSP_RESPONSE_seq_tt, | ||
| 438 | .tcount = sizeof(OCSP_RESPONSE_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 439 | .funcs = NULL, | ||
| 440 | .size = sizeof(OCSP_RESPONSE), | ||
| 441 | .sname = "OCSP_RESPONSE", | ||
| 442 | }; | ||
| 259 | 443 | ||
| 260 | 444 | ||
| 261 | OCSP_RESPONSE * | 445 | OCSP_RESPONSE * |
| @@ -283,10 +467,32 @@ OCSP_RESPONSE_free(OCSP_RESPONSE *a) | |||
| 283 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPONSE_it); | 467 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPONSE_it); |
| 284 | } | 468 | } |
| 285 | 469 | ||
| 286 | ASN1_CHOICE(OCSP_RESPID) = { | 470 | static const ASN1_TEMPLATE OCSP_RESPID_ch_tt[] = { |
| 287 | ASN1_EXP(OCSP_RESPID, value.byName, X509_NAME, 1), | 471 | { |
| 288 | ASN1_EXP(OCSP_RESPID, value.byKey, ASN1_OCTET_STRING, 2) | 472 | .flags = ASN1_TFLG_EXPLICIT, |
| 289 | } ASN1_CHOICE_END(OCSP_RESPID) | 473 | .tag = 1, |
| 474 | .offset = offsetof(OCSP_RESPID, value.byName), | ||
| 475 | .field_name = "value.byName", | ||
| 476 | .item = &X509_NAME_it, | ||
| 477 | }, | ||
| 478 | { | ||
| 479 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 480 | .tag = 2, | ||
| 481 | .offset = offsetof(OCSP_RESPID, value.byKey), | ||
| 482 | .field_name = "value.byKey", | ||
| 483 | .item = &ASN1_OCTET_STRING_it, | ||
| 484 | }, | ||
| 485 | }; | ||
| 486 | |||
| 487 | const ASN1_ITEM OCSP_RESPID_it = { | ||
| 488 | .itype = ASN1_ITYPE_CHOICE, | ||
| 489 | .utype = offsetof(OCSP_RESPID, type), | ||
| 490 | .templates = OCSP_RESPID_ch_tt, | ||
| 491 | .tcount = sizeof(OCSP_RESPID_ch_tt) / sizeof(ASN1_TEMPLATE), | ||
| 492 | .funcs = NULL, | ||
| 493 | .size = sizeof(OCSP_RESPID), | ||
| 494 | .sname = "OCSP_RESPID", | ||
| 495 | }; | ||
| 290 | 496 | ||
| 291 | 497 | ||
| 292 | OCSP_RESPID * | 498 | OCSP_RESPID * |
| @@ -314,10 +520,32 @@ OCSP_RESPID_free(OCSP_RESPID *a) | |||
| 314 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPID_it); | 520 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPID_it); |
| 315 | } | 521 | } |
| 316 | 522 | ||
| 317 | ASN1_SEQUENCE(OCSP_REVOKEDINFO) = { | 523 | static const ASN1_TEMPLATE OCSP_REVOKEDINFO_seq_tt[] = { |
| 318 | ASN1_SIMPLE(OCSP_REVOKEDINFO, revocationTime, ASN1_GENERALIZEDTIME), | 524 | { |
| 319 | ASN1_EXP_OPT(OCSP_REVOKEDINFO, revocationReason, ASN1_ENUMERATED, 0) | 525 | .flags = 0, |
| 320 | } ASN1_SEQUENCE_END(OCSP_REVOKEDINFO) | 526 | .tag = 0, |
| 527 | .offset = offsetof(OCSP_REVOKEDINFO, revocationTime), | ||
| 528 | .field_name = "revocationTime", | ||
| 529 | .item = &ASN1_GENERALIZEDTIME_it, | ||
| 530 | }, | ||
| 531 | { | ||
| 532 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
| 533 | .tag = 0, | ||
| 534 | .offset = offsetof(OCSP_REVOKEDINFO, revocationReason), | ||
| 535 | .field_name = "revocationReason", | ||
| 536 | .item = &ASN1_ENUMERATED_it, | ||
| 537 | }, | ||
| 538 | }; | ||
| 539 | |||
| 540 | const ASN1_ITEM OCSP_REVOKEDINFO_it = { | ||
| 541 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 542 | .utype = V_ASN1_SEQUENCE, | ||
| 543 | .templates = OCSP_REVOKEDINFO_seq_tt, | ||
| 544 | .tcount = sizeof(OCSP_REVOKEDINFO_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 545 | .funcs = NULL, | ||
| 546 | .size = sizeof(OCSP_REVOKEDINFO), | ||
| 547 | .sname = "OCSP_REVOKEDINFO", | ||
| 548 | }; | ||
| 321 | 549 | ||
| 322 | 550 | ||
| 323 | OCSP_REVOKEDINFO * | 551 | OCSP_REVOKEDINFO * |
| @@ -345,11 +573,39 @@ OCSP_REVOKEDINFO_free(OCSP_REVOKEDINFO *a) | |||
| 345 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_REVOKEDINFO_it); | 573 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_REVOKEDINFO_it); |
| 346 | } | 574 | } |
| 347 | 575 | ||
| 348 | ASN1_CHOICE(OCSP_CERTSTATUS) = { | 576 | static const ASN1_TEMPLATE OCSP_CERTSTATUS_ch_tt[] = { |
| 349 | ASN1_IMP(OCSP_CERTSTATUS, value.good, ASN1_NULL, 0), | 577 | { |
| 350 | ASN1_IMP(OCSP_CERTSTATUS, value.revoked, OCSP_REVOKEDINFO, 1), | 578 | .flags = ASN1_TFLG_IMPLICIT, |
| 351 | ASN1_IMP(OCSP_CERTSTATUS, value.unknown, ASN1_NULL, 2) | 579 | .tag = 0, |
| 352 | } ASN1_CHOICE_END(OCSP_CERTSTATUS) | 580 | .offset = offsetof(OCSP_CERTSTATUS, value.good), |
| 581 | .field_name = "value.good", | ||
| 582 | .item = &ASN1_NULL_it, | ||
| 583 | }, | ||
| 584 | { | ||
| 585 | .flags = ASN1_TFLG_IMPLICIT, | ||
| 586 | .tag = 1, | ||
| 587 | .offset = offsetof(OCSP_CERTSTATUS, value.revoked), | ||
| 588 | .field_name = "value.revoked", | ||
| 589 | .item = &OCSP_REVOKEDINFO_it, | ||
| 590 | }, | ||
| 591 | { | ||
| 592 | .flags = ASN1_TFLG_IMPLICIT, | ||
| 593 | .tag = 2, | ||
| 594 | .offset = offsetof(OCSP_CERTSTATUS, value.unknown), | ||
| 595 | .field_name = "value.unknown", | ||
| 596 | .item = &ASN1_NULL_it, | ||
| 597 | }, | ||
| 598 | }; | ||
| 599 | |||
| 600 | const ASN1_ITEM OCSP_CERTSTATUS_it = { | ||
| 601 | .itype = ASN1_ITYPE_CHOICE, | ||
| 602 | .utype = offsetof(OCSP_CERTSTATUS, type), | ||
| 603 | .templates = OCSP_CERTSTATUS_ch_tt, | ||
| 604 | .tcount = sizeof(OCSP_CERTSTATUS_ch_tt) / sizeof(ASN1_TEMPLATE), | ||
| 605 | .funcs = NULL, | ||
| 606 | .size = sizeof(OCSP_CERTSTATUS), | ||
| 607 | .sname = "OCSP_CERTSTATUS", | ||
| 608 | }; | ||
| 353 | 609 | ||
| 354 | 610 | ||
| 355 | OCSP_CERTSTATUS * | 611 | OCSP_CERTSTATUS * |
| @@ -377,13 +633,53 @@ OCSP_CERTSTATUS_free(OCSP_CERTSTATUS *a) | |||
| 377 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_CERTSTATUS_it); | 633 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_CERTSTATUS_it); |
| 378 | } | 634 | } |
| 379 | 635 | ||
| 380 | ASN1_SEQUENCE(OCSP_SINGLERESP) = { | 636 | static const ASN1_TEMPLATE OCSP_SINGLERESP_seq_tt[] = { |
| 381 | ASN1_SIMPLE(OCSP_SINGLERESP, certId, OCSP_CERTID), | 637 | { |
| 382 | ASN1_SIMPLE(OCSP_SINGLERESP, certStatus, OCSP_CERTSTATUS), | 638 | .flags = 0, |
| 383 | ASN1_SIMPLE(OCSP_SINGLERESP, thisUpdate, ASN1_GENERALIZEDTIME), | 639 | .tag = 0, |
| 384 | ASN1_EXP_OPT(OCSP_SINGLERESP, nextUpdate, ASN1_GENERALIZEDTIME, 0), | 640 | .offset = offsetof(OCSP_SINGLERESP, certId), |
| 385 | ASN1_EXP_SEQUENCE_OF_OPT(OCSP_SINGLERESP, singleExtensions, X509_EXTENSION, 1) | 641 | .field_name = "certId", |
| 386 | } ASN1_SEQUENCE_END(OCSP_SINGLERESP) | 642 | .item = &OCSP_CERTID_it, |
| 643 | }, | ||
| 644 | { | ||
| 645 | .flags = 0, | ||
| 646 | .tag = 0, | ||
| 647 | .offset = offsetof(OCSP_SINGLERESP, certStatus), | ||
| 648 | .field_name = "certStatus", | ||
| 649 | .item = &OCSP_CERTSTATUS_it, | ||
| 650 | }, | ||
| 651 | { | ||
| 652 | .flags = 0, | ||
| 653 | .tag = 0, | ||
| 654 | .offset = offsetof(OCSP_SINGLERESP, thisUpdate), | ||
| 655 | .field_name = "thisUpdate", | ||
| 656 | .item = &ASN1_GENERALIZEDTIME_it, | ||
| 657 | }, | ||
| 658 | { | ||
| 659 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
| 660 | .tag = 0, | ||
| 661 | .offset = offsetof(OCSP_SINGLERESP, nextUpdate), | ||
| 662 | .field_name = "nextUpdate", | ||
| 663 | .item = &ASN1_GENERALIZEDTIME_it, | ||
| 664 | }, | ||
| 665 | { | ||
| 666 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
| 667 | .tag = 1, | ||
| 668 | .offset = offsetof(OCSP_SINGLERESP, singleExtensions), | ||
| 669 | .field_name = "singleExtensions", | ||
| 670 | .item = &X509_EXTENSION_it, | ||
| 671 | }, | ||
| 672 | }; | ||
| 673 | |||
| 674 | const ASN1_ITEM OCSP_SINGLERESP_it = { | ||
| 675 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 676 | .utype = V_ASN1_SEQUENCE, | ||
| 677 | .templates = OCSP_SINGLERESP_seq_tt, | ||
| 678 | .tcount = sizeof(OCSP_SINGLERESP_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 679 | .funcs = NULL, | ||
| 680 | .size = sizeof(OCSP_SINGLERESP), | ||
| 681 | .sname = "OCSP_SINGLERESP", | ||
| 682 | }; | ||
| 387 | 683 | ||
| 388 | 684 | ||
| 389 | OCSP_SINGLERESP * | 685 | OCSP_SINGLERESP * |
| @@ -411,13 +707,53 @@ OCSP_SINGLERESP_free(OCSP_SINGLERESP *a) | |||
| 411 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_SINGLERESP_it); | 707 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_SINGLERESP_it); |
| 412 | } | 708 | } |
| 413 | 709 | ||
| 414 | ASN1_SEQUENCE(OCSP_RESPDATA) = { | 710 | static const ASN1_TEMPLATE OCSP_RESPDATA_seq_tt[] = { |
| 415 | ASN1_EXP_OPT(OCSP_RESPDATA, version, ASN1_INTEGER, 0), | 711 | { |
| 416 | ASN1_SIMPLE(OCSP_RESPDATA, responderId, OCSP_RESPID), | 712 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, |
| 417 | ASN1_SIMPLE(OCSP_RESPDATA, producedAt, ASN1_GENERALIZEDTIME), | 713 | .tag = 0, |
| 418 | ASN1_SEQUENCE_OF(OCSP_RESPDATA, responses, OCSP_SINGLERESP), | 714 | .offset = offsetof(OCSP_RESPDATA, version), |
| 419 | ASN1_EXP_SEQUENCE_OF_OPT(OCSP_RESPDATA, responseExtensions, X509_EXTENSION, 1) | 715 | .field_name = "version", |
| 420 | } ASN1_SEQUENCE_END(OCSP_RESPDATA) | 716 | .item = &ASN1_INTEGER_it, |
| 717 | }, | ||
| 718 | { | ||
| 719 | .flags = 0, | ||
| 720 | .tag = 0, | ||
| 721 | .offset = offsetof(OCSP_RESPDATA, responderId), | ||
| 722 | .field_name = "responderId", | ||
| 723 | .item = &OCSP_RESPID_it, | ||
| 724 | }, | ||
| 725 | { | ||
| 726 | .flags = 0, | ||
| 727 | .tag = 0, | ||
| 728 | .offset = offsetof(OCSP_RESPDATA, producedAt), | ||
| 729 | .field_name = "producedAt", | ||
| 730 | .item = &ASN1_GENERALIZEDTIME_it, | ||
| 731 | }, | ||
| 732 | { | ||
| 733 | .flags = ASN1_TFLG_SEQUENCE_OF, | ||
| 734 | .tag = 0, | ||
| 735 | .offset = offsetof(OCSP_RESPDATA, responses), | ||
| 736 | .field_name = "responses", | ||
| 737 | .item = &OCSP_SINGLERESP_it, | ||
| 738 | }, | ||
| 739 | { | ||
| 740 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
| 741 | .tag = 1, | ||
| 742 | .offset = offsetof(OCSP_RESPDATA, responseExtensions), | ||
| 743 | .field_name = "responseExtensions", | ||
| 744 | .item = &X509_EXTENSION_it, | ||
| 745 | }, | ||
| 746 | }; | ||
| 747 | |||
| 748 | const ASN1_ITEM OCSP_RESPDATA_it = { | ||
| 749 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 750 | .utype = V_ASN1_SEQUENCE, | ||
| 751 | .templates = OCSP_RESPDATA_seq_tt, | ||
| 752 | .tcount = sizeof(OCSP_RESPDATA_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 753 | .funcs = NULL, | ||
| 754 | .size = sizeof(OCSP_RESPDATA), | ||
| 755 | .sname = "OCSP_RESPDATA", | ||
| 756 | }; | ||
| 421 | 757 | ||
| 422 | 758 | ||
| 423 | OCSP_RESPDATA * | 759 | OCSP_RESPDATA * |
| @@ -445,12 +781,46 @@ OCSP_RESPDATA_free(OCSP_RESPDATA *a) | |||
| 445 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPDATA_it); | 781 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPDATA_it); |
| 446 | } | 782 | } |
| 447 | 783 | ||
| 448 | ASN1_SEQUENCE(OCSP_BASICRESP) = { | 784 | static const ASN1_TEMPLATE OCSP_BASICRESP_seq_tt[] = { |
| 449 | ASN1_SIMPLE(OCSP_BASICRESP, tbsResponseData, OCSP_RESPDATA), | 785 | { |
| 450 | ASN1_SIMPLE(OCSP_BASICRESP, signatureAlgorithm, X509_ALGOR), | 786 | .flags = 0, |
| 451 | ASN1_SIMPLE(OCSP_BASICRESP, signature, ASN1_BIT_STRING), | 787 | .tag = 0, |
| 452 | ASN1_EXP_SEQUENCE_OF_OPT(OCSP_BASICRESP, certs, X509, 0) | 788 | .offset = offsetof(OCSP_BASICRESP, tbsResponseData), |
| 453 | } ASN1_SEQUENCE_END(OCSP_BASICRESP) | 789 | .field_name = "tbsResponseData", |
| 790 | .item = &OCSP_RESPDATA_it, | ||
| 791 | }, | ||
| 792 | { | ||
| 793 | .flags = 0, | ||
| 794 | .tag = 0, | ||
| 795 | .offset = offsetof(OCSP_BASICRESP, signatureAlgorithm), | ||
| 796 | .field_name = "signatureAlgorithm", | ||
| 797 | .item = &X509_ALGOR_it, | ||
| 798 | }, | ||
| 799 | { | ||
| 800 | .flags = 0, | ||
| 801 | .tag = 0, | ||
| 802 | .offset = offsetof(OCSP_BASICRESP, signature), | ||
| 803 | .field_name = "signature", | ||
| 804 | .item = &ASN1_BIT_STRING_it, | ||
| 805 | }, | ||
| 806 | { | ||
| 807 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
| 808 | .tag = 0, | ||
| 809 | .offset = offsetof(OCSP_BASICRESP, certs), | ||
| 810 | .field_name = "certs", | ||
| 811 | .item = &X509_it, | ||
| 812 | }, | ||
| 813 | }; | ||
| 814 | |||
| 815 | const ASN1_ITEM OCSP_BASICRESP_it = { | ||
| 816 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 817 | .utype = V_ASN1_SEQUENCE, | ||
| 818 | .templates = OCSP_BASICRESP_seq_tt, | ||
| 819 | .tcount = sizeof(OCSP_BASICRESP_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 820 | .funcs = NULL, | ||
| 821 | .size = sizeof(OCSP_BASICRESP), | ||
| 822 | .sname = "OCSP_BASICRESP", | ||
| 823 | }; | ||
| 454 | 824 | ||
| 455 | 825 | ||
| 456 | OCSP_BASICRESP * | 826 | OCSP_BASICRESP * |
| @@ -478,11 +848,39 @@ OCSP_BASICRESP_free(OCSP_BASICRESP *a) | |||
| 478 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_BASICRESP_it); | 848 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_BASICRESP_it); |
| 479 | } | 849 | } |
| 480 | 850 | ||
| 481 | ASN1_SEQUENCE(OCSP_CRLID) = { | 851 | static const ASN1_TEMPLATE OCSP_CRLID_seq_tt[] = { |
| 482 | ASN1_EXP_OPT(OCSP_CRLID, crlUrl, ASN1_IA5STRING, 0), | 852 | { |
| 483 | ASN1_EXP_OPT(OCSP_CRLID, crlNum, ASN1_INTEGER, 1), | 853 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, |
| 484 | ASN1_EXP_OPT(OCSP_CRLID, crlTime, ASN1_GENERALIZEDTIME, 2) | 854 | .tag = 0, |
| 485 | } ASN1_SEQUENCE_END(OCSP_CRLID) | 855 | .offset = offsetof(OCSP_CRLID, crlUrl), |
| 856 | .field_name = "crlUrl", | ||
| 857 | .item = &ASN1_IA5STRING_it, | ||
| 858 | }, | ||
| 859 | { | ||
| 860 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
| 861 | .tag = 1, | ||
| 862 | .offset = offsetof(OCSP_CRLID, crlNum), | ||
| 863 | .field_name = "crlNum", | ||
| 864 | .item = &ASN1_INTEGER_it, | ||
| 865 | }, | ||
| 866 | { | ||
| 867 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
| 868 | .tag = 2, | ||
| 869 | .offset = offsetof(OCSP_CRLID, crlTime), | ||
| 870 | .field_name = "crlTime", | ||
| 871 | .item = &ASN1_GENERALIZEDTIME_it, | ||
| 872 | }, | ||
| 873 | }; | ||
| 874 | |||
| 875 | const ASN1_ITEM OCSP_CRLID_it = { | ||
| 876 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 877 | .utype = V_ASN1_SEQUENCE, | ||
| 878 | .templates = OCSP_CRLID_seq_tt, | ||
| 879 | .tcount = sizeof(OCSP_CRLID_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 880 | .funcs = NULL, | ||
| 881 | .size = sizeof(OCSP_CRLID), | ||
| 882 | .sname = "OCSP_CRLID", | ||
| 883 | }; | ||
| 486 | 884 | ||
| 487 | 885 | ||
| 488 | OCSP_CRLID * | 886 | OCSP_CRLID * |
| @@ -510,10 +908,32 @@ OCSP_CRLID_free(OCSP_CRLID *a) | |||
| 510 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_CRLID_it); | 908 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_CRLID_it); |
| 511 | } | 909 | } |
| 512 | 910 | ||
| 513 | ASN1_SEQUENCE(OCSP_SERVICELOC) = { | 911 | static const ASN1_TEMPLATE OCSP_SERVICELOC_seq_tt[] = { |
| 514 | ASN1_SIMPLE(OCSP_SERVICELOC, issuer, X509_NAME), | 912 | { |
| 515 | ASN1_SEQUENCE_OF_OPT(OCSP_SERVICELOC, locator, ACCESS_DESCRIPTION) | 913 | .flags = 0, |
| 516 | } ASN1_SEQUENCE_END(OCSP_SERVICELOC) | 914 | .tag = 0, |
| 915 | .offset = offsetof(OCSP_SERVICELOC, issuer), | ||
| 916 | .field_name = "issuer", | ||
| 917 | .item = &X509_NAME_it, | ||
| 918 | }, | ||
| 919 | { | ||
| 920 | .flags = ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
| 921 | .tag = 0, | ||
| 922 | .offset = offsetof(OCSP_SERVICELOC, locator), | ||
| 923 | .field_name = "locator", | ||
| 924 | .item = &ACCESS_DESCRIPTION_it, | ||
| 925 | }, | ||
| 926 | }; | ||
| 927 | |||
| 928 | const ASN1_ITEM OCSP_SERVICELOC_it = { | ||
| 929 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 930 | .utype = V_ASN1_SEQUENCE, | ||
| 931 | .templates = OCSP_SERVICELOC_seq_tt, | ||
| 932 | .tcount = sizeof(OCSP_SERVICELOC_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 933 | .funcs = NULL, | ||
| 934 | .size = sizeof(OCSP_SERVICELOC), | ||
| 935 | .sname = "OCSP_SERVICELOC", | ||
| 936 | }; | ||
| 517 | 937 | ||
| 518 | 938 | ||
| 519 | OCSP_SERVICELOC * | 939 | OCSP_SERVICELOC * |
diff --git a/src/lib/libssl/src/crypto/krb5/krb5_asn.c b/src/lib/libssl/src/crypto/krb5/krb5_asn.c index 1a95e62935..4713fce37b 100644 --- a/src/lib/libssl/src/crypto/krb5/krb5_asn.c +++ b/src/lib/libssl/src/crypto/krb5/krb5_asn.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: krb5_asn.c,v 1.3 2015/02/09 16:04:46 jsing Exp $ */ | 1 | /* $OpenBSD: krb5_asn.c,v 1.4 2015/07/25 14:49:45 jsing Exp $ */ |
| 2 | /* Written by Vern Staats <staatsvr@asc.hpc.mil> for the OpenSSL project, | 2 | /* Written by Vern Staats <staatsvr@asc.hpc.mil> for the OpenSSL project, |
| 3 | ** using ocsp/{*.h,*asn*.c} as a starting point | 3 | ** using ocsp/{*.h,*asn*.c} as a starting point |
| 4 | */ | 4 | */ |
| @@ -60,11 +60,39 @@ | |||
| 60 | #include <openssl/krb5_asn.h> | 60 | #include <openssl/krb5_asn.h> |
| 61 | 61 | ||
| 62 | 62 | ||
| 63 | ASN1_SEQUENCE(KRB5_ENCDATA) = { | 63 | static const ASN1_TEMPLATE KRB5_ENCDATA_seq_tt[] = { |
| 64 | ASN1_EXP(KRB5_ENCDATA, etype, ASN1_INTEGER, 0), | 64 | { |
| 65 | ASN1_EXP_OPT(KRB5_ENCDATA, kvno, ASN1_INTEGER, 1), | 65 | .flags = ASN1_TFLG_EXPLICIT, |
| 66 | ASN1_EXP(KRB5_ENCDATA, cipher, ASN1_OCTET_STRING,2) | 66 | .tag = 0, |
| 67 | } ASN1_SEQUENCE_END(KRB5_ENCDATA) | 67 | .offset = offsetof(KRB5_ENCDATA, etype), |
| 68 | .field_name = "etype", | ||
| 69 | .item = &ASN1_INTEGER_it, | ||
| 70 | }, | ||
| 71 | { | ||
| 72 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
| 73 | .tag = 1, | ||
| 74 | .offset = offsetof(KRB5_ENCDATA, kvno), | ||
| 75 | .field_name = "kvno", | ||
| 76 | .item = &ASN1_INTEGER_it, | ||
| 77 | }, | ||
| 78 | { | ||
| 79 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 80 | .tag = 2, | ||
| 81 | .offset = offsetof(KRB5_ENCDATA, cipher), | ||
| 82 | .field_name = "cipher", | ||
| 83 | .item = &ASN1_OCTET_STRING_it, | ||
| 84 | }, | ||
| 85 | }; | ||
| 86 | |||
| 87 | const ASN1_ITEM KRB5_ENCDATA_it = { | ||
| 88 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 89 | .utype = V_ASN1_SEQUENCE, | ||
| 90 | .templates = KRB5_ENCDATA_seq_tt, | ||
| 91 | .tcount = sizeof(KRB5_ENCDATA_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 92 | .funcs = NULL, | ||
| 93 | .size = sizeof(KRB5_ENCDATA), | ||
| 94 | .sname = "KRB5_ENCDATA", | ||
| 95 | }; | ||
| 68 | 96 | ||
| 69 | 97 | ||
| 70 | KRB5_ENCDATA * | 98 | KRB5_ENCDATA * |
| @@ -93,10 +121,32 @@ KRB5_ENCDATA_free(KRB5_ENCDATA *a) | |||
| 93 | } | 121 | } |
| 94 | 122 | ||
| 95 | 123 | ||
| 96 | ASN1_SEQUENCE(KRB5_PRINCNAME) = { | 124 | static const ASN1_TEMPLATE KRB5_PRINCNAME_seq_tt[] = { |
| 97 | ASN1_EXP(KRB5_PRINCNAME, nametype, ASN1_INTEGER, 0), | 125 | { |
| 98 | ASN1_EXP_SEQUENCE_OF(KRB5_PRINCNAME, namestring, ASN1_GENERALSTRING, 1) | 126 | .flags = ASN1_TFLG_EXPLICIT, |
| 99 | } ASN1_SEQUENCE_END(KRB5_PRINCNAME) | 127 | .tag = 0, |
| 128 | .offset = offsetof(KRB5_PRINCNAME, nametype), | ||
| 129 | .field_name = "nametype", | ||
| 130 | .item = &ASN1_INTEGER_it, | ||
| 131 | }, | ||
| 132 | { | ||
| 133 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF, | ||
| 134 | .tag = 1, | ||
| 135 | .offset = offsetof(KRB5_PRINCNAME, namestring), | ||
| 136 | .field_name = "namestring", | ||
| 137 | .item = &ASN1_GENERALSTRING_it, | ||
| 138 | }, | ||
| 139 | }; | ||
| 140 | |||
| 141 | const ASN1_ITEM KRB5_PRINCNAME_it = { | ||
| 142 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 143 | .utype = V_ASN1_SEQUENCE, | ||
| 144 | .templates = KRB5_PRINCNAME_seq_tt, | ||
| 145 | .tcount = sizeof(KRB5_PRINCNAME_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 146 | .funcs = NULL, | ||
| 147 | .size = sizeof(KRB5_PRINCNAME), | ||
| 148 | .sname = "KRB5_PRINCNAME", | ||
| 149 | }; | ||
| 100 | 150 | ||
| 101 | 151 | ||
| 102 | KRB5_PRINCNAME * | 152 | KRB5_PRINCNAME * |
| @@ -126,12 +176,46 @@ KRB5_PRINCNAME_free(KRB5_PRINCNAME *a) | |||
| 126 | 176 | ||
| 127 | 177 | ||
| 128 | /* [APPLICATION 1] = 0x61 */ | 178 | /* [APPLICATION 1] = 0x61 */ |
| 129 | ASN1_SEQUENCE(KRB5_TKTBODY) = { | 179 | static const ASN1_TEMPLATE KRB5_TKTBODY_seq_tt[] = { |
| 130 | ASN1_EXP(KRB5_TKTBODY, tktvno, ASN1_INTEGER, 0), | 180 | { |
| 131 | ASN1_EXP(KRB5_TKTBODY, realm, ASN1_GENERALSTRING, 1), | 181 | .flags = ASN1_TFLG_EXPLICIT, |
| 132 | ASN1_EXP(KRB5_TKTBODY, sname, KRB5_PRINCNAME, 2), | 182 | .tag = 0, |
| 133 | ASN1_EXP(KRB5_TKTBODY, encdata, KRB5_ENCDATA, 3) | 183 | .offset = offsetof(KRB5_TKTBODY, tktvno), |
| 134 | } ASN1_SEQUENCE_END(KRB5_TKTBODY) | 184 | .field_name = "tktvno", |
| 185 | .item = &ASN1_INTEGER_it, | ||
| 186 | }, | ||
| 187 | { | ||
| 188 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 189 | .tag = 1, | ||
| 190 | .offset = offsetof(KRB5_TKTBODY, realm), | ||
| 191 | .field_name = "realm", | ||
| 192 | .item = &ASN1_GENERALSTRING_it, | ||
| 193 | }, | ||
| 194 | { | ||
| 195 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 196 | .tag = 2, | ||
| 197 | .offset = offsetof(KRB5_TKTBODY, sname), | ||
| 198 | .field_name = "sname", | ||
| 199 | .item = &KRB5_PRINCNAME_it, | ||
| 200 | }, | ||
| 201 | { | ||
| 202 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 203 | .tag = 3, | ||
| 204 | .offset = offsetof(KRB5_TKTBODY, encdata), | ||
| 205 | .field_name = "encdata", | ||
| 206 | .item = &KRB5_ENCDATA_it, | ||
| 207 | }, | ||
| 208 | }; | ||
| 209 | |||
| 210 | const ASN1_ITEM KRB5_TKTBODY_it = { | ||
| 211 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 212 | .utype = V_ASN1_SEQUENCE, | ||
| 213 | .templates = KRB5_TKTBODY_seq_tt, | ||
| 214 | .tcount = sizeof(KRB5_TKTBODY_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 215 | .funcs = NULL, | ||
| 216 | .size = sizeof(KRB5_TKTBODY), | ||
| 217 | .sname = "KRB5_TKTBODY", | ||
| 218 | }; | ||
| 135 | 219 | ||
| 136 | 220 | ||
| 137 | KRB5_TKTBODY * | 221 | KRB5_TKTBODY * |
| @@ -160,10 +244,23 @@ KRB5_TKTBODY_free(KRB5_TKTBODY *a) | |||
| 160 | } | 244 | } |
| 161 | 245 | ||
| 162 | 246 | ||
| 163 | ASN1_ITEM_TEMPLATE(KRB5_TICKET) = | 247 | static const ASN1_TEMPLATE KRB5_TICKET_item_tt = { |
| 164 | ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_EXPTAG|ASN1_TFLG_APPLICATION, 1, | 248 | .flags = ASN1_TFLG_EXPTAG | ASN1_TFLG_APPLICATION, |
| 165 | KRB5_TICKET, KRB5_TKTBODY) | 249 | .tag = 1, |
| 166 | ASN1_ITEM_TEMPLATE_END(KRB5_TICKET) | 250 | .offset = 0, |
| 251 | .field_name = "KRB5_TICKET", | ||
| 252 | .item = &KRB5_TKTBODY_it, | ||
| 253 | }; | ||
| 254 | |||
| 255 | const ASN1_ITEM KRB5_TICKET_it = { | ||
| 256 | .itype = ASN1_ITYPE_PRIMITIVE, | ||
| 257 | .utype = -1, | ||
| 258 | .templates = &KRB5_TICKET_item_tt, | ||
| 259 | .tcount = 0, | ||
| 260 | .funcs = NULL, | ||
| 261 | .size = 0, | ||
| 262 | .sname = "KRB5_TICKET", | ||
| 263 | }; | ||
| 167 | 264 | ||
| 168 | 265 | ||
| 169 | KRB5_TICKET * | 266 | KRB5_TICKET * |
| @@ -193,13 +290,53 @@ KRB5_TICKET_free(KRB5_TICKET *a) | |||
| 193 | 290 | ||
| 194 | 291 | ||
| 195 | /* [APPLICATION 14] = 0x6e */ | 292 | /* [APPLICATION 14] = 0x6e */ |
| 196 | ASN1_SEQUENCE(KRB5_APREQBODY) = { | 293 | static const ASN1_TEMPLATE KRB5_APREQBODY_seq_tt[] = { |
| 197 | ASN1_EXP(KRB5_APREQBODY, pvno, ASN1_INTEGER, 0), | 294 | { |
| 198 | ASN1_EXP(KRB5_APREQBODY, msgtype, ASN1_INTEGER, 1), | 295 | .flags = ASN1_TFLG_EXPLICIT, |
| 199 | ASN1_EXP(KRB5_APREQBODY, apoptions, ASN1_BIT_STRING, 2), | 296 | .tag = 0, |
| 200 | ASN1_EXP(KRB5_APREQBODY, ticket, KRB5_TICKET, 3), | 297 | .offset = offsetof(KRB5_APREQBODY, pvno), |
| 201 | ASN1_EXP(KRB5_APREQBODY, authenticator, KRB5_ENCDATA, 4), | 298 | .field_name = "pvno", |
| 202 | } ASN1_SEQUENCE_END(KRB5_APREQBODY) | 299 | .item = &ASN1_INTEGER_it, |
| 300 | }, | ||
| 301 | { | ||
| 302 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 303 | .tag = 1, | ||
| 304 | .offset = offsetof(KRB5_APREQBODY, msgtype), | ||
| 305 | .field_name = "msgtype", | ||
| 306 | .item = &ASN1_INTEGER_it, | ||
| 307 | }, | ||
| 308 | { | ||
| 309 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 310 | .tag = 2, | ||
| 311 | .offset = offsetof(KRB5_APREQBODY, apoptions), | ||
| 312 | .field_name = "apoptions", | ||
| 313 | .item = &ASN1_BIT_STRING_it, | ||
| 314 | }, | ||
| 315 | { | ||
| 316 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 317 | .tag = 3, | ||
| 318 | .offset = offsetof(KRB5_APREQBODY, ticket), | ||
| 319 | .field_name = "ticket", | ||
| 320 | .item = &KRB5_TICKET_it, | ||
| 321 | }, | ||
| 322 | { | ||
| 323 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 324 | .tag = 4, | ||
| 325 | .offset = offsetof(KRB5_APREQBODY, authenticator), | ||
| 326 | .field_name = "authenticator", | ||
| 327 | .item = &KRB5_ENCDATA_it, | ||
| 328 | }, | ||
| 329 | }; | ||
| 330 | |||
| 331 | const ASN1_ITEM KRB5_APREQBODY_it = { | ||
| 332 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 333 | .utype = V_ASN1_SEQUENCE, | ||
| 334 | .templates = KRB5_APREQBODY_seq_tt, | ||
| 335 | .tcount = sizeof(KRB5_APREQBODY_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 336 | .funcs = NULL, | ||
| 337 | .size = sizeof(KRB5_APREQBODY), | ||
| 338 | .sname = "KRB5_APREQBODY", | ||
| 339 | }; | ||
| 203 | 340 | ||
| 204 | 341 | ||
| 205 | KRB5_APREQBODY * | 342 | KRB5_APREQBODY * |
| @@ -227,10 +364,23 @@ KRB5_APREQBODY_free(KRB5_APREQBODY *a) | |||
| 227 | ASN1_item_free((ASN1_VALUE *)a, &KRB5_APREQBODY_it); | 364 | ASN1_item_free((ASN1_VALUE *)a, &KRB5_APREQBODY_it); |
| 228 | } | 365 | } |
| 229 | 366 | ||
| 230 | ASN1_ITEM_TEMPLATE(KRB5_APREQ) = | 367 | static const ASN1_TEMPLATE KRB5_APREQ_item_tt = { |
| 231 | ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_EXPTAG|ASN1_TFLG_APPLICATION, 14, | 368 | .flags = ASN1_TFLG_EXPTAG | ASN1_TFLG_APPLICATION, |
| 232 | KRB5_APREQ, KRB5_APREQBODY) | 369 | .tag = 14, |
| 233 | ASN1_ITEM_TEMPLATE_END(KRB5_APREQ) | 370 | .offset = 0, |
| 371 | .field_name = "KRB5_APREQ", | ||
| 372 | .item = &KRB5_APREQBODY_it, | ||
| 373 | }; | ||
| 374 | |||
| 375 | const ASN1_ITEM KRB5_APREQ_it = { | ||
| 376 | .itype = ASN1_ITYPE_PRIMITIVE, | ||
| 377 | .utype = -1, | ||
| 378 | .templates = &KRB5_APREQ_item_tt, | ||
| 379 | .tcount = 0, | ||
| 380 | .funcs = NULL, | ||
| 381 | .size = 0, | ||
| 382 | .sname = "KRB5_APREQ", | ||
| 383 | }; | ||
| 234 | 384 | ||
| 235 | 385 | ||
| 236 | KRB5_APREQ * | 386 | KRB5_APREQ * |
| @@ -261,10 +411,32 @@ KRB5_APREQ_free(KRB5_APREQ *a) | |||
| 261 | 411 | ||
| 262 | /* Authenticator stuff */ | 412 | /* Authenticator stuff */ |
| 263 | 413 | ||
| 264 | ASN1_SEQUENCE(KRB5_CHECKSUM) = { | 414 | static const ASN1_TEMPLATE KRB5_CHECKSUM_seq_tt[] = { |
| 265 | ASN1_EXP(KRB5_CHECKSUM, ctype, ASN1_INTEGER, 0), | 415 | { |
| 266 | ASN1_EXP(KRB5_CHECKSUM, checksum, ASN1_OCTET_STRING,1) | 416 | .flags = ASN1_TFLG_EXPLICIT, |
| 267 | } ASN1_SEQUENCE_END(KRB5_CHECKSUM) | 417 | .tag = 0, |
| 418 | .offset = offsetof(KRB5_CHECKSUM, ctype), | ||
| 419 | .field_name = "ctype", | ||
| 420 | .item = &ASN1_INTEGER_it, | ||
| 421 | }, | ||
| 422 | { | ||
| 423 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 424 | .tag = 1, | ||
| 425 | .offset = offsetof(KRB5_CHECKSUM, checksum), | ||
| 426 | .field_name = "checksum", | ||
| 427 | .item = &ASN1_OCTET_STRING_it, | ||
| 428 | }, | ||
| 429 | }; | ||
| 430 | |||
| 431 | const ASN1_ITEM KRB5_CHECKSUM_it = { | ||
| 432 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 433 | .utype = V_ASN1_SEQUENCE, | ||
| 434 | .templates = KRB5_CHECKSUM_seq_tt, | ||
| 435 | .tcount = sizeof(KRB5_CHECKSUM_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 436 | .funcs = NULL, | ||
| 437 | .size = sizeof(KRB5_CHECKSUM), | ||
| 438 | .sname = "KRB5_CHECKSUM", | ||
| 439 | }; | ||
| 268 | 440 | ||
| 269 | 441 | ||
| 270 | KRB5_CHECKSUM * | 442 | KRB5_CHECKSUM * |
| @@ -293,10 +465,32 @@ KRB5_CHECKSUM_free(KRB5_CHECKSUM *a) | |||
| 293 | } | 465 | } |
| 294 | 466 | ||
| 295 | 467 | ||
| 296 | ASN1_SEQUENCE(KRB5_ENCKEY) = { | 468 | static const ASN1_TEMPLATE KRB5_ENCKEY_seq_tt[] = { |
| 297 | ASN1_EXP(KRB5_ENCKEY, ktype, ASN1_INTEGER, 0), | 469 | { |
| 298 | ASN1_EXP(KRB5_ENCKEY, keyvalue, ASN1_OCTET_STRING,1) | 470 | .flags = ASN1_TFLG_EXPLICIT, |
| 299 | } ASN1_SEQUENCE_END(KRB5_ENCKEY) | 471 | .tag = 0, |
| 472 | .offset = offsetof(KRB5_ENCKEY, ktype), | ||
| 473 | .field_name = "ktype", | ||
| 474 | .item = &ASN1_INTEGER_it, | ||
| 475 | }, | ||
| 476 | { | ||
| 477 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 478 | .tag = 1, | ||
| 479 | .offset = offsetof(KRB5_ENCKEY, keyvalue), | ||
| 480 | .field_name = "keyvalue", | ||
| 481 | .item = &ASN1_OCTET_STRING_it, | ||
| 482 | }, | ||
| 483 | }; | ||
| 484 | |||
| 485 | const ASN1_ITEM KRB5_ENCKEY_it = { | ||
| 486 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 487 | .utype = V_ASN1_SEQUENCE, | ||
| 488 | .templates = KRB5_ENCKEY_seq_tt, | ||
| 489 | .tcount = sizeof(KRB5_ENCKEY_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 490 | .funcs = NULL, | ||
| 491 | .size = sizeof(KRB5_ENCKEY), | ||
| 492 | .sname = "KRB5_ENCKEY", | ||
| 493 | }; | ||
| 300 | 494 | ||
| 301 | 495 | ||
| 302 | KRB5_ENCKEY * | 496 | KRB5_ENCKEY * |
| @@ -326,10 +520,32 @@ KRB5_ENCKEY_free(KRB5_ENCKEY *a) | |||
| 326 | 520 | ||
| 327 | 521 | ||
| 328 | /* SEQ OF SEQ; see ASN1_EXP_SEQUENCE_OF_OPT() below */ | 522 | /* SEQ OF SEQ; see ASN1_EXP_SEQUENCE_OF_OPT() below */ |
| 329 | ASN1_SEQUENCE(KRB5_AUTHDATA) = { | 523 | static const ASN1_TEMPLATE KRB5_AUTHDATA_seq_tt[] = { |
| 330 | ASN1_EXP(KRB5_AUTHDATA, adtype, ASN1_INTEGER, 0), | 524 | { |
| 331 | ASN1_EXP(KRB5_AUTHDATA, addata, ASN1_OCTET_STRING,1) | 525 | .flags = ASN1_TFLG_EXPLICIT, |
| 332 | } ASN1_SEQUENCE_END(KRB5_AUTHDATA) | 526 | .tag = 0, |
| 527 | .offset = offsetof(KRB5_AUTHDATA, adtype), | ||
| 528 | .field_name = "adtype", | ||
| 529 | .item = &ASN1_INTEGER_it, | ||
| 530 | }, | ||
| 531 | { | ||
| 532 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 533 | .tag = 1, | ||
| 534 | .offset = offsetof(KRB5_AUTHDATA, addata), | ||
| 535 | .field_name = "addata", | ||
| 536 | .item = &ASN1_OCTET_STRING_it, | ||
| 537 | }, | ||
| 538 | }; | ||
| 539 | |||
| 540 | const ASN1_ITEM KRB5_AUTHDATA_it = { | ||
| 541 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 542 | .utype = V_ASN1_SEQUENCE, | ||
| 543 | .templates = KRB5_AUTHDATA_seq_tt, | ||
| 544 | .tcount = sizeof(KRB5_AUTHDATA_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 545 | .funcs = NULL, | ||
| 546 | .size = sizeof(KRB5_AUTHDATA), | ||
| 547 | .sname = "KRB5_AUTHDATA", | ||
| 548 | }; | ||
| 333 | 549 | ||
| 334 | 550 | ||
| 335 | KRB5_AUTHDATA * | 551 | KRB5_AUTHDATA * |
| @@ -359,18 +575,81 @@ KRB5_AUTHDATA_free(KRB5_AUTHDATA *a) | |||
| 359 | 575 | ||
| 360 | 576 | ||
| 361 | /* [APPLICATION 2] = 0x62 */ | 577 | /* [APPLICATION 2] = 0x62 */ |
| 362 | ASN1_SEQUENCE(KRB5_AUTHENTBODY) = { | 578 | static const ASN1_TEMPLATE KRB5_AUTHENTBODY_seq_tt[] = { |
| 363 | ASN1_EXP(KRB5_AUTHENTBODY, avno, ASN1_INTEGER, 0), | 579 | { |
| 364 | ASN1_EXP(KRB5_AUTHENTBODY, crealm, ASN1_GENERALSTRING, 1), | 580 | .flags = ASN1_TFLG_EXPLICIT, |
| 365 | ASN1_EXP(KRB5_AUTHENTBODY, cname, KRB5_PRINCNAME, 2), | 581 | .tag = 0, |
| 366 | ASN1_EXP_OPT(KRB5_AUTHENTBODY, cksum, KRB5_CHECKSUM, 3), | 582 | .offset = offsetof(KRB5_AUTHENTBODY, avno), |
| 367 | ASN1_EXP(KRB5_AUTHENTBODY, cusec, ASN1_INTEGER, 4), | 583 | .field_name = "avno", |
| 368 | ASN1_EXP(KRB5_AUTHENTBODY, ctime, ASN1_GENERALIZEDTIME, 5), | 584 | .item = &ASN1_INTEGER_it, |
| 369 | ASN1_EXP_OPT(KRB5_AUTHENTBODY, subkey, KRB5_ENCKEY, 6), | 585 | }, |
| 370 | ASN1_EXP_OPT(KRB5_AUTHENTBODY, seqnum, ASN1_INTEGER, 7), | 586 | { |
| 371 | ASN1_EXP_SEQUENCE_OF_OPT | 587 | .flags = ASN1_TFLG_EXPLICIT, |
| 372 | (KRB5_AUTHENTBODY, authorization, KRB5_AUTHDATA, 8), | 588 | .tag = 1, |
| 373 | } ASN1_SEQUENCE_END(KRB5_AUTHENTBODY) | 589 | .offset = offsetof(KRB5_AUTHENTBODY, crealm), |
| 590 | .field_name = "crealm", | ||
| 591 | .item = &ASN1_GENERALSTRING_it, | ||
| 592 | }, | ||
| 593 | { | ||
| 594 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 595 | .tag = 2, | ||
| 596 | .offset = offsetof(KRB5_AUTHENTBODY, cname), | ||
| 597 | .field_name = "cname", | ||
| 598 | .item = &KRB5_PRINCNAME_it, | ||
| 599 | }, | ||
| 600 | { | ||
| 601 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
| 602 | .tag = 3, | ||
| 603 | .offset = offsetof(KRB5_AUTHENTBODY, cksum), | ||
| 604 | .field_name = "cksum", | ||
| 605 | .item = &KRB5_CHECKSUM_it, | ||
| 606 | }, | ||
| 607 | { | ||
| 608 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 609 | .tag = 4, | ||
| 610 | .offset = offsetof(KRB5_AUTHENTBODY, cusec), | ||
| 611 | .field_name = "cusec", | ||
| 612 | .item = &ASN1_INTEGER_it, | ||
| 613 | }, | ||
| 614 | { | ||
| 615 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 616 | .tag = 5, | ||
| 617 | .offset = offsetof(KRB5_AUTHENTBODY, ctime), | ||
| 618 | .field_name = "ctime", | ||
| 619 | .item = &ASN1_GENERALIZEDTIME_it, | ||
| 620 | }, | ||
| 621 | { | ||
| 622 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
| 623 | .tag = 6, | ||
| 624 | .offset = offsetof(KRB5_AUTHENTBODY, subkey), | ||
| 625 | .field_name = "subkey", | ||
| 626 | .item = &KRB5_ENCKEY_it, | ||
| 627 | }, | ||
| 628 | { | ||
| 629 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
| 630 | .tag = 7, | ||
| 631 | .offset = offsetof(KRB5_AUTHENTBODY, seqnum), | ||
| 632 | .field_name = "seqnum", | ||
| 633 | .item = &ASN1_INTEGER_it, | ||
| 634 | }, | ||
| 635 | { | ||
| 636 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
| 637 | .tag = 8, | ||
| 638 | .offset = offsetof(KRB5_AUTHENTBODY, authorization), | ||
| 639 | .field_name = "authorization", | ||
| 640 | .item = &KRB5_AUTHDATA_it, | ||
| 641 | }, | ||
| 642 | }; | ||
| 643 | |||
| 644 | const ASN1_ITEM KRB5_AUTHENTBODY_it = { | ||
| 645 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 646 | .utype = V_ASN1_SEQUENCE, | ||
| 647 | .templates = KRB5_AUTHENTBODY_seq_tt, | ||
| 648 | .tcount = sizeof(KRB5_AUTHENTBODY_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 649 | .funcs = NULL, | ||
| 650 | .size = sizeof(KRB5_AUTHENTBODY), | ||
| 651 | .sname = "KRB5_AUTHENTBODY", | ||
| 652 | }; | ||
| 374 | 653 | ||
| 375 | 654 | ||
| 376 | KRB5_AUTHENTBODY * | 655 | KRB5_AUTHENTBODY * |
| @@ -398,10 +677,23 @@ KRB5_AUTHENTBODY_free(KRB5_AUTHENTBODY *a) | |||
| 398 | ASN1_item_free((ASN1_VALUE *)a, &KRB5_AUTHENTBODY_it); | 677 | ASN1_item_free((ASN1_VALUE *)a, &KRB5_AUTHENTBODY_it); |
| 399 | } | 678 | } |
| 400 | 679 | ||
| 401 | ASN1_ITEM_TEMPLATE(KRB5_AUTHENT) = | 680 | static const ASN1_TEMPLATE KRB5_AUTHENT_item_tt = { |
| 402 | ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_EXPTAG|ASN1_TFLG_APPLICATION, 2, | 681 | .flags = ASN1_TFLG_EXPTAG | ASN1_TFLG_APPLICATION, |
| 403 | KRB5_AUTHENT, KRB5_AUTHENTBODY) | 682 | .tag = 2, |
| 404 | ASN1_ITEM_TEMPLATE_END(KRB5_AUTHENT) | 683 | .offset = 0, |
| 684 | .field_name = "KRB5_AUTHENT", | ||
| 685 | .item = &KRB5_AUTHENTBODY_it, | ||
| 686 | }; | ||
| 687 | |||
| 688 | const ASN1_ITEM KRB5_AUTHENT_it = { | ||
| 689 | .itype = ASN1_ITYPE_PRIMITIVE, | ||
| 690 | .utype = -1, | ||
| 691 | .templates = &KRB5_AUTHENT_item_tt, | ||
| 692 | .tcount = 0, | ||
| 693 | .funcs = NULL, | ||
| 694 | .size = 0, | ||
| 695 | .sname = "KRB5_AUTHENT", | ||
| 696 | }; | ||
| 405 | 697 | ||
| 406 | 698 | ||
| 407 | KRB5_AUTHENT * | 699 | KRB5_AUTHENT * |
| @@ -428,4 +720,3 @@ KRB5_AUTHENT_free(KRB5_AUTHENT *a) | |||
| 428 | { | 720 | { |
| 429 | ASN1_item_free((ASN1_VALUE *)a, &KRB5_AUTHENT_it); | 721 | ASN1_item_free((ASN1_VALUE *)a, &KRB5_AUTHENT_it); |
| 430 | } | 722 | } |
| 431 | |||
diff --git a/src/lib/libssl/src/crypto/ocsp/ocsp_asn.c b/src/lib/libssl/src/crypto/ocsp/ocsp_asn.c index 6ca21af89a..72e7638c75 100644 --- a/src/lib/libssl/src/crypto/ocsp/ocsp_asn.c +++ b/src/lib/libssl/src/crypto/ocsp/ocsp_asn.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ocsp_asn.c,v 1.7 2015/02/09 16:04:46 jsing Exp $ */ | 1 | /* $OpenBSD: ocsp_asn.c,v 1.8 2015/07/25 14:52:47 jsing Exp $ */ |
| 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project 2000. | 3 | * project 2000. |
| 4 | */ | 4 | */ |
| @@ -59,11 +59,39 @@ | |||
| 59 | #include <openssl/asn1t.h> | 59 | #include <openssl/asn1t.h> |
| 60 | #include <openssl/ocsp.h> | 60 | #include <openssl/ocsp.h> |
| 61 | 61 | ||
| 62 | ASN1_SEQUENCE(OCSP_SIGNATURE) = { | 62 | static const ASN1_TEMPLATE OCSP_SIGNATURE_seq_tt[] = { |
| 63 | ASN1_SIMPLE(OCSP_SIGNATURE, signatureAlgorithm, X509_ALGOR), | 63 | { |
| 64 | ASN1_SIMPLE(OCSP_SIGNATURE, signature, ASN1_BIT_STRING), | 64 | .flags = 0, |
| 65 | ASN1_EXP_SEQUENCE_OF_OPT(OCSP_SIGNATURE, certs, X509, 0) | 65 | .tag = 0, |
| 66 | } ASN1_SEQUENCE_END(OCSP_SIGNATURE) | 66 | .offset = offsetof(OCSP_SIGNATURE, signatureAlgorithm), |
| 67 | .field_name = "signatureAlgorithm", | ||
| 68 | .item = &X509_ALGOR_it, | ||
| 69 | }, | ||
| 70 | { | ||
| 71 | .flags = 0, | ||
| 72 | .tag = 0, | ||
| 73 | .offset = offsetof(OCSP_SIGNATURE, signature), | ||
| 74 | .field_name = "signature", | ||
| 75 | .item = &ASN1_BIT_STRING_it, | ||
| 76 | }, | ||
| 77 | { | ||
| 78 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
| 79 | .tag = 0, | ||
| 80 | .offset = offsetof(OCSP_SIGNATURE, certs), | ||
| 81 | .field_name = "certs", | ||
| 82 | .item = &X509_it, | ||
| 83 | }, | ||
| 84 | }; | ||
| 85 | |||
| 86 | const ASN1_ITEM OCSP_SIGNATURE_it = { | ||
| 87 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 88 | .utype = V_ASN1_SEQUENCE, | ||
| 89 | .templates = OCSP_SIGNATURE_seq_tt, | ||
| 90 | .tcount = sizeof(OCSP_SIGNATURE_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 91 | .funcs = NULL, | ||
| 92 | .size = sizeof(OCSP_SIGNATURE), | ||
| 93 | .sname = "OCSP_SIGNATURE", | ||
| 94 | }; | ||
| 67 | 95 | ||
| 68 | 96 | ||
| 69 | OCSP_SIGNATURE * | 97 | OCSP_SIGNATURE * |
| @@ -91,12 +119,46 @@ OCSP_SIGNATURE_free(OCSP_SIGNATURE *a) | |||
| 91 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_SIGNATURE_it); | 119 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_SIGNATURE_it); |
| 92 | } | 120 | } |
| 93 | 121 | ||
| 94 | ASN1_SEQUENCE(OCSP_CERTID) = { | 122 | static const ASN1_TEMPLATE OCSP_CERTID_seq_tt[] = { |
| 95 | ASN1_SIMPLE(OCSP_CERTID, hashAlgorithm, X509_ALGOR), | 123 | { |
| 96 | ASN1_SIMPLE(OCSP_CERTID, issuerNameHash, ASN1_OCTET_STRING), | 124 | .flags = 0, |
| 97 | ASN1_SIMPLE(OCSP_CERTID, issuerKeyHash, ASN1_OCTET_STRING), | 125 | .tag = 0, |
| 98 | ASN1_SIMPLE(OCSP_CERTID, serialNumber, ASN1_INTEGER) | 126 | .offset = offsetof(OCSP_CERTID, hashAlgorithm), |
| 99 | } ASN1_SEQUENCE_END(OCSP_CERTID) | 127 | .field_name = "hashAlgorithm", |
| 128 | .item = &X509_ALGOR_it, | ||
| 129 | }, | ||
| 130 | { | ||
| 131 | .flags = 0, | ||
| 132 | .tag = 0, | ||
| 133 | .offset = offsetof(OCSP_CERTID, issuerNameHash), | ||
| 134 | .field_name = "issuerNameHash", | ||
| 135 | .item = &ASN1_OCTET_STRING_it, | ||
| 136 | }, | ||
| 137 | { | ||
| 138 | .flags = 0, | ||
| 139 | .tag = 0, | ||
| 140 | .offset = offsetof(OCSP_CERTID, issuerKeyHash), | ||
| 141 | .field_name = "issuerKeyHash", | ||
| 142 | .item = &ASN1_OCTET_STRING_it, | ||
| 143 | }, | ||
| 144 | { | ||
| 145 | .flags = 0, | ||
| 146 | .tag = 0, | ||
| 147 | .offset = offsetof(OCSP_CERTID, serialNumber), | ||
| 148 | .field_name = "serialNumber", | ||
| 149 | .item = &ASN1_INTEGER_it, | ||
| 150 | }, | ||
| 151 | }; | ||
| 152 | |||
| 153 | const ASN1_ITEM OCSP_CERTID_it = { | ||
| 154 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 155 | .utype = V_ASN1_SEQUENCE, | ||
| 156 | .templates = OCSP_CERTID_seq_tt, | ||
| 157 | .tcount = sizeof(OCSP_CERTID_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 158 | .funcs = NULL, | ||
| 159 | .size = sizeof(OCSP_CERTID), | ||
| 160 | .sname = "OCSP_CERTID", | ||
| 161 | }; | ||
| 100 | 162 | ||
| 101 | 163 | ||
| 102 | OCSP_CERTID * | 164 | OCSP_CERTID * |
| @@ -124,10 +186,32 @@ OCSP_CERTID_free(OCSP_CERTID *a) | |||
| 124 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_CERTID_it); | 186 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_CERTID_it); |
| 125 | } | 187 | } |
| 126 | 188 | ||
| 127 | ASN1_SEQUENCE(OCSP_ONEREQ) = { | 189 | static const ASN1_TEMPLATE OCSP_ONEREQ_seq_tt[] = { |
| 128 | ASN1_SIMPLE(OCSP_ONEREQ, reqCert, OCSP_CERTID), | 190 | { |
| 129 | ASN1_EXP_SEQUENCE_OF_OPT(OCSP_ONEREQ, singleRequestExtensions, X509_EXTENSION, 0) | 191 | .flags = 0, |
| 130 | } ASN1_SEQUENCE_END(OCSP_ONEREQ) | 192 | .tag = 0, |
| 193 | .offset = offsetof(OCSP_ONEREQ, reqCert), | ||
| 194 | .field_name = "reqCert", | ||
| 195 | .item = &OCSP_CERTID_it, | ||
| 196 | }, | ||
| 197 | { | ||
| 198 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
| 199 | .tag = 0, | ||
| 200 | .offset = offsetof(OCSP_ONEREQ, singleRequestExtensions), | ||
| 201 | .field_name = "singleRequestExtensions", | ||
| 202 | .item = &X509_EXTENSION_it, | ||
| 203 | }, | ||
| 204 | }; | ||
| 205 | |||
| 206 | const ASN1_ITEM OCSP_ONEREQ_it = { | ||
| 207 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 208 | .utype = V_ASN1_SEQUENCE, | ||
| 209 | .templates = OCSP_ONEREQ_seq_tt, | ||
| 210 | .tcount = sizeof(OCSP_ONEREQ_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 211 | .funcs = NULL, | ||
| 212 | .size = sizeof(OCSP_ONEREQ), | ||
| 213 | .sname = "OCSP_ONEREQ", | ||
| 214 | }; | ||
| 131 | 215 | ||
| 132 | 216 | ||
| 133 | OCSP_ONEREQ * | 217 | OCSP_ONEREQ * |
| @@ -155,12 +239,46 @@ OCSP_ONEREQ_free(OCSP_ONEREQ *a) | |||
| 155 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_ONEREQ_it); | 239 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_ONEREQ_it); |
| 156 | } | 240 | } |
| 157 | 241 | ||
| 158 | ASN1_SEQUENCE(OCSP_REQINFO) = { | 242 | static const ASN1_TEMPLATE OCSP_REQINFO_seq_tt[] = { |
| 159 | ASN1_EXP_OPT(OCSP_REQINFO, version, ASN1_INTEGER, 0), | 243 | { |
| 160 | ASN1_EXP_OPT(OCSP_REQINFO, requestorName, GENERAL_NAME, 1), | 244 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, |
| 161 | ASN1_SEQUENCE_OF(OCSP_REQINFO, requestList, OCSP_ONEREQ), | 245 | .tag = 0, |
| 162 | ASN1_EXP_SEQUENCE_OF_OPT(OCSP_REQINFO, requestExtensions, X509_EXTENSION, 2) | 246 | .offset = offsetof(OCSP_REQINFO, version), |
| 163 | } ASN1_SEQUENCE_END(OCSP_REQINFO) | 247 | .field_name = "version", |
| 248 | .item = &ASN1_INTEGER_it, | ||
| 249 | }, | ||
| 250 | { | ||
| 251 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
| 252 | .tag = 1, | ||
| 253 | .offset = offsetof(OCSP_REQINFO, requestorName), | ||
| 254 | .field_name = "requestorName", | ||
| 255 | .item = &GENERAL_NAME_it, | ||
| 256 | }, | ||
| 257 | { | ||
| 258 | .flags = ASN1_TFLG_SEQUENCE_OF, | ||
| 259 | .tag = 0, | ||
| 260 | .offset = offsetof(OCSP_REQINFO, requestList), | ||
| 261 | .field_name = "requestList", | ||
| 262 | .item = &OCSP_ONEREQ_it, | ||
| 263 | }, | ||
| 264 | { | ||
| 265 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
| 266 | .tag = 2, | ||
| 267 | .offset = offsetof(OCSP_REQINFO, requestExtensions), | ||
| 268 | .field_name = "requestExtensions", | ||
| 269 | .item = &X509_EXTENSION_it, | ||
| 270 | }, | ||
| 271 | }; | ||
| 272 | |||
| 273 | const ASN1_ITEM OCSP_REQINFO_it = { | ||
| 274 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 275 | .utype = V_ASN1_SEQUENCE, | ||
| 276 | .templates = OCSP_REQINFO_seq_tt, | ||
| 277 | .tcount = sizeof(OCSP_REQINFO_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 278 | .funcs = NULL, | ||
| 279 | .size = sizeof(OCSP_REQINFO), | ||
| 280 | .sname = "OCSP_REQINFO", | ||
| 281 | }; | ||
| 164 | 282 | ||
| 165 | 283 | ||
| 166 | OCSP_REQINFO * | 284 | OCSP_REQINFO * |
| @@ -188,10 +306,32 @@ OCSP_REQINFO_free(OCSP_REQINFO *a) | |||
| 188 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_REQINFO_it); | 306 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_REQINFO_it); |
| 189 | } | 307 | } |
| 190 | 308 | ||
| 191 | ASN1_SEQUENCE(OCSP_REQUEST) = { | 309 | static const ASN1_TEMPLATE OCSP_REQUEST_seq_tt[] = { |
| 192 | ASN1_SIMPLE(OCSP_REQUEST, tbsRequest, OCSP_REQINFO), | 310 | { |
| 193 | ASN1_EXP_OPT(OCSP_REQUEST, optionalSignature, OCSP_SIGNATURE, 0) | 311 | .flags = 0, |
| 194 | } ASN1_SEQUENCE_END(OCSP_REQUEST) | 312 | .tag = 0, |
| 313 | .offset = offsetof(OCSP_REQUEST, tbsRequest), | ||
| 314 | .field_name = "tbsRequest", | ||
| 315 | .item = &OCSP_REQINFO_it, | ||
| 316 | }, | ||
| 317 | { | ||
| 318 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
| 319 | .tag = 0, | ||
| 320 | .offset = offsetof(OCSP_REQUEST, optionalSignature), | ||
| 321 | .field_name = "optionalSignature", | ||
| 322 | .item = &OCSP_SIGNATURE_it, | ||
| 323 | }, | ||
| 324 | }; | ||
| 325 | |||
| 326 | const ASN1_ITEM OCSP_REQUEST_it = { | ||
| 327 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 328 | .utype = V_ASN1_SEQUENCE, | ||
| 329 | .templates = OCSP_REQUEST_seq_tt, | ||
| 330 | .tcount = sizeof(OCSP_REQUEST_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 331 | .funcs = NULL, | ||
| 332 | .size = sizeof(OCSP_REQUEST), | ||
| 333 | .sname = "OCSP_REQUEST", | ||
| 334 | }; | ||
| 195 | 335 | ||
| 196 | 336 | ||
| 197 | OCSP_REQUEST * | 337 | OCSP_REQUEST * |
| @@ -221,10 +361,32 @@ OCSP_REQUEST_free(OCSP_REQUEST *a) | |||
| 221 | 361 | ||
| 222 | /* OCSP_RESPONSE templates */ | 362 | /* OCSP_RESPONSE templates */ |
| 223 | 363 | ||
| 224 | ASN1_SEQUENCE(OCSP_RESPBYTES) = { | 364 | static const ASN1_TEMPLATE OCSP_RESPBYTES_seq_tt[] = { |
| 225 | ASN1_SIMPLE(OCSP_RESPBYTES, responseType, ASN1_OBJECT), | 365 | { |
| 226 | ASN1_SIMPLE(OCSP_RESPBYTES, response, ASN1_OCTET_STRING) | 366 | .flags = 0, |
| 227 | } ASN1_SEQUENCE_END(OCSP_RESPBYTES) | 367 | .tag = 0, |
| 368 | .offset = offsetof(OCSP_RESPBYTES, responseType), | ||
| 369 | .field_name = "responseType", | ||
| 370 | .item = &ASN1_OBJECT_it, | ||
| 371 | }, | ||
| 372 | { | ||
| 373 | .flags = 0, | ||
| 374 | .tag = 0, | ||
| 375 | .offset = offsetof(OCSP_RESPBYTES, response), | ||
| 376 | .field_name = "response", | ||
| 377 | .item = &ASN1_OCTET_STRING_it, | ||
| 378 | }, | ||
| 379 | }; | ||
| 380 | |||
| 381 | const ASN1_ITEM OCSP_RESPBYTES_it = { | ||
| 382 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 383 | .utype = V_ASN1_SEQUENCE, | ||
| 384 | .templates = OCSP_RESPBYTES_seq_tt, | ||
| 385 | .tcount = sizeof(OCSP_RESPBYTES_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 386 | .funcs = NULL, | ||
| 387 | .size = sizeof(OCSP_RESPBYTES), | ||
| 388 | .sname = "OCSP_RESPBYTES", | ||
| 389 | }; | ||
| 228 | 390 | ||
| 229 | 391 | ||
| 230 | OCSP_RESPBYTES * | 392 | OCSP_RESPBYTES * |
| @@ -252,10 +414,32 @@ OCSP_RESPBYTES_free(OCSP_RESPBYTES *a) | |||
| 252 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPBYTES_it); | 414 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPBYTES_it); |
| 253 | } | 415 | } |
| 254 | 416 | ||
| 255 | ASN1_SEQUENCE(OCSP_RESPONSE) = { | 417 | static const ASN1_TEMPLATE OCSP_RESPONSE_seq_tt[] = { |
| 256 | ASN1_SIMPLE(OCSP_RESPONSE, responseStatus, ASN1_ENUMERATED), | 418 | { |
| 257 | ASN1_EXP_OPT(OCSP_RESPONSE, responseBytes, OCSP_RESPBYTES, 0) | 419 | .flags = 0, |
| 258 | } ASN1_SEQUENCE_END(OCSP_RESPONSE) | 420 | .tag = 0, |
| 421 | .offset = offsetof(OCSP_RESPONSE, responseStatus), | ||
| 422 | .field_name = "responseStatus", | ||
| 423 | .item = &ASN1_ENUMERATED_it, | ||
| 424 | }, | ||
| 425 | { | ||
| 426 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
| 427 | .tag = 0, | ||
| 428 | .offset = offsetof(OCSP_RESPONSE, responseBytes), | ||
| 429 | .field_name = "responseBytes", | ||
| 430 | .item = &OCSP_RESPBYTES_it, | ||
| 431 | }, | ||
| 432 | }; | ||
| 433 | |||
| 434 | const ASN1_ITEM OCSP_RESPONSE_it = { | ||
| 435 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 436 | .utype = V_ASN1_SEQUENCE, | ||
| 437 | .templates = OCSP_RESPONSE_seq_tt, | ||
| 438 | .tcount = sizeof(OCSP_RESPONSE_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 439 | .funcs = NULL, | ||
| 440 | .size = sizeof(OCSP_RESPONSE), | ||
| 441 | .sname = "OCSP_RESPONSE", | ||
| 442 | }; | ||
| 259 | 443 | ||
| 260 | 444 | ||
| 261 | OCSP_RESPONSE * | 445 | OCSP_RESPONSE * |
| @@ -283,10 +467,32 @@ OCSP_RESPONSE_free(OCSP_RESPONSE *a) | |||
| 283 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPONSE_it); | 467 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPONSE_it); |
| 284 | } | 468 | } |
| 285 | 469 | ||
| 286 | ASN1_CHOICE(OCSP_RESPID) = { | 470 | static const ASN1_TEMPLATE OCSP_RESPID_ch_tt[] = { |
| 287 | ASN1_EXP(OCSP_RESPID, value.byName, X509_NAME, 1), | 471 | { |
| 288 | ASN1_EXP(OCSP_RESPID, value.byKey, ASN1_OCTET_STRING, 2) | 472 | .flags = ASN1_TFLG_EXPLICIT, |
| 289 | } ASN1_CHOICE_END(OCSP_RESPID) | 473 | .tag = 1, |
| 474 | .offset = offsetof(OCSP_RESPID, value.byName), | ||
| 475 | .field_name = "value.byName", | ||
| 476 | .item = &X509_NAME_it, | ||
| 477 | }, | ||
| 478 | { | ||
| 479 | .flags = ASN1_TFLG_EXPLICIT, | ||
| 480 | .tag = 2, | ||
| 481 | .offset = offsetof(OCSP_RESPID, value.byKey), | ||
| 482 | .field_name = "value.byKey", | ||
| 483 | .item = &ASN1_OCTET_STRING_it, | ||
| 484 | }, | ||
| 485 | }; | ||
| 486 | |||
| 487 | const ASN1_ITEM OCSP_RESPID_it = { | ||
| 488 | .itype = ASN1_ITYPE_CHOICE, | ||
| 489 | .utype = offsetof(OCSP_RESPID, type), | ||
| 490 | .templates = OCSP_RESPID_ch_tt, | ||
| 491 | .tcount = sizeof(OCSP_RESPID_ch_tt) / sizeof(ASN1_TEMPLATE), | ||
| 492 | .funcs = NULL, | ||
| 493 | .size = sizeof(OCSP_RESPID), | ||
| 494 | .sname = "OCSP_RESPID", | ||
| 495 | }; | ||
| 290 | 496 | ||
| 291 | 497 | ||
| 292 | OCSP_RESPID * | 498 | OCSP_RESPID * |
| @@ -314,10 +520,32 @@ OCSP_RESPID_free(OCSP_RESPID *a) | |||
| 314 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPID_it); | 520 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPID_it); |
| 315 | } | 521 | } |
| 316 | 522 | ||
| 317 | ASN1_SEQUENCE(OCSP_REVOKEDINFO) = { | 523 | static const ASN1_TEMPLATE OCSP_REVOKEDINFO_seq_tt[] = { |
| 318 | ASN1_SIMPLE(OCSP_REVOKEDINFO, revocationTime, ASN1_GENERALIZEDTIME), | 524 | { |
| 319 | ASN1_EXP_OPT(OCSP_REVOKEDINFO, revocationReason, ASN1_ENUMERATED, 0) | 525 | .flags = 0, |
| 320 | } ASN1_SEQUENCE_END(OCSP_REVOKEDINFO) | 526 | .tag = 0, |
| 527 | .offset = offsetof(OCSP_REVOKEDINFO, revocationTime), | ||
| 528 | .field_name = "revocationTime", | ||
| 529 | .item = &ASN1_GENERALIZEDTIME_it, | ||
| 530 | }, | ||
| 531 | { | ||
| 532 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
| 533 | .tag = 0, | ||
| 534 | .offset = offsetof(OCSP_REVOKEDINFO, revocationReason), | ||
| 535 | .field_name = "revocationReason", | ||
| 536 | .item = &ASN1_ENUMERATED_it, | ||
| 537 | }, | ||
| 538 | }; | ||
| 539 | |||
| 540 | const ASN1_ITEM OCSP_REVOKEDINFO_it = { | ||
| 541 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 542 | .utype = V_ASN1_SEQUENCE, | ||
| 543 | .templates = OCSP_REVOKEDINFO_seq_tt, | ||
| 544 | .tcount = sizeof(OCSP_REVOKEDINFO_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 545 | .funcs = NULL, | ||
| 546 | .size = sizeof(OCSP_REVOKEDINFO), | ||
| 547 | .sname = "OCSP_REVOKEDINFO", | ||
| 548 | }; | ||
| 321 | 549 | ||
| 322 | 550 | ||
| 323 | OCSP_REVOKEDINFO * | 551 | OCSP_REVOKEDINFO * |
| @@ -345,11 +573,39 @@ OCSP_REVOKEDINFO_free(OCSP_REVOKEDINFO *a) | |||
| 345 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_REVOKEDINFO_it); | 573 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_REVOKEDINFO_it); |
| 346 | } | 574 | } |
| 347 | 575 | ||
| 348 | ASN1_CHOICE(OCSP_CERTSTATUS) = { | 576 | static const ASN1_TEMPLATE OCSP_CERTSTATUS_ch_tt[] = { |
| 349 | ASN1_IMP(OCSP_CERTSTATUS, value.good, ASN1_NULL, 0), | 577 | { |
| 350 | ASN1_IMP(OCSP_CERTSTATUS, value.revoked, OCSP_REVOKEDINFO, 1), | 578 | .flags = ASN1_TFLG_IMPLICIT, |
| 351 | ASN1_IMP(OCSP_CERTSTATUS, value.unknown, ASN1_NULL, 2) | 579 | .tag = 0, |
| 352 | } ASN1_CHOICE_END(OCSP_CERTSTATUS) | 580 | .offset = offsetof(OCSP_CERTSTATUS, value.good), |
| 581 | .field_name = "value.good", | ||
| 582 | .item = &ASN1_NULL_it, | ||
| 583 | }, | ||
| 584 | { | ||
| 585 | .flags = ASN1_TFLG_IMPLICIT, | ||
| 586 | .tag = 1, | ||
| 587 | .offset = offsetof(OCSP_CERTSTATUS, value.revoked), | ||
| 588 | .field_name = "value.revoked", | ||
| 589 | .item = &OCSP_REVOKEDINFO_it, | ||
| 590 | }, | ||
| 591 | { | ||
| 592 | .flags = ASN1_TFLG_IMPLICIT, | ||
| 593 | .tag = 2, | ||
| 594 | .offset = offsetof(OCSP_CERTSTATUS, value.unknown), | ||
| 595 | .field_name = "value.unknown", | ||
| 596 | .item = &ASN1_NULL_it, | ||
| 597 | }, | ||
| 598 | }; | ||
| 599 | |||
| 600 | const ASN1_ITEM OCSP_CERTSTATUS_it = { | ||
| 601 | .itype = ASN1_ITYPE_CHOICE, | ||
| 602 | .utype = offsetof(OCSP_CERTSTATUS, type), | ||
| 603 | .templates = OCSP_CERTSTATUS_ch_tt, | ||
| 604 | .tcount = sizeof(OCSP_CERTSTATUS_ch_tt) / sizeof(ASN1_TEMPLATE), | ||
| 605 | .funcs = NULL, | ||
| 606 | .size = sizeof(OCSP_CERTSTATUS), | ||
| 607 | .sname = "OCSP_CERTSTATUS", | ||
| 608 | }; | ||
| 353 | 609 | ||
| 354 | 610 | ||
| 355 | OCSP_CERTSTATUS * | 611 | OCSP_CERTSTATUS * |
| @@ -377,13 +633,53 @@ OCSP_CERTSTATUS_free(OCSP_CERTSTATUS *a) | |||
| 377 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_CERTSTATUS_it); | 633 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_CERTSTATUS_it); |
| 378 | } | 634 | } |
| 379 | 635 | ||
| 380 | ASN1_SEQUENCE(OCSP_SINGLERESP) = { | 636 | static const ASN1_TEMPLATE OCSP_SINGLERESP_seq_tt[] = { |
| 381 | ASN1_SIMPLE(OCSP_SINGLERESP, certId, OCSP_CERTID), | 637 | { |
| 382 | ASN1_SIMPLE(OCSP_SINGLERESP, certStatus, OCSP_CERTSTATUS), | 638 | .flags = 0, |
| 383 | ASN1_SIMPLE(OCSP_SINGLERESP, thisUpdate, ASN1_GENERALIZEDTIME), | 639 | .tag = 0, |
| 384 | ASN1_EXP_OPT(OCSP_SINGLERESP, nextUpdate, ASN1_GENERALIZEDTIME, 0), | 640 | .offset = offsetof(OCSP_SINGLERESP, certId), |
| 385 | ASN1_EXP_SEQUENCE_OF_OPT(OCSP_SINGLERESP, singleExtensions, X509_EXTENSION, 1) | 641 | .field_name = "certId", |
| 386 | } ASN1_SEQUENCE_END(OCSP_SINGLERESP) | 642 | .item = &OCSP_CERTID_it, |
| 643 | }, | ||
| 644 | { | ||
| 645 | .flags = 0, | ||
| 646 | .tag = 0, | ||
| 647 | .offset = offsetof(OCSP_SINGLERESP, certStatus), | ||
| 648 | .field_name = "certStatus", | ||
| 649 | .item = &OCSP_CERTSTATUS_it, | ||
| 650 | }, | ||
| 651 | { | ||
| 652 | .flags = 0, | ||
| 653 | .tag = 0, | ||
| 654 | .offset = offsetof(OCSP_SINGLERESP, thisUpdate), | ||
| 655 | .field_name = "thisUpdate", | ||
| 656 | .item = &ASN1_GENERALIZEDTIME_it, | ||
| 657 | }, | ||
| 658 | { | ||
| 659 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
| 660 | .tag = 0, | ||
| 661 | .offset = offsetof(OCSP_SINGLERESP, nextUpdate), | ||
| 662 | .field_name = "nextUpdate", | ||
| 663 | .item = &ASN1_GENERALIZEDTIME_it, | ||
| 664 | }, | ||
| 665 | { | ||
| 666 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
| 667 | .tag = 1, | ||
| 668 | .offset = offsetof(OCSP_SINGLERESP, singleExtensions), | ||
| 669 | .field_name = "singleExtensions", | ||
| 670 | .item = &X509_EXTENSION_it, | ||
| 671 | }, | ||
| 672 | }; | ||
| 673 | |||
| 674 | const ASN1_ITEM OCSP_SINGLERESP_it = { | ||
| 675 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 676 | .utype = V_ASN1_SEQUENCE, | ||
| 677 | .templates = OCSP_SINGLERESP_seq_tt, | ||
| 678 | .tcount = sizeof(OCSP_SINGLERESP_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 679 | .funcs = NULL, | ||
| 680 | .size = sizeof(OCSP_SINGLERESP), | ||
| 681 | .sname = "OCSP_SINGLERESP", | ||
| 682 | }; | ||
| 387 | 683 | ||
| 388 | 684 | ||
| 389 | OCSP_SINGLERESP * | 685 | OCSP_SINGLERESP * |
| @@ -411,13 +707,53 @@ OCSP_SINGLERESP_free(OCSP_SINGLERESP *a) | |||
| 411 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_SINGLERESP_it); | 707 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_SINGLERESP_it); |
| 412 | } | 708 | } |
| 413 | 709 | ||
| 414 | ASN1_SEQUENCE(OCSP_RESPDATA) = { | 710 | static const ASN1_TEMPLATE OCSP_RESPDATA_seq_tt[] = { |
| 415 | ASN1_EXP_OPT(OCSP_RESPDATA, version, ASN1_INTEGER, 0), | 711 | { |
| 416 | ASN1_SIMPLE(OCSP_RESPDATA, responderId, OCSP_RESPID), | 712 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, |
| 417 | ASN1_SIMPLE(OCSP_RESPDATA, producedAt, ASN1_GENERALIZEDTIME), | 713 | .tag = 0, |
| 418 | ASN1_SEQUENCE_OF(OCSP_RESPDATA, responses, OCSP_SINGLERESP), | 714 | .offset = offsetof(OCSP_RESPDATA, version), |
| 419 | ASN1_EXP_SEQUENCE_OF_OPT(OCSP_RESPDATA, responseExtensions, X509_EXTENSION, 1) | 715 | .field_name = "version", |
| 420 | } ASN1_SEQUENCE_END(OCSP_RESPDATA) | 716 | .item = &ASN1_INTEGER_it, |
| 717 | }, | ||
| 718 | { | ||
| 719 | .flags = 0, | ||
| 720 | .tag = 0, | ||
| 721 | .offset = offsetof(OCSP_RESPDATA, responderId), | ||
| 722 | .field_name = "responderId", | ||
| 723 | .item = &OCSP_RESPID_it, | ||
| 724 | }, | ||
| 725 | { | ||
| 726 | .flags = 0, | ||
| 727 | .tag = 0, | ||
| 728 | .offset = offsetof(OCSP_RESPDATA, producedAt), | ||
| 729 | .field_name = "producedAt", | ||
| 730 | .item = &ASN1_GENERALIZEDTIME_it, | ||
| 731 | }, | ||
| 732 | { | ||
| 733 | .flags = ASN1_TFLG_SEQUENCE_OF, | ||
| 734 | .tag = 0, | ||
| 735 | .offset = offsetof(OCSP_RESPDATA, responses), | ||
| 736 | .field_name = "responses", | ||
| 737 | .item = &OCSP_SINGLERESP_it, | ||
| 738 | }, | ||
| 739 | { | ||
| 740 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
| 741 | .tag = 1, | ||
| 742 | .offset = offsetof(OCSP_RESPDATA, responseExtensions), | ||
| 743 | .field_name = "responseExtensions", | ||
| 744 | .item = &X509_EXTENSION_it, | ||
| 745 | }, | ||
| 746 | }; | ||
| 747 | |||
| 748 | const ASN1_ITEM OCSP_RESPDATA_it = { | ||
| 749 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 750 | .utype = V_ASN1_SEQUENCE, | ||
| 751 | .templates = OCSP_RESPDATA_seq_tt, | ||
| 752 | .tcount = sizeof(OCSP_RESPDATA_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 753 | .funcs = NULL, | ||
| 754 | .size = sizeof(OCSP_RESPDATA), | ||
| 755 | .sname = "OCSP_RESPDATA", | ||
| 756 | }; | ||
| 421 | 757 | ||
| 422 | 758 | ||
| 423 | OCSP_RESPDATA * | 759 | OCSP_RESPDATA * |
| @@ -445,12 +781,46 @@ OCSP_RESPDATA_free(OCSP_RESPDATA *a) | |||
| 445 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPDATA_it); | 781 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_RESPDATA_it); |
| 446 | } | 782 | } |
| 447 | 783 | ||
| 448 | ASN1_SEQUENCE(OCSP_BASICRESP) = { | 784 | static const ASN1_TEMPLATE OCSP_BASICRESP_seq_tt[] = { |
| 449 | ASN1_SIMPLE(OCSP_BASICRESP, tbsResponseData, OCSP_RESPDATA), | 785 | { |
| 450 | ASN1_SIMPLE(OCSP_BASICRESP, signatureAlgorithm, X509_ALGOR), | 786 | .flags = 0, |
| 451 | ASN1_SIMPLE(OCSP_BASICRESP, signature, ASN1_BIT_STRING), | 787 | .tag = 0, |
| 452 | ASN1_EXP_SEQUENCE_OF_OPT(OCSP_BASICRESP, certs, X509, 0) | 788 | .offset = offsetof(OCSP_BASICRESP, tbsResponseData), |
| 453 | } ASN1_SEQUENCE_END(OCSP_BASICRESP) | 789 | .field_name = "tbsResponseData", |
| 790 | .item = &OCSP_RESPDATA_it, | ||
| 791 | }, | ||
| 792 | { | ||
| 793 | .flags = 0, | ||
| 794 | .tag = 0, | ||
| 795 | .offset = offsetof(OCSP_BASICRESP, signatureAlgorithm), | ||
| 796 | .field_name = "signatureAlgorithm", | ||
| 797 | .item = &X509_ALGOR_it, | ||
| 798 | }, | ||
| 799 | { | ||
| 800 | .flags = 0, | ||
| 801 | .tag = 0, | ||
| 802 | .offset = offsetof(OCSP_BASICRESP, signature), | ||
| 803 | .field_name = "signature", | ||
| 804 | .item = &ASN1_BIT_STRING_it, | ||
| 805 | }, | ||
| 806 | { | ||
| 807 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
| 808 | .tag = 0, | ||
| 809 | .offset = offsetof(OCSP_BASICRESP, certs), | ||
| 810 | .field_name = "certs", | ||
| 811 | .item = &X509_it, | ||
| 812 | }, | ||
| 813 | }; | ||
| 814 | |||
| 815 | const ASN1_ITEM OCSP_BASICRESP_it = { | ||
| 816 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 817 | .utype = V_ASN1_SEQUENCE, | ||
| 818 | .templates = OCSP_BASICRESP_seq_tt, | ||
| 819 | .tcount = sizeof(OCSP_BASICRESP_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 820 | .funcs = NULL, | ||
| 821 | .size = sizeof(OCSP_BASICRESP), | ||
| 822 | .sname = "OCSP_BASICRESP", | ||
| 823 | }; | ||
| 454 | 824 | ||
| 455 | 825 | ||
| 456 | OCSP_BASICRESP * | 826 | OCSP_BASICRESP * |
| @@ -478,11 +848,39 @@ OCSP_BASICRESP_free(OCSP_BASICRESP *a) | |||
| 478 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_BASICRESP_it); | 848 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_BASICRESP_it); |
| 479 | } | 849 | } |
| 480 | 850 | ||
| 481 | ASN1_SEQUENCE(OCSP_CRLID) = { | 851 | static const ASN1_TEMPLATE OCSP_CRLID_seq_tt[] = { |
| 482 | ASN1_EXP_OPT(OCSP_CRLID, crlUrl, ASN1_IA5STRING, 0), | 852 | { |
| 483 | ASN1_EXP_OPT(OCSP_CRLID, crlNum, ASN1_INTEGER, 1), | 853 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, |
| 484 | ASN1_EXP_OPT(OCSP_CRLID, crlTime, ASN1_GENERALIZEDTIME, 2) | 854 | .tag = 0, |
| 485 | } ASN1_SEQUENCE_END(OCSP_CRLID) | 855 | .offset = offsetof(OCSP_CRLID, crlUrl), |
| 856 | .field_name = "crlUrl", | ||
| 857 | .item = &ASN1_IA5STRING_it, | ||
| 858 | }, | ||
| 859 | { | ||
| 860 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
| 861 | .tag = 1, | ||
| 862 | .offset = offsetof(OCSP_CRLID, crlNum), | ||
| 863 | .field_name = "crlNum", | ||
| 864 | .item = &ASN1_INTEGER_it, | ||
| 865 | }, | ||
| 866 | { | ||
| 867 | .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL, | ||
| 868 | .tag = 2, | ||
| 869 | .offset = offsetof(OCSP_CRLID, crlTime), | ||
| 870 | .field_name = "crlTime", | ||
| 871 | .item = &ASN1_GENERALIZEDTIME_it, | ||
| 872 | }, | ||
| 873 | }; | ||
| 874 | |||
| 875 | const ASN1_ITEM OCSP_CRLID_it = { | ||
| 876 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 877 | .utype = V_ASN1_SEQUENCE, | ||
| 878 | .templates = OCSP_CRLID_seq_tt, | ||
| 879 | .tcount = sizeof(OCSP_CRLID_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 880 | .funcs = NULL, | ||
| 881 | .size = sizeof(OCSP_CRLID), | ||
| 882 | .sname = "OCSP_CRLID", | ||
| 883 | }; | ||
| 486 | 884 | ||
| 487 | 885 | ||
| 488 | OCSP_CRLID * | 886 | OCSP_CRLID * |
| @@ -510,10 +908,32 @@ OCSP_CRLID_free(OCSP_CRLID *a) | |||
| 510 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_CRLID_it); | 908 | ASN1_item_free((ASN1_VALUE *)a, &OCSP_CRLID_it); |
| 511 | } | 909 | } |
| 512 | 910 | ||
| 513 | ASN1_SEQUENCE(OCSP_SERVICELOC) = { | 911 | static const ASN1_TEMPLATE OCSP_SERVICELOC_seq_tt[] = { |
| 514 | ASN1_SIMPLE(OCSP_SERVICELOC, issuer, X509_NAME), | 912 | { |
| 515 | ASN1_SEQUENCE_OF_OPT(OCSP_SERVICELOC, locator, ACCESS_DESCRIPTION) | 913 | .flags = 0, |
| 516 | } ASN1_SEQUENCE_END(OCSP_SERVICELOC) | 914 | .tag = 0, |
| 915 | .offset = offsetof(OCSP_SERVICELOC, issuer), | ||
| 916 | .field_name = "issuer", | ||
| 917 | .item = &X509_NAME_it, | ||
| 918 | }, | ||
| 919 | { | ||
| 920 | .flags = ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_OPTIONAL, | ||
| 921 | .tag = 0, | ||
| 922 | .offset = offsetof(OCSP_SERVICELOC, locator), | ||
| 923 | .field_name = "locator", | ||
| 924 | .item = &ACCESS_DESCRIPTION_it, | ||
| 925 | }, | ||
| 926 | }; | ||
| 927 | |||
| 928 | const ASN1_ITEM OCSP_SERVICELOC_it = { | ||
| 929 | .itype = ASN1_ITYPE_SEQUENCE, | ||
| 930 | .utype = V_ASN1_SEQUENCE, | ||
| 931 | .templates = OCSP_SERVICELOC_seq_tt, | ||
| 932 | .tcount = sizeof(OCSP_SERVICELOC_seq_tt) / sizeof(ASN1_TEMPLATE), | ||
| 933 | .funcs = NULL, | ||
| 934 | .size = sizeof(OCSP_SERVICELOC), | ||
| 935 | .sname = "OCSP_SERVICELOC", | ||
| 936 | }; | ||
| 517 | 937 | ||
| 518 | 938 | ||
| 519 | OCSP_SERVICELOC * | 939 | OCSP_SERVICELOC * |
