summaryrefslogtreecommitdiffstats
path: root/lib/libssl/src
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libssl/src')
-rw-r--r--lib/libssl/src/crypto/dh/dh_asn1.c48
-rw-r--r--lib/libssl/src/crypto/dsa/dsa_asn1.c242
-rw-r--r--lib/libssl/src/crypto/rsa/rsa_asn1.c186
3 files changed, 416 insertions, 60 deletions
diff --git a/lib/libssl/src/crypto/dh/dh_asn1.c b/lib/libssl/src/crypto/dh/dh_asn1.c
index 9d769746595..7060130ed86 100644
--- a/lib/libssl/src/crypto/dh/dh_asn1.c
+++ b/lib/libssl/src/crypto/dh/dh_asn1.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dh_asn1.c,v 1.7 2015/02/10 05:12:23 jsing Exp $ */
+/* $OpenBSD: dh_asn1.c,v 1.8 2015/02/14 15:06:55 jsing Exp $ */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project 2000.
*/
@@ -80,11 +80,47 @@ dh_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg)
return 1;
}
-ASN1_SEQUENCE_cb(DHparams, dh_cb) = {
- ASN1_SIMPLE(DH, p, BIGNUM),
- ASN1_SIMPLE(DH, g, BIGNUM),
- ASN1_OPT(DH, length, ZLONG),
-} ASN1_SEQUENCE_END_cb(DH, DHparams)
+static const ASN1_AUX DHparams_aux = {
+ .app_data = NULL,
+ .flags = 0,
+ .ref_offset = 0,
+ .ref_lock = 0,
+ .asn1_cb = dh_cb,
+ .enc_offset = 0,
+};
+static const ASN1_TEMPLATE DHparams_seq_tt[] = {
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(DH, p),
+ .field_name = "p",
+ .item = &BIGNUM_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(DH, g),
+ .field_name = "g",
+ .item = &BIGNUM_it,
+ },
+ {
+ .flags = ASN1_TFLG_OPTIONAL,
+ .tag = 0,
+ .offset = offsetof(DH, length),
+ .field_name = "length",
+ .item = &ZLONG_it,
+ },
+};
+
+const ASN1_ITEM DHparams_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = DHparams_seq_tt,
+ .tcount = sizeof(DHparams_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = &DHparams_aux,
+ .size = sizeof(DH),
+ .sname = "DH",
+};
DH *
diff --git a/lib/libssl/src/crypto/dsa/dsa_asn1.c b/lib/libssl/src/crypto/dsa/dsa_asn1.c
index c6b00923fc9..8c5d93105ca 100644
--- a/lib/libssl/src/crypto/dsa/dsa_asn1.c
+++ b/lib/libssl/src/crypto/dsa/dsa_asn1.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dsa_asn1.c,v 1.15 2015/02/10 05:12:23 jsing Exp $ */
+/* $OpenBSD: dsa_asn1.c,v 1.16 2015/02/14 15:06:55 jsing Exp $ */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project 2000.
*/
@@ -84,10 +84,40 @@ sig_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg)
return 1;
}
-ASN1_SEQUENCE_cb(DSA_SIG, sig_cb) = {
- ASN1_SIMPLE(DSA_SIG, r, CBIGNUM),
- ASN1_SIMPLE(DSA_SIG, s, CBIGNUM)
-} ASN1_SEQUENCE_END_cb(DSA_SIG, DSA_SIG)
+static const ASN1_AUX DSA_SIG_aux = {
+ .app_data = NULL,
+ .flags = 0,
+ .ref_offset = 0,
+ .ref_lock = 0,
+ .asn1_cb = sig_cb,
+ .enc_offset = 0,
+};
+static const ASN1_TEMPLATE DSA_SIG_seq_tt[] = {
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(DSA_SIG, r),
+ .field_name = "r",
+ .item = &CBIGNUM_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(DSA_SIG, s),
+ .field_name = "s",
+ .item = &CBIGNUM_it,
+ },
+};
+
+const ASN1_ITEM DSA_SIG_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = DSA_SIG_seq_tt,
+ .tcount = sizeof(DSA_SIG_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = &DSA_SIG_aux,
+ .size = sizeof(DSA_SIG),
+ .sname = "DSA_SIG",
+};
DSA_SIG *
@@ -120,14 +150,68 @@ dsa_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg)
return 1;
}
-ASN1_SEQUENCE_cb(DSAPrivateKey, dsa_cb) = {
- ASN1_SIMPLE(DSA, version, LONG),
- ASN1_SIMPLE(DSA, p, BIGNUM),
- ASN1_SIMPLE(DSA, q, BIGNUM),
- ASN1_SIMPLE(DSA, g, BIGNUM),
- ASN1_SIMPLE(DSA, pub_key, BIGNUM),
- ASN1_SIMPLE(DSA, priv_key, BIGNUM)
-} ASN1_SEQUENCE_END_cb(DSA, DSAPrivateKey)
+static const ASN1_AUX DSAPrivateKey_aux = {
+ .app_data = NULL,
+ .flags = 0,
+ .ref_offset = 0,
+ .ref_lock = 0,
+ .asn1_cb = dsa_cb,
+ .enc_offset = 0,
+};
+static const ASN1_TEMPLATE DSAPrivateKey_seq_tt[] = {
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(DSA, version),
+ .field_name = "version",
+ .item = &LONG_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(DSA, p),
+ .field_name = "p",
+ .item = &BIGNUM_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(DSA, q),
+ .field_name = "q",
+ .item = &BIGNUM_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(DSA, g),
+ .field_name = "g",
+ .item = &BIGNUM_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(DSA, pub_key),
+ .field_name = "pub_key",
+ .item = &BIGNUM_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(DSA, priv_key),
+ .field_name = "priv_key",
+ .item = &BIGNUM_it,
+ },
+};
+
+const ASN1_ITEM DSAPrivateKey_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = DSAPrivateKey_seq_tt,
+ .tcount = sizeof(DSAPrivateKey_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = &DSAPrivateKey_aux,
+ .size = sizeof(DSA),
+ .sname = "DSA",
+};
DSA *
@@ -143,11 +227,47 @@ i2d_DSAPrivateKey(const DSA *a, unsigned char **out)
return ASN1_item_i2d((ASN1_VALUE *)a, out, &DSAPrivateKey_it);
}
-ASN1_SEQUENCE_cb(DSAparams, dsa_cb) = {
- ASN1_SIMPLE(DSA, p, BIGNUM),
- ASN1_SIMPLE(DSA, q, BIGNUM),
- ASN1_SIMPLE(DSA, g, BIGNUM),
-} ASN1_SEQUENCE_END_cb(DSA, DSAparams)
+static const ASN1_AUX DSAparams_aux = {
+ .app_data = NULL,
+ .flags = 0,
+ .ref_offset = 0,
+ .ref_lock = 0,
+ .asn1_cb = dsa_cb,
+ .enc_offset = 0,
+};
+static const ASN1_TEMPLATE DSAparams_seq_tt[] = {
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(DSA, p),
+ .field_name = "p",
+ .item = &BIGNUM_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(DSA, q),
+ .field_name = "q",
+ .item = &BIGNUM_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(DSA, g),
+ .field_name = "g",
+ .item = &BIGNUM_it,
+ },
+};
+
+const ASN1_ITEM DSAparams_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = DSAparams_seq_tt,
+ .tcount = sizeof(DSAparams_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = &DSAparams_aux,
+ .size = sizeof(DSA),
+ .sname = "DSA",
+};
DSA *
@@ -170,17 +290,81 @@ i2d_DSAparams(const DSA *a, unsigned char **out)
* in a SEQUENCE
*/
-ASN1_SEQUENCE(dsa_pub_internal) = {
- ASN1_SIMPLE(DSA, pub_key, BIGNUM),
- ASN1_SIMPLE(DSA, p, BIGNUM),
- ASN1_SIMPLE(DSA, q, BIGNUM),
- ASN1_SIMPLE(DSA, g, BIGNUM)
-} ASN1_SEQUENCE_END_name(DSA, dsa_pub_internal)
-
-ASN1_CHOICE_cb(DSAPublicKey, dsa_cb) = {
- ASN1_SIMPLE(DSA, pub_key, BIGNUM),
- ASN1_EX_COMBINE(0, 0, dsa_pub_internal)
-} ASN1_CHOICE_END_cb(DSA, DSAPublicKey, write_params)
+static const ASN1_TEMPLATE dsa_pub_internal_seq_tt[] = {
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(DSA, pub_key),
+ .field_name = "pub_key",
+ .item = &BIGNUM_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(DSA, p),
+ .field_name = "p",
+ .item = &BIGNUM_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(DSA, q),
+ .field_name = "q",
+ .item = &BIGNUM_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(DSA, g),
+ .field_name = "g",
+ .item = &BIGNUM_it,
+ },
+};
+
+const ASN1_ITEM dsa_pub_internal_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = dsa_pub_internal_seq_tt,
+ .tcount = sizeof(dsa_pub_internal_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(DSA),
+ .sname = "DSA",
+};
+
+static const ASN1_AUX DSAPublicKey_aux = {
+ .app_data = NULL,
+ .flags = 0,
+ .ref_offset = 0,
+ .ref_lock = 0,
+ .asn1_cb = dsa_cb,
+ .enc_offset = 0,
+};
+static const ASN1_TEMPLATE DSAPublicKey_ch_tt[] = {
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(DSA, pub_key),
+ .field_name = "pub_key",
+ .item = &BIGNUM_it,
+ },
+ {
+ .flags = 0 | ASN1_TFLG_COMBINE,
+ .tag = 0,
+ .offset = 0,
+ .field_name = NULL,
+ .item = &dsa_pub_internal_it,
+ },
+};
+
+const ASN1_ITEM DSAPublicKey_it = {
+ .itype = ASN1_ITYPE_CHOICE,
+ .utype = offsetof(DSA, write_params),
+ .templates = DSAPublicKey_ch_tt,
+ .tcount = sizeof(DSAPublicKey_ch_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = &DSAPublicKey_aux,
+ .size = sizeof(DSA),
+ .sname = "DSA",
+};
DSA *
diff --git a/lib/libssl/src/crypto/rsa/rsa_asn1.c b/lib/libssl/src/crypto/rsa/rsa_asn1.c
index 525c9455bdb..27afdece008 100644
--- a/lib/libssl/src/crypto/rsa/rsa_asn1.c
+++ b/lib/libssl/src/crypto/rsa/rsa_asn1.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rsa_asn1.c,v 1.11 2015/02/10 05:12:23 jsing Exp $ */
+/* $OpenBSD: rsa_asn1.c,v 1.12 2015/02/14 15:06:55 jsing Exp $ */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project 2000.
*/
@@ -80,30 +80,166 @@ rsa_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it, void *exarg)
return 1;
}
-ASN1_SEQUENCE_cb(RSAPrivateKey, rsa_cb) = {
- ASN1_SIMPLE(RSA, version, LONG),
- ASN1_SIMPLE(RSA, n, BIGNUM),
- ASN1_SIMPLE(RSA, e, BIGNUM),
- ASN1_SIMPLE(RSA, d, BIGNUM),
- ASN1_SIMPLE(RSA, p, BIGNUM),
- ASN1_SIMPLE(RSA, q, BIGNUM),
- ASN1_SIMPLE(RSA, dmp1, BIGNUM),
- ASN1_SIMPLE(RSA, dmq1, BIGNUM),
- ASN1_SIMPLE(RSA, iqmp, BIGNUM)
-} ASN1_SEQUENCE_END_cb(RSA, RSAPrivateKey)
-
-
-ASN1_SEQUENCE_cb(RSAPublicKey, rsa_cb) = {
- ASN1_SIMPLE(RSA, n, BIGNUM),
- ASN1_SIMPLE(RSA, e, BIGNUM),
-} ASN1_SEQUENCE_END_cb(RSA, RSAPublicKey)
-
-ASN1_SEQUENCE(RSA_PSS_PARAMS) = {
- ASN1_EXP_OPT(RSA_PSS_PARAMS, hashAlgorithm, X509_ALGOR, 0),
- ASN1_EXP_OPT(RSA_PSS_PARAMS, maskGenAlgorithm, X509_ALGOR, 1),
- ASN1_EXP_OPT(RSA_PSS_PARAMS, saltLength, ASN1_INTEGER, 2),
- ASN1_EXP_OPT(RSA_PSS_PARAMS, trailerField, ASN1_INTEGER, 3)
-} ASN1_SEQUENCE_END(RSA_PSS_PARAMS)
+static const ASN1_AUX RSAPrivateKey_aux = {
+ .app_data = NULL,
+ .flags = 0,
+ .ref_offset = 0,
+ .ref_lock = 0,
+ .asn1_cb = rsa_cb,
+ .enc_offset = 0,
+};
+static const ASN1_TEMPLATE RSAPrivateKey_seq_tt[] = {
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(RSA, version),
+ .field_name = "version",
+ .item = &LONG_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(RSA, n),
+ .field_name = "n",
+ .item = &BIGNUM_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(RSA, e),
+ .field_name = "e",
+ .item = &BIGNUM_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(RSA, d),
+ .field_name = "d",
+ .item = &BIGNUM_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(RSA, p),
+ .field_name = "p",
+ .item = &BIGNUM_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(RSA, q),
+ .field_name = "q",
+ .item = &BIGNUM_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(RSA, dmp1),
+ .field_name = "dmp1",
+ .item = &BIGNUM_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(RSA, dmq1),
+ .field_name = "dmq1",
+ .item = &BIGNUM_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(RSA, iqmp),
+ .field_name = "iqmp",
+ .item = &BIGNUM_it,
+ },
+};
+
+const ASN1_ITEM RSAPrivateKey_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = RSAPrivateKey_seq_tt,
+ .tcount = sizeof(RSAPrivateKey_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = &RSAPrivateKey_aux,
+ .size = sizeof(RSA),
+ .sname = "RSA",
+};
+
+
+static const ASN1_AUX RSAPublicKey_aux = {
+ .app_data = NULL,
+ .flags = 0,
+ .ref_offset = 0,
+ .ref_lock = 0,
+ .asn1_cb = rsa_cb,
+ .enc_offset = 0,
+};
+static const ASN1_TEMPLATE RSAPublicKey_seq_tt[] = {
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(RSA, n),
+ .field_name = "n",
+ .item = &BIGNUM_it,
+ },
+ {
+ .flags = 0,
+ .tag = 0,
+ .offset = offsetof(RSA, e),
+ .field_name = "e",
+ .item = &BIGNUM_it,
+ },
+};
+
+const ASN1_ITEM RSAPublicKey_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = RSAPublicKey_seq_tt,
+ .tcount = sizeof(RSAPublicKey_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = &RSAPublicKey_aux,
+ .size = sizeof(RSA),
+ .sname = "RSA",
+};
+
+static const ASN1_TEMPLATE RSA_PSS_PARAMS_seq_tt[] = {
+ {
+ .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
+ .tag = 0,
+ .offset = offsetof(RSA_PSS_PARAMS, hashAlgorithm),
+ .field_name = "hashAlgorithm",
+ .item = &X509_ALGOR_it,
+ },
+ {
+ .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
+ .tag = 1,
+ .offset = offsetof(RSA_PSS_PARAMS, maskGenAlgorithm),
+ .field_name = "maskGenAlgorithm",
+ .item = &X509_ALGOR_it,
+ },
+ {
+ .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
+ .tag = 2,
+ .offset = offsetof(RSA_PSS_PARAMS, saltLength),
+ .field_name = "saltLength",
+ .item = &ASN1_INTEGER_it,
+ },
+ {
+ .flags = ASN1_TFLG_EXPLICIT | ASN1_TFLG_OPTIONAL,
+ .tag = 3,
+ .offset = offsetof(RSA_PSS_PARAMS, trailerField),
+ .field_name = "trailerField",
+ .item = &ASN1_INTEGER_it,
+ },
+};
+
+const ASN1_ITEM RSA_PSS_PARAMS_it = {
+ .itype = ASN1_ITYPE_SEQUENCE,
+ .utype = V_ASN1_SEQUENCE,
+ .templates = RSA_PSS_PARAMS_seq_tt,
+ .tcount = sizeof(RSA_PSS_PARAMS_seq_tt) / sizeof(ASN1_TEMPLATE),
+ .funcs = NULL,
+ .size = sizeof(RSA_PSS_PARAMS),
+ .sname = "RSA_PSS_PARAMS",
+};
RSA_PSS_PARAMS *