Nicolas Williams
51d3cb376a
asn1: Make templating less fragile: test it more
...
`lib/asn1/check-gen.c` almost works with templates, and is a pretty
extensive test. The only thing that fails is everything to do with
IMPLICIT tags (so, `test_implicit()`).
So now we compile `lib/asn1/test.asn1` both, w/ and w/o templating, and
we build two programs from `lib/asn1/check-gen.c`: `check-gen` and
`check-gen-template`, respectively linking with the non-templated and
the templated compilation of `lib/asn1/test.asn1`.
Because the template compiler still doesn't support IMPLICIT tagging
well, we disable testing of IMPLICIT tags in `check-gen-template`.
This will make it much harder to break the template compiler in the
future.
2021-01-22 13:47:08 -06:00
Nicolas Williams
81195acafa
asn1: Further IMPLICIT tagging fixes
...
Commit 89389bc7a
(asn1: Fix long-standing IMPLICIT tagging brokenness)
was incomplete. Removing the hacks in lib/asn1/cms.asn1 revealed this.
Now the ASN.1 compiler generates enums to indicate what is the class and
tag of each type. This is needed so the decoder functions generated by
the compiler can know what tag to restore.
Now, too, the compiler does handle IMPLICIT tags whose encoded length is
different from that of the underlying type.
However, we now don't handle indefinite BER and non-DER definite lengths
(DCE) following IMPLICIT tags. This would affect only CMS in-tree.
2021-01-20 21:04:34 -06:00
Nicolas Williams
7f1cfb0396
asn1: Add sample from X.690 Appendix A
...
This helped find a bug fixed in the preceding commit.
This also depends on the earlier fixes to IMPLICT tagging support, thus
implementing a test of that using a test vector from a standard.
2021-01-13 20:17:58 -06:00
Viktor Dukhovni
f9749627f0
New test case detects previous template bug
2016-11-09 18:34:24 -05:00
Viktor Dukhovni
9be93ad9ff
Fix typo
2016-11-09 11:50:07 -05:00
Viktor Dukhovni
be2527500d
Restored check-gen.c inadvertently deleted
2016-11-09 11:40:57 -05:00
Viktor Dukhovni
3d590d651f
Reapply incorectly reverted gen_template bugfix
...
Without this, template memory allocation is incorrect for nested
sequences, which, as luck would have it, breaks tests on NetBSD
(whose malloc seems to give tighter allocations).
This partly undoes:
commit 060474df16
Author: Love Hornquist Astrand <lha@h5l.org >
Date: Mon Jun 3 21:45:51 2013 -0700
quel 64bit warnings, fixup implicit encoding for template,
fix spelling
Restoring changes from:
commit 5e081aa4a6
Author: Viktor Dukhovni <viktor@dukhovni.org >
Date: Sun May 27 08:07:28 2012 +0000
Fix ASN.1 template compiler bug and add test cases more
likely to trip on similar (structure size/type) errors
For example, without the bugfix, the sizeof(...) argument in multiple
generated nested structure templates is wrong, as seen in the bad vs.
good diff:
--- test_template_asn1-template.c 2016-11-09 08:23:21.000000000 +0000
+++ test_template_asn1-template.c 2016-11-09 08:23:40.000000000 +0000
@@ -593,3 +593,3 @@
const struct asn1_template asn1_TESTImplicit_tag_ti2_26[] = {
-/* 0 */ { 0, sizeof(struct TESTImplicit), ((void *)1) },
+/* 0 */ { 0, sizeof(struct TESTImplicit_ti2), ((void *)1) },
/* 1 */ { A1_TAG_T(ASN1_C_CONTEXT,CONS,127), offsetof(struct TESTImplicit_ti2, foo), asn1_TESTLargeTag_tag_foo_4 }
@@ -1618,3 +1618,3 @@
const struct asn1_template asn1_TESTSeqOf2_tag_strings_68[] = {
-/* 0 */ { 0, sizeof(struct TESTSeqOf2), ((void *)1) },
+/* 0 */ { 0, sizeof(struct TESTSeqOf2_strings), ((void *)1) },
/* 1 */ { A1_OP_SEQOF, 0, asn1_TESTSeqOfSeq2_val_tag_string_60 }
@@ -1679,3 +1679,3 @@
const struct asn1_template asn1_TESTSeqOf3_tag_strings_71[] = {
-/* 0 */ { 0, sizeof(struct TESTSeqOf3), ((void *)1) },
+/* 0 */ { 0, sizeof(struct TESTSeqOf3_strings), ((void *)1) },
/* 1 */ { A1_OP_SEQOF, 0, asn1_TESTSeqOfSeq2_val_tag_string_60 }
@@ -1760,3 +1760,3 @@
const struct asn1_template asn1_TESTSeqOf4_tag_b1_75[] = {
-/* 0 */ { 0, sizeof(struct TESTSeqOf4), ((void *)1) },
+/* 0 */ { 0, sizeof(struct TESTSeqOf4_b1), ((void *)1) },
/* 1 */ { A1_OP_SEQOF, 0, asn1_TESTSeqOf4_seofTstruct_10 }
@@ -1765,3 +1765,3 @@
const struct asn1_template asn1_TESTSeqOf4_tag_b1_74[] = {
-/* 0 */ { 0, sizeof(struct TESTSeqOf4), ((void *)1) },
+/* 0 */ { 0, sizeof(struct TESTSeqOf4_b1), ((void *)1) },
/* 1 */ { A1_TAG_T(ASN1_C_UNIV,CONS,UT_Sequence), 0, asn1_TESTSeqOf4_tag_b1_75 }
@@ -1801,3 +1801,3 @@
const struct asn1_template asn1_TESTSeqOf4_tag_b2_79[] = {
-/* 0 */ { 0, sizeof(struct TESTSeqOf4), ((void *)1) },
+/* 0 */ { 0, sizeof(struct TESTSeqOf4_b2), ((void *)1) },
/* 1 */ { A1_OP_SEQOF, 0, asn1_TESTSeqOf4_seofTstruct_11 }
@@ -1842,3 +1842,3 @@
const struct asn1_template asn1_TESTSeqOf4_tag_b3_84[] = {
-/* 0 */ { 0, sizeof(struct TESTSeqOf4), ((void *)1) },
+/* 0 */ { 0, sizeof(struct TESTSeqOf4_b3), ((void *)1) },
/* 1 */ { A1_OP_SEQOF, 0, asn1_TESTSeqOf4_seofTstruct_12 }
2016-11-09 03:33:34 -05:00
Love Hornquist Astrand
060474df16
quel 64bit warnings, fixup implicit encoding for template, fix spelling
2013-06-03 21:46:20 -07:00
Viktor Dukhovni
5e081aa4a6
Fix ASN.1 template compiler bug and add test cases more likely to trip on similar (structure size/type) errors
...
Signed-off-by: Roland C. Dowdeswell <elric@imrryr.org >
2012-06-05 22:05:35 +01:00
Roland C. Dowdeswell
cc47c8fa7b
Turn on -Wextra -Wno-sign-compare -Wno-unused-paramter and fix issues.
...
We turn on a few extra warnings and fix the fallout that occurs
when building with --enable-developer. Note that we get different
warnings on different machines and so this will be a work in
progress. So far, we have built on NetBSD/amd64 5.99.64 (which
uses gcc 4.5.3) and Ubuntu 10.04.3 LTS (which uses gcc 4.4.3).
Notably, we fixed
1. a lot of missing structure initialisers,
2. unchecked return values for functions that glibc
marks as __attribute__((warn-unused-result)),
3. made minor modifications to slc and asn1_compile
which can generate code which generates warnings,
and
4. a few stragglers here and there.
We turned off the extended warnings for many programs in appl/ as
they are nearing the end of their useful lifetime, e.g. rsh, rcp,
popper, ftp and telnet.
Interestingly, glibc's strncmp() macro needed to be worked around
whereas the function calls did not.
We have not yet tried this on 32 bit platforms, so there will be
a few more warnings when we do.
2012-02-20 19:45:41 +00:00
Nicolas Williams
a222521e68
64-bit build fixes for ASN.1 compiler 64-bit integer support
2011-12-13 13:03:57 -06:00
Love Hornquist Astrand
80fd2959b9
check length of TESTuint64
2011-12-12 23:13:47 -08:00
Nicolas Williams
19d378f44d
Add 64-bit integer support to ASN.1 compiler
...
ASN.1 INTEGERs will now compile to C int64_t or uint64_t, depending
on whether the constraint ranges include numbers that cannot be
represented in 32-bit ints and whether they include negative
numbers.
Template backend support included. check-template is now built with
--template, so we know we're testing it.
Tests included.
2011-12-12 20:01:20 -06:00
Jeffrey Altman
b8ce309acb
Permit TESTMechType array to initialize on Windows (C89)
...
Change-Id: I3c006b9c45f29b129ad6f5102792c1e912bd9c8e
2011-07-21 11:36:31 -04:00
Love Hornquist Astrand
1a77d64a97
check encoding of MechTypeList
2011-05-07 06:34:36 -07:00
Love Hornquist Astrand
fa4c84e6d6
make printablestring and ia5string octetstrings
2010-08-08 15:51:33 -07:00
Love Hornquist Astrand
e65154c6db
catch error from as.*printf
2010-05-30 14:48:48 -07:00
Love Hornquist Astrand
b939943b07
first stange of asn1 table driven compiler
2009-11-21 10:24:56 -08:00
Love Hörnquist Åstrand
0e6b5c5c22
remove trailing whitespace
...
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@25232 ec53bebd-3082-4978-b11e-865c3cabbd6b
2009-05-28 01:17:17 +00:00
Love Hörnquist Åstrand
6937d41a02
remove trailing whitespace
...
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23815 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-09-13 09:21:03 +00:00
Love Hörnquist Åstrand
e172367898
switch to utf8 encoding of all files
...
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23814 ec53bebd-3082-4978-b11e-865c3cabbd6b
2008-09-13 08:53:55 +00:00
Love Hörnquist Åstrand
7e39290a32
test SEQ OF SIZE (...)
...
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@21539 ec53bebd-3082-4978-b11e-865c3cabbd6b
2007-07-14 16:12:04 +00:00
Love Hörnquist Åstrand
d2c12f1435
(test_authenticator): free memory
...
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@20837 ec53bebd-3082-4978-b11e-865c3cabbd6b
2007-06-03 13:24:47 +00:00
Love Hörnquist Åstrand
7c114c4051
(check_seq): free seq.
...
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@20546 ec53bebd-3082-4978-b11e-865c3cabbd6b
2007-04-24 09:50:37 +00:00
Love Hörnquist Åstrand
b9736129b2
Check all other silly bitstring combinations.
...
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@19569 ec53bebd-3082-4978-b11e-865c3cabbd6b
2006-12-29 17:25:21 +00:00
Love Hörnquist Åstrand
360e32e201
unbreak
...
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@18791 ec53bebd-3082-4978-b11e-865c3cabbd6b
2006-10-21 20:51:17 +00:00
Love Hörnquist Åstrand
6f6a02b312
avoid leaking memory
...
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@18769 ec53bebd-3082-4978-b11e-865c3cabbd6b
2006-10-21 18:27:59 +00:00
Love Hörnquist Åstrand
83a1f5bc00
Add sequence tests.
...
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@18014 ec53bebd-3082-4978-b11e-865c3cabbd6b
2006-09-05 14:15:53 +00:00
Love Hörnquist Åstrand
3ec55439c0
check for "tagless ANY OPTIONAL"
...
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@16671 ec53bebd-3082-4978-b11e-865c3cabbd6b
2006-01-31 09:42:31 +00:00
Love Hörnquist Åstrand
88df0535c2
Check OPTIONAL context-tagless elements.
...
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@16590 ec53bebd-3082-4978-b11e-865c3cabbd6b
2006-01-18 17:26:25 +00:00
Love Hörnquist Åstrand
a1d193721c
Don't depend on malloc(very-very-larger-value) will fail.
...
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@16056 ec53bebd-3082-4978-b11e-865c3cabbd6b
2005-09-13 19:35:32 +00:00
Love Hörnquist Åstrand
3b70a5f5e3
Fix signedness warnings.
...
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@16055 ec53bebd-3082-4978-b11e-865c3cabbd6b
2005-09-13 19:24:23 +00:00
Love Hörnquist Åstrand
a1d804e568
change to c89 comment
...
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@15771 ec53bebd-3082-4978-b11e-865c3cabbd6b
2005-07-27 11:53:39 +00:00
Love Hörnquist Åstrand
5dfc656f1e
Two implicit tests, one with all structures inlined
...
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@15703 ec53bebd-3082-4978-b11e-865c3cabbd6b
2005-07-21 20:48:27 +00:00
Love Hörnquist Åstrand
f9186683ce
Added #ifdef out test for IMPLICIT tagging.
...
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@15698 ec53bebd-3082-4978-b11e-865c3cabbd6b
2005-07-21 19:47:58 +00:00
Love Hörnquist Åstrand
b49d932283
(cmp_Name): do at least some checking
...
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@15626 ec53bebd-3082-4978-b11e-865c3cabbd6b
2005-07-12 18:05:29 +00:00
Love Hörnquist Åstrand
b838707d0e
Commit much improved ASN.1 compiler from joda-choice-branch.
...
Highlighs for the compiler is support for CHOICE and in general better
support for tags. This compiler support most of what is needed for
PK-INIT, LDAP, X.509, PKCS-12 and many other protocols.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@15617 ec53bebd-3082-4978-b11e-865c3cabbd6b
2005-07-12 06:27:42 +00:00
Love Hörnquist Åstrand
0f49388ac2
test for: (length_type): TSequenceOf: add up the size of all the
...
elements, don't use just the size of the last element.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@13313 ec53bebd-3082-4978-b11e-865c3cabbd6b
2004-02-03 22:15:42 +00:00
Johan Danielsson
92c75b1260
there is no \e escape sequence; replace everything with hex-codes, and
...
cast to unsigned char* to make some compilers happy
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@12219 ec53bebd-3082-4978-b11e-865c3cabbd6b
2003-05-06 16:21:19 +00:00
Love Hörnquist Åstrand
2185a5f683
add checks for Authenticator too
...
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@11615 ec53bebd-3082-4978-b11e-865c3cabbd6b
2003-01-26 10:55:07 +00:00
Love Hörnquist Åstrand
350b97991f
add Principal check
...
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@11601 ec53bebd-3082-4978-b11e-865c3cabbd6b
2003-01-23 10:22:39 +00:00