From dd33b182f2b43795910c8105f9def46b8ed87cb9 Mon Sep 17 00:00:00 2001 From: jsing <> Date: Sat, 14 Feb 2015 14:56:45 +0000 Subject: Expand ASN1_CHOICE*, ASN1_SEQUENCE* and associated macros, making the data structures visible and easier to review, without having to wade through layers and layers of asn1t.h macros. Change has been scripted and there is no change to the generated assembly. Discussed with beck@ miod@ tedu@ --- src/lib/libcrypto/asn1/x_attrib.c | 62 ++++++++++++++++++++++++++----- src/lib/libssl/src/crypto/asn1/x_attrib.c | 62 ++++++++++++++++++++++++++----- 2 files changed, 106 insertions(+), 18 deletions(-) diff --git a/src/lib/libcrypto/asn1/x_attrib.c b/src/lib/libcrypto/asn1/x_attrib.c index 9c00906ded..bb74a1b6c7 100644 --- a/src/lib/libcrypto/asn1/x_attrib.c +++ b/src/lib/libcrypto/asn1/x_attrib.c @@ -1,4 +1,4 @@ -/* $OpenBSD: x_attrib.c,v 1.12 2015/02/10 05:25:45 jsing Exp $ */ +/* $OpenBSD: x_attrib.c,v 1.13 2015/02/14 14:56:45 jsing Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -82,16 +82,60 @@ * SET OF structure. */ -ASN1_CHOICE(X509_ATTRIBUTE_SET) = { - ASN1_SET_OF(X509_ATTRIBUTE, value.set, ASN1_ANY), - ASN1_SIMPLE(X509_ATTRIBUTE, value.single, ASN1_ANY) -} ASN1_CHOICE_END_selector(X509_ATTRIBUTE, X509_ATTRIBUTE_SET, single) +static const ASN1_TEMPLATE X509_ATTRIBUTE_SET_ch_tt[] = { + { + .flags = ASN1_TFLG_SET_OF, + .tag = 0, + .offset = offsetof(X509_ATTRIBUTE, value.set), + .field_name = "value.set", + .item = &ASN1_ANY_it, + }, + { + .flags = 0, + .tag = 0, + .offset = offsetof(X509_ATTRIBUTE, value.single), + .field_name = "value.single", + .item = &ASN1_ANY_it, + }, +}; -ASN1_SEQUENCE(X509_ATTRIBUTE) = { - ASN1_SIMPLE(X509_ATTRIBUTE, object, ASN1_OBJECT), +const ASN1_ITEM X509_ATTRIBUTE_SET_it = { + .itype = ASN1_ITYPE_CHOICE, + .utype = offsetof(X509_ATTRIBUTE, single), + .templates = X509_ATTRIBUTE_SET_ch_tt, + .tcount = sizeof(X509_ATTRIBUTE_SET_ch_tt) / sizeof(ASN1_TEMPLATE), + .funcs = NULL, + .size = sizeof(X509_ATTRIBUTE), + .sname = "X509_ATTRIBUTE", +}; + +static const ASN1_TEMPLATE X509_ATTRIBUTE_seq_tt[] = { + { + .flags = 0, + .tag = 0, + .offset = offsetof(X509_ATTRIBUTE, object), + .field_name = "object", + .item = &ASN1_OBJECT_it, + }, /* CHOICE type merged with parent */ - ASN1_EX_COMBINE(0, 0, X509_ATTRIBUTE_SET) -} ASN1_SEQUENCE_END(X509_ATTRIBUTE) + { + .flags = 0 | ASN1_TFLG_COMBINE, + .tag = 0, + .offset = 0, + .field_name = NULL, + .item = &X509_ATTRIBUTE_SET_it, + }, +}; + +const ASN1_ITEM X509_ATTRIBUTE_it = { + .itype = ASN1_ITYPE_SEQUENCE, + .utype = V_ASN1_SEQUENCE, + .templates = X509_ATTRIBUTE_seq_tt, + .tcount = sizeof(X509_ATTRIBUTE_seq_tt) / sizeof(ASN1_TEMPLATE), + .funcs = NULL, + .size = sizeof(X509_ATTRIBUTE), + .sname = "X509_ATTRIBUTE", +}; X509_ATTRIBUTE * diff --git a/src/lib/libssl/src/crypto/asn1/x_attrib.c b/src/lib/libssl/src/crypto/asn1/x_attrib.c index 9c00906ded..bb74a1b6c7 100644 --- a/src/lib/libssl/src/crypto/asn1/x_attrib.c +++ b/src/lib/libssl/src/crypto/asn1/x_attrib.c @@ -1,4 +1,4 @@ -/* $OpenBSD: x_attrib.c,v 1.12 2015/02/10 05:25:45 jsing Exp $ */ +/* $OpenBSD: x_attrib.c,v 1.13 2015/02/14 14:56:45 jsing Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -82,16 +82,60 @@ * SET OF structure. */ -ASN1_CHOICE(X509_ATTRIBUTE_SET) = { - ASN1_SET_OF(X509_ATTRIBUTE, value.set, ASN1_ANY), - ASN1_SIMPLE(X509_ATTRIBUTE, value.single, ASN1_ANY) -} ASN1_CHOICE_END_selector(X509_ATTRIBUTE, X509_ATTRIBUTE_SET, single) +static const ASN1_TEMPLATE X509_ATTRIBUTE_SET_ch_tt[] = { + { + .flags = ASN1_TFLG_SET_OF, + .tag = 0, + .offset = offsetof(X509_ATTRIBUTE, value.set), + .field_name = "value.set", + .item = &ASN1_ANY_it, + }, + { + .flags = 0, + .tag = 0, + .offset = offsetof(X509_ATTRIBUTE, value.single), + .field_name = "value.single", + .item = &ASN1_ANY_it, + }, +}; -ASN1_SEQUENCE(X509_ATTRIBUTE) = { - ASN1_SIMPLE(X509_ATTRIBUTE, object, ASN1_OBJECT), +const ASN1_ITEM X509_ATTRIBUTE_SET_it = { + .itype = ASN1_ITYPE_CHOICE, + .utype = offsetof(X509_ATTRIBUTE, single), + .templates = X509_ATTRIBUTE_SET_ch_tt, + .tcount = sizeof(X509_ATTRIBUTE_SET_ch_tt) / sizeof(ASN1_TEMPLATE), + .funcs = NULL, + .size = sizeof(X509_ATTRIBUTE), + .sname = "X509_ATTRIBUTE", +}; + +static const ASN1_TEMPLATE X509_ATTRIBUTE_seq_tt[] = { + { + .flags = 0, + .tag = 0, + .offset = offsetof(X509_ATTRIBUTE, object), + .field_name = "object", + .item = &ASN1_OBJECT_it, + }, /* CHOICE type merged with parent */ - ASN1_EX_COMBINE(0, 0, X509_ATTRIBUTE_SET) -} ASN1_SEQUENCE_END(X509_ATTRIBUTE) + { + .flags = 0 | ASN1_TFLG_COMBINE, + .tag = 0, + .offset = 0, + .field_name = NULL, + .item = &X509_ATTRIBUTE_SET_it, + }, +}; + +const ASN1_ITEM X509_ATTRIBUTE_it = { + .itype = ASN1_ITYPE_SEQUENCE, + .utype = V_ASN1_SEQUENCE, + .templates = X509_ATTRIBUTE_seq_tt, + .tcount = sizeof(X509_ATTRIBUTE_seq_tt) / sizeof(ASN1_TEMPLATE), + .funcs = NULL, + .size = sizeof(X509_ATTRIBUTE), + .sname = "X509_ATTRIBUTE", +}; X509_ATTRIBUTE * -- cgit v1.2.3-55-g6feb