IEEE 1609.2-2016 stub
diff --git a/examples/sample.source.1609.2/Makefile b/examples/sample.source.1609.2/Makefile
new file mode 100644
index 0000000..a66c1c6
--- /dev/null
+++ b/examples/sample.source.1609.2/Makefile
@@ -0,0 +1,398 @@
+ASN_MODULE_SOURCES=	\
+	Uint3.c	\
+	Uint8.c	\
+	Uint16.c	\
+	Uint32.c	\
+	Uint64.c	\
+	SequenceOfUint8.c	\
+	SequenceOfUint16.c	\
+	Opaque.c	\
+	HashedId32.c	\
+	HashedId10.c	\
+	HashedId8.c	\
+	HashedId4.c	\
+	HashedId3.c	\
+	Time32.c	\
+	Time64.c	\
+	ValidityPeriod.c	\
+	Duration.c	\
+	GeographicRegion.c	\
+	CircularRegion.c	\
+	RectangularRegion.c	\
+	SequenceOfRectangularRegion.c	\
+	PolygonalRegion.c	\
+	TwoDLocation.c	\
+	IdentifiedRegion.c	\
+	SequenceOfIdentifiedRegion.c	\
+	CountryOnly.c	\
+	CountryAndRegions.c	\
+	CountryAndSubregions.c	\
+	RegionAndSubregions.c	\
+	SequenceOfRegionAndSubregions.c	\
+	ThreeDLocation.c	\
+	Latitude.c	\
+	Longitude.c	\
+	Elevation.c	\
+	NinetyDegreeInt.c	\
+	KnownLatitude.c	\
+	UnknownLatitude.c	\
+	OneEightyDegreeInt.c	\
+	KnownLongitude.c	\
+	UnknownLongitude.c	\
+	ElevInt.c	\
+	Signature.c	\
+	EcdsaP256Signature.c	\
+	EccP256CurvePoint.c	\
+	SymmAlgorithm.c	\
+	HashAlgorithm.c	\
+	EciesP256EncryptedKey.c	\
+	EncryptionKey.c	\
+	PublicEncryptionKey.c	\
+	BasePublicEncryptionKey.c	\
+	PublicVerificationKey.c	\
+	SymmetricEncryptionKey.c	\
+	PsidSsp.c	\
+	SequenceOfPsidSsp.c	\
+	Psid.c	\
+	SequenceOfPsid.c	\
+	ServiceSpecificPermissions.c	\
+	PsidSspRange.c	\
+	SequenceOfPsidSspRange.c	\
+	SspRange.c	\
+	SequenceOfOctetString.c	\
+	SubjectAssurance.c	\
+	CrlSeries.c	\
+	IValue.c	\
+	Hostname.c	\
+	LinkageValue.c	\
+	GroupLinkageValue.c	\
+	LaId.c	\
+	LinkageSeed.c	\
+	SignedDataPayload.c	\
+	Ieee1609Dot2Data.c	\
+	Ieee1609Dot2Content.c	\
+	SignedData.c	\
+	SignerIdentifier.c	\
+	ToBeSignedData.c	\
+	HashedData.c	\
+	HeaderInfo.c	\
+	MissingCrlIdentifier.c	\
+	Countersignature.c	\
+	EncryptedData.c	\
+	RecipientInfo.c	\
+	SequenceOfRecipientInfo.c	\
+	PreSharedKeyRecipientInfo.c	\
+	SymmRecipientInfo.c	\
+	PKRecipientInfo.c	\
+	EncryptedDataEncryptionKey.c	\
+	SymmetricCiphertext.c	\
+	AesCcmCiphertext.c	\
+	Certificate.c	\
+	SequenceOfCertificate.c	\
+	CertificateBase.c	\
+	CertificateType.c	\
+	ImplicitCertificate.c	\
+	ExplicitCertificate.c	\
+	IssuerIdentifier.c	\
+	ToBeSignedCertificate.c	\
+	CertificateId.c	\
+	LinkageData.c	\
+	EndEntityType.c	\
+	PsidGroupPermissions.c	\
+	SequenceOfPsidGroupPermissions.c	\
+	SubjectPermissions.c	\
+	VerificationKeyIndicator.c
+
+ASN_MODULE_HEADERS=	\
+	Uint3.h	\
+	Uint8.h	\
+	Uint16.h	\
+	Uint32.h	\
+	Uint64.h	\
+	SequenceOfUint8.h	\
+	SequenceOfUint16.h	\
+	Opaque.h	\
+	HashedId32.h	\
+	HashedId10.h	\
+	HashedId8.h	\
+	HashedId4.h	\
+	HashedId3.h	\
+	Time32.h	\
+	Time64.h	\
+	ValidityPeriod.h	\
+	Duration.h	\
+	GeographicRegion.h	\
+	CircularRegion.h	\
+	RectangularRegion.h	\
+	SequenceOfRectangularRegion.h	\
+	PolygonalRegion.h	\
+	TwoDLocation.h	\
+	IdentifiedRegion.h	\
+	SequenceOfIdentifiedRegion.h	\
+	CountryOnly.h	\
+	CountryAndRegions.h	\
+	CountryAndSubregions.h	\
+	RegionAndSubregions.h	\
+	SequenceOfRegionAndSubregions.h	\
+	ThreeDLocation.h	\
+	Latitude.h	\
+	Longitude.h	\
+	Elevation.h	\
+	NinetyDegreeInt.h	\
+	KnownLatitude.h	\
+	UnknownLatitude.h	\
+	OneEightyDegreeInt.h	\
+	KnownLongitude.h	\
+	UnknownLongitude.h	\
+	ElevInt.h	\
+	Signature.h	\
+	EcdsaP256Signature.h	\
+	EccP256CurvePoint.h	\
+	SymmAlgorithm.h	\
+	HashAlgorithm.h	\
+	EciesP256EncryptedKey.h	\
+	EncryptionKey.h	\
+	PublicEncryptionKey.h	\
+	BasePublicEncryptionKey.h	\
+	PublicVerificationKey.h	\
+	SymmetricEncryptionKey.h	\
+	PsidSsp.h	\
+	SequenceOfPsidSsp.h	\
+	Psid.h	\
+	SequenceOfPsid.h	\
+	ServiceSpecificPermissions.h	\
+	PsidSspRange.h	\
+	SequenceOfPsidSspRange.h	\
+	SspRange.h	\
+	SequenceOfOctetString.h	\
+	SubjectAssurance.h	\
+	CrlSeries.h	\
+	IValue.h	\
+	Hostname.h	\
+	LinkageValue.h	\
+	GroupLinkageValue.h	\
+	LaId.h	\
+	LinkageSeed.h	\
+	SignedDataPayload.h	\
+	Ieee1609Dot2Data.h	\
+	Ieee1609Dot2Content.h	\
+	SignedData.h	\
+	SignerIdentifier.h	\
+	ToBeSignedData.h	\
+	HashedData.h	\
+	HeaderInfo.h	\
+	MissingCrlIdentifier.h	\
+	Countersignature.h	\
+	EncryptedData.h	\
+	RecipientInfo.h	\
+	SequenceOfRecipientInfo.h	\
+	PreSharedKeyRecipientInfo.h	\
+	SymmRecipientInfo.h	\
+	PKRecipientInfo.h	\
+	EncryptedDataEncryptionKey.h	\
+	SymmetricCiphertext.h	\
+	AesCcmCiphertext.h	\
+	Certificate.h	\
+	SequenceOfCertificate.h	\
+	CertificateBase.h	\
+	CertificateType.h	\
+	ImplicitCertificate.h	\
+	ExplicitCertificate.h	\
+	IssuerIdentifier.h	\
+	ToBeSignedCertificate.h	\
+	CertificateId.h	\
+	LinkageData.h	\
+	EndEntityType.h	\
+	PsidGroupPermissions.h	\
+	SequenceOfPsidGroupPermissions.h	\
+	SubjectPermissions.h	\
+	VerificationKeyIndicator.h
+
+ASN_MODULE_HEADERS+=UTF8String.h
+ASN_MODULE_HEADERS+=BOOLEAN.h
+ASN_MODULE_SOURCES+=BOOLEAN.c
+ASN_MODULE_HEADERS+=INTEGER.h
+ASN_MODULE_HEADERS+=NativeEnumerated.h
+ASN_MODULE_SOURCES+=INTEGER.c
+ASN_MODULE_HEADERS+=NULL.h
+ASN_MODULE_SOURCES+=NULL.c
+ASN_MODULE_SOURCES+=NativeEnumerated.c
+ASN_MODULE_HEADERS+=NativeInteger.h
+ASN_MODULE_SOURCES+=NativeInteger.c
+ASN_MODULE_SOURCES+=UTF8String.c
+ASN_MODULE_HEADERS+=asn_SEQUENCE_OF.h
+ASN_MODULE_SOURCES+=asn_SEQUENCE_OF.c
+ASN_MODULE_HEADERS+=asn_SET_OF.h
+ASN_MODULE_SOURCES+=asn_SET_OF.c
+ASN_MODULE_HEADERS+=constr_CHOICE.h
+ASN_MODULE_SOURCES+=constr_CHOICE.c
+ASN_MODULE_HEADERS+=constr_SEQUENCE.h
+ASN_MODULE_SOURCES+=constr_SEQUENCE.c
+ASN_MODULE_HEADERS+=constr_SEQUENCE_OF.h
+ASN_MODULE_SOURCES+=constr_SEQUENCE_OF.c
+ASN_MODULE_HEADERS+=constr_SET_OF.h
+ASN_MODULE_SOURCES+=constr_SET_OF.c
+ASN_MODULE_HEADERS+=asn_application.h
+ASN_MODULE_HEADERS+=asn_system.h
+ASN_MODULE_HEADERS+=asn_codecs.h
+ASN_MODULE_HEADERS+=asn_internal.h
+ASN_MODULE_HEADERS+=OCTET_STRING.h
+ASN_MODULE_SOURCES+=OCTET_STRING.c
+ASN_MODULE_HEADERS+=BIT_STRING.h
+ASN_MODULE_SOURCES+=BIT_STRING.c
+ASN_MODULE_SOURCES+=asn_codecs_prim.c
+ASN_MODULE_HEADERS+=asn_codecs_prim.h
+ASN_MODULE_HEADERS+=ber_tlv_length.h
+ASN_MODULE_SOURCES+=ber_tlv_length.c
+ASN_MODULE_HEADERS+=ber_tlv_tag.h
+ASN_MODULE_SOURCES+=ber_tlv_tag.c
+ASN_MODULE_HEADERS+=ber_decoder.h
+ASN_MODULE_SOURCES+=ber_decoder.c
+ASN_MODULE_HEADERS+=der_encoder.h
+ASN_MODULE_SOURCES+=der_encoder.c
+ASN_MODULE_HEADERS+=constr_TYPE.h
+ASN_MODULE_SOURCES+=constr_TYPE.c
+ASN_MODULE_HEADERS+=constraints.h
+ASN_MODULE_SOURCES+=constraints.c
+ASN_MODULE_HEADERS+=xer_support.h
+ASN_MODULE_SOURCES+=xer_support.c
+ASN_MODULE_HEADERS+=xer_decoder.h
+ASN_MODULE_SOURCES+=xer_decoder.c
+ASN_MODULE_HEADERS+=xer_encoder.h
+ASN_MODULE_SOURCES+=xer_encoder.c
+ASN_MODULE_HEADERS+=oer_decoder.h
+ASN_MODULE_SOURCES+=oer_decoder.c
+ASN_MODULE_HEADERS+=oer_encoder.h
+ASN_MODULE_SOURCES+=oer_encoder.c
+ASN_MODULE_HEADERS+=oer_support.h
+ASN_MODULE_SOURCES+=oer_support.c
+ASN_MODULE_HEADERS+=per_support.h
+ASN_MODULE_SOURCES+=per_support.c
+ASN_MODULE_HEADERS+=per_decoder.h
+ASN_MODULE_SOURCES+=per_decoder.c
+ASN_MODULE_HEADERS+=per_encoder.h
+ASN_MODULE_SOURCES+=per_encoder.c
+ASN_MODULE_HEADERS+=per_opentype.h
+ASN_MODULE_SOURCES+=per_opentype.c
+ASN_CONVERTER_SOURCES+=converter-sample.c
+ASN_MODULE_SOURCES+=INTEGER_oer.c
+ASN_MODULE_SOURCES+=OCTET_STRING_oer.c
+ASN_MODULE_SOURCES+=NativeInteger_oer.c
+ASN_MODULE_SOURCES+=constr_SEQUENCE_oer.c
+ASN_CONVERTER_SOURCES+=pdu_collection.c
+
+
+lib_LTLIBRARIES=libsomething.la
+libsomething_la_SOURCES=$(ASN_MODULE_SOURCES) $(ASN_MODULE_HEADERS)
+
+# This file may be used as an input for make(3)
+# Remove the lines below to convert it into a pure .am file
+TARGET = 1609-2-dump
+CPPFLAGS += -DASN_CONVERTER_TITLE="IEEE 1609.2-2016 decoder" -DHAVE_CONFIG_H -DJUNKTEST -D_DEFAULT_SOURCE  -DASN_DISABLE_PER_SUPPORT -DPDU=Certificate -DASN_PDU_COLLECTION -I.
+OBJS=${ASN_MODULE_SOURCES:.c=.o} ${ASN_CONVERTER_SOURCES:.c=.o}
+
+all: maybe-wip-pause Certificate.c $(TARGET)
+
+$(TARGET): ${OBJS}
+	$(CC) $(CFLAGS) $(CPPFLAGS) -o $(TARGET) ${OBJS} $(LDFLAGS) $(LIBS)
+
+.SUFFIXES:
+.SUFFIXES: .c .o
+
+.c.o:
+	$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
+
+clean:
+	rm -f $(TARGET)
+	rm -f $(OBJS)
+
+regen: regenerate-from-asn1-source
+
+regenerate-from-asn1-source:
+	../../asn1c/asn1c -S ../../skeletons -pdu=Certificate -pdu=auto -fcompound-names -gen-OER ../IEEE-1609.2-2016.asn1
+
+
+Certificate.c: ../sample.makefile.regen ../IEEE-1609.2-2016.asn1
+	make regen-makefile
+	@touch Certificate.c
+	make
+
+regen-makefile:
+	TITLE="IEEE 1609.2-2016 decoder" \
+	ASN1CMDOPTS="-pdu=auto -fcompound-names -gen-OER" \
+	ASN1MODULES="../IEEE-1609.2-2016.asn1" \
+	ASN1PDU=Certificate \
+	PROGNAME=1609-2-dump \
+	CPPFLAGS="" \
+	../sample.makefile.regen
+
+check: ${TARGET} check-ber check-xer check-per
+	@echo ================
+	@echo All tests passed
+	@echo ================
+
+check-ber:
+	@if test -f sample-Certificate-1.[db]er ; then \
+	for f in sample-Certificate-*.[db]er; do \
+	for b in 1 17 33 980 8192; do \
+	echo "Recoding $$f into XER and back ($$b)..."; \
+	./${TARGET} -b $$b -iber -oxer $$f > ./.tmp.1.$$$$ || exit 2; \
+	./${TARGET} -b $$b -ixer -oxer ./.tmp.1.$$$$ > ./.tmp.2.$$$$ || exit 3; \
+	diff ./.tmp.1.$$$$ ./.tmp.2.$$$$ || exit 4; \
+	rm -f ./.tmp.[12].$$$$; \
+	echo "Test junking $$f (please wait)..."; \
+	./${TARGET} -J0.0001 -n 1000 -b $$b -iber -onull $$f || exit 5; \
+	./${TARGET} -J0.001 -n 1000 -b $$b -iber -onull $$f || exit 6; \
+	done; done; fi
+
+check-xer:
+	@if test -f sample-Certificate-1.xer ; then \
+	for f in sample-Certificate-*.xer; do \
+	for b in 1 17 33 980 8192; do \
+	echo "Recoding $$f into DER and back ($$b)..."; \
+	./${TARGET} -b $$b -ixer -oder $$f > ./.tmp.1.$$$$ || exit 2; \
+	./${TARGET} -b $$b -iber -oxer ./.tmp.1.$$$$ > ./.tmp.2.$$$$ || exit 3; \
+	diff $$f ./.tmp.2.$$$$ || exit 4; \
+	rm -f ./.tmp.[12].$$$$; \
+	echo "Test junking $$f (please wait)..."; \
+	./${TARGET} -J0.0001 -n 1000 -b $$b -ixer -onull $$f || exit 5; \
+	./${TARGET} -J0.001 -n 1000 -b $$b -ixer -onull $$f || exit 6; \
+	done; done; fi
+
+check-per:
+	@if test -f sample-Certificate-1-nopad.per ; then \
+	for f in sample-Certificate-[1-9]-nopad.per; do \
+	for b in 1 17 33 980 8192; do \
+	echo "Recoding non-padded $$f into DER into XER and back ($$b)..."; \
+	./${TARGET} -b $$b -per-nopad -iper -oder $$f > ./.tmp.1.$$$$ || exit 2; \
+	./${TARGET} -b $$b -iber -oxer ./.tmp.1.$$$$ > ./.tmp.2.$$$$ || exit 3; \
+	./${TARGET} -b $$b -ixer -oder ./.tmp.2.$$$$ > ./.tmp.3.$$$$ || exit 4; \
+	diff ./.tmp.1.$$$$ ./.tmp.3.$$$$ || exit 5; \
+	rm -f ./.tmp.[123].$$$$; \
+	echo "Test junking $$f (please wait)..."; \
+	./${TARGET} -J0.0001 -n 1000 -b $$b -per-nopad -iper -onull $$f || exit 6; \
+	./${TARGET} -J0.001 -n 1000 -b $$b -per-nopad -iper -onull $$f || exit 7; \
+	done; done; fi
+	@if test -f sample-Certificate-1.per ; then \
+	for f in sample-*-[1-9].per; do \
+	pdu=`echo $$f | sed -E -e "s/sample-([A-Za-z-]+)-[0-9].*/\1/"`; \
+	for b in 1 17 33 980 8192; do \
+	echo "Recoding $$f into DER into XER and back ($$b)..."; \
+	./${TARGET} -b $$b -p $$pdu -iper -oder $$f > ./.tmp.1.$$$$ || exit 3; \
+	./${TARGET} -b $$b -p $$pdu -iber -oxer ./.tmp.1.$$$$ > ./.tmp.2.$$$$ || exit 4; \
+	./${TARGET} -b $$b -p $$pdu -ixer -oper ./.tmp.2.$$$$ > ./.tmp.1.$$$$ || exit 5; \
+	diff $$f ./.tmp.1.$$$$ || exit 6; \
+	rm -f ./.tmp.[12].$$$$; \
+	echo "Test junking $$f (please wait)..."; \
+	./${TARGET} -J0.0001 -n 1000 -b $$b -iper -onull $$f || exit 7; \
+	./${TARGET} -J0.001 -n 1000 -b $$b -iper -onull $$f || exit 8; \
+	done; done; fi
+
+maybe-wip-pause:
+	@[ -f WIP ] && cat WIP && sleep 2
+
+distclean: clean
+	rm -f $(ASN_MODULE_SOURCES)
+	rm -f $(ASN_MODULE_HEADERS)
+	rm -f $(ASN_CONVERTER_SOURCES) $(ASN_CONVERTER_HEADERS)
+	rm -f Makefile.am.sample