aboutsummaryrefslogtreecommitdiffstats
path: root/addons/ooh323c/src
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2009-06-30 16:40:38 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2009-06-30 16:40:38 +0000
commite9d15cbea7a98184521c851500176da7aa424012 (patch)
treed3d6aa7ea86d11ecaa6e88efbc46a5dde1c63ea5 /addons/ooh323c/src
parentb85bdd32a783a8f07004d41db8a696645685a331 (diff)
Move Asterisk-addons modules into the main Asterisk source tree.
Someone asked yesterday, "is there a good reason why we can't just put these modules in Asterisk?". After a brief discussion, as long as the modules are clearly set aside in their own directory and not enabled by default, it is perfectly fine. For more information about why a module goes in addons, see README-addons.txt. chan_ooh323 does not currently compile as it is behind some trunk API updates. However, it will not build by default, so it should be okay for now. git-svn-id: http://svn.digium.com/svn/asterisk/trunk@204413 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'addons/ooh323c/src')
-rw-r--r--addons/ooh323c/src/Makefile.in564
-rw-r--r--addons/ooh323c/src/context.c140
-rw-r--r--addons/ooh323c/src/decode.c1050
-rw-r--r--addons/ooh323c/src/dlist.c256
-rw-r--r--addons/ooh323c/src/dlist.h204
-rw-r--r--addons/ooh323c/src/encode.c1103
-rw-r--r--addons/ooh323c/src/errmgmt.c261
-rw-r--r--addons/ooh323c/src/eventHandler.c122
-rw-r--r--addons/ooh323c/src/eventHandler.h284
-rw-r--r--addons/ooh323c/src/h323/H235-SECURITY-MESSAGES.h690
-rw-r--r--addons/ooh323c/src/h323/H235-SECURITY-MESSAGESDec.c1782
-rw-r--r--addons/ooh323c/src/h323/H235-SECURITY-MESSAGESEnc.c1269
-rw-r--r--addons/ooh323c/src/h323/H323-MESSAGES.c112
-rw-r--r--addons/ooh323c/src/h323/H323-MESSAGES.h6510
-rw-r--r--addons/ooh323c/src/h323/H323-MESSAGESDec.c27199
-rw-r--r--addons/ooh323c/src/h323/H323-MESSAGESEnc.c22596
-rw-r--r--addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROL.c40
-rw-r--r--addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROL.h10937
-rw-r--r--addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROLDec.c42170
-rw-r--r--addons/ooh323c/src/h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c26599
-rw-r--r--addons/ooh323c/src/memheap.c1331
-rw-r--r--addons/ooh323c/src/memheap.h61
-rw-r--r--addons/ooh323c/src/ooCalls.c820
-rw-r--r--addons/ooh323c/src/ooCalls.h822
-rw-r--r--addons/ooh323c/src/ooCapability.c2349
-rw-r--r--addons/ooh323c/src/ooCapability.h726
-rw-r--r--addons/ooh323c/src/ooCmdChannel.c193
-rw-r--r--addons/ooh323c/src/ooCmdChannel.h90
-rw-r--r--addons/ooh323c/src/ooCommon.h124
-rw-r--r--addons/ooh323c/src/ooDateTime.c175
-rw-r--r--addons/ooh323c/src/ooDateTime.h54
-rw-r--r--addons/ooh323c/src/ooGkClient.c2443
-rw-r--r--addons/ooh323c/src/ooGkClient.h560
-rw-r--r--addons/ooh323c/src/ooLogChan.c372
-rw-r--r--addons/ooh323c/src/ooLogChan.h190
-rw-r--r--addons/ooh323c/src/ooSocket.c723
-rw-r--r--addons/ooh323c/src/ooSocket.h403
-rw-r--r--addons/ooh323c/src/ooStackCmds.c339
-rw-r--r--addons/ooh323c/src/ooStackCmds.h171
-rw-r--r--addons/ooh323c/src/ooTimer.c193
-rw-r--r--addons/ooh323c/src/ooTimer.h128
-rw-r--r--addons/ooh323c/src/ooUtils.c40
-rw-r--r--addons/ooh323c/src/ooUtils.h53
-rw-r--r--addons/ooh323c/src/ooasn1.h1814
-rw-r--r--addons/ooh323c/src/oochannels.c1785
-rw-r--r--addons/ooh323c/src/oochannels.h216
-rw-r--r--addons/ooh323c/src/ooh245.c3686
-rw-r--r--addons/ooh323c/src/ooh245.h636
-rw-r--r--addons/ooh323c/src/ooh323.c1843
-rw-r--r--addons/ooh323c/src/ooh323.h182
-rw-r--r--addons/ooh323c/src/ooh323ep.c789
-rw-r--r--addons/ooh323c/src/ooh323ep.h634
-rw-r--r--addons/ooh323c/src/oohdr.h15
-rw-r--r--addons/ooh323c/src/ooper.h22
-rw-r--r--addons/ooh323c/src/ooports.c106
-rw-r--r--addons/ooh323c/src/ooports.h91
-rw-r--r--addons/ooh323c/src/ooq931.c3448
-rw-r--r--addons/ooh323c/src/ooq931.h766
-rw-r--r--addons/ooh323c/src/ootrace.c131
-rw-r--r--addons/ooh323c/src/ootrace.h152
-rw-r--r--addons/ooh323c/src/ootypes.h256
-rw-r--r--addons/ooh323c/src/perutil.c287
-rw-r--r--addons/ooh323c/src/printHandler.c273
-rw-r--r--addons/ooh323c/src/printHandler.h47
-rw-r--r--addons/ooh323c/src/rtctype.c168
-rw-r--r--addons/ooh323c/src/rtctype.h86
66 files changed, 173681 insertions, 0 deletions
diff --git a/addons/ooh323c/src/Makefile.in b/addons/ooh323c/src/Makefile.in
new file mode 100644
index 000000000..d3a96024b
--- /dev/null
+++ b/addons/ooh323c/src/Makefile.in
@@ -0,0 +1,564 @@
+# Makefile.in generated by automake 1.6.3 from Makefile.am.
+# @configure_input@
+
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
+# Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+SHELL = @SHELL@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+
+bindir = @bindir@
+sbindir = @sbindir@
+libexecdir = @libexecdir@
+datadir = @datadir@
+sysconfdir = @sysconfdir@
+sharedstatedir = @sharedstatedir@
+localstatedir = @localstatedir@
+libdir = @libdir@
+infodir = @infodir@
+mandir = @mandir@
+includedir = @includedir@
+oldincludedir = /usr/include
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+
+ACLOCAL = @ACLOCAL@
+AUTOCONF = @AUTOCONF@
+AUTOMAKE = @AUTOMAKE@
+AUTOHEADER = @AUTOHEADER@
+
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = @program_transform_name@
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+host_alias = @host_alias@
+host_triplet = @host@
+
+EXEEXT = @EXEEXT@
+OBJEXT = @OBJEXT@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+AMTAR = @AMTAR@
+AS = @AS@
+AWK = @AWK@
+CC = @CC@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+ECHO = @ECHO@
+INSTALLPREFIX = @INSTALLPREFIX@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+OBJDUMP = @OBJDUMP@
+OOH323CDRIVERDIR = @OOH323CDRIVERDIR@
+OOH323CFLAGS = @OOH323CFLAGS@
+PACKAGE = @PACKAGE@
+RANLIB = @RANLIB@
+STRIP = @STRIP@
+VERSION = @VERSION@
+am__include = @am__include@
+am__quote = @am__quote@
+install_sh = @install_sh@
+AUTOMAKE_OPTIONS = gnu
+CFLAGS = @OOH323CFLAGS@
+
+noinst_LIBRARIES = libooh323c.a
+
+libooh323c_a_SOURCES = ooLogChan.h ooLogChan.c ooUtils.c ooUtils.h ooGkClient.h ooGkClient.c context.c ooCommon.h ooDateTime.h ooDateTime.c decode.c dlist.c encode.c errmgmt.c memheap.c memheap.h ooasn1.h ootrace.h ootrace.c oochannels.c oochannels.h ooh245.c ooh245.h oohdr.h ooper.h ooports.c ooports.h ooq931.c ooq931.h ooCapability.c ooCapability.h ooSocket.c ooSocket.h ootypes.h perutil.c eventHandler.c eventHandler.h ooCalls.c ooCalls.h ooStackCmds.c ooStackCmds.h ooh323.c ooh323.h ooh323ep.c ooh323ep.h printHandler.c printHandler.h rtctype.c rtctype.h ooTimer.c ooTimer.h h323/H235-SECURITY-MESSAGESDec.c h323/H235-SECURITY-MESSAGESEnc.c h323/H235-SECURITY-MESSAGES.h h323/H323-MESSAGES.c h323/H323-MESSAGESDec.c h323/H323-MESSAGESEnc.c h323/H323-MESSAGES.h h323/MULTIMEDIA-SYSTEM-CONTROL.c h323/MULTIMEDIA-SYSTEM-CONTROLDec.c h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c h323/MULTIMEDIA-SYSTEM-CONTROL.h
+
+INCLUDES = -Ih323
+
+
+#include_HEADERS = ooUtils.h memheap.h ooCommon.h ooDateTime.h ooGkClient.h ooasn1.h oochannels.h ootrace.h ooh245.h ooports.h ooq931.h oohdr.h ooper.h ooSocket.h ooTimer.h ootypes.h eventHandler.h ooCapability.h ooCalls.h ooStackCmds.h ooh323.h ooh323ep.h printHandler.h rtctype.h h323/H235-SECURITY-MESSAGES.h h323/H323-MESSAGES.h h323/MULTIMEDIA-SYSTEM-CONTROL.h
+EXTRA_DIST = oostk.dsp
+subdir = ooh323c/src
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+
+libooh323c_a_AR = $(AR) cru
+libooh323c_a_LIBADD =
+am_libooh323c_a_OBJECTS = ooLogChan.$(OBJEXT) ooUtils.$(OBJEXT) \
+ ooGkClient.$(OBJEXT) context.$(OBJEXT) ooDateTime.$(OBJEXT) \
+ decode.$(OBJEXT) dlist.$(OBJEXT) encode.$(OBJEXT) \
+ errmgmt.$(OBJEXT) memheap.$(OBJEXT) ootrace.$(OBJEXT) \
+ oochannels.$(OBJEXT) ooh245.$(OBJEXT) ooports.$(OBJEXT) \
+ ooq931.$(OBJEXT) ooCapability.$(OBJEXT) ooSocket.$(OBJEXT) \
+ perutil.$(OBJEXT) eventHandler.$(OBJEXT) ooCalls.$(OBJEXT) \
+ ooStackCmds.$(OBJEXT) ooh323.$(OBJEXT) ooh323ep.$(OBJEXT) \
+ printHandler.$(OBJEXT) rtctype.$(OBJEXT) ooTimer.$(OBJEXT) \
+ H235-SECURITY-MESSAGESDec.$(OBJEXT) \
+ H235-SECURITY-MESSAGESEnc.$(OBJEXT) H323-MESSAGES.$(OBJEXT) \
+ H323-MESSAGESDec.$(OBJEXT) H323-MESSAGESEnc.$(OBJEXT) \
+ MULTIMEDIA-SYSTEM-CONTROL.$(OBJEXT) \
+ MULTIMEDIA-SYSTEM-CONTROLDec.$(OBJEXT) \
+ MULTIMEDIA-SYSTEM-CONTROLEnc.$(OBJEXT)
+libooh323c_a_OBJECTS = $(am_libooh323c_a_OBJECTS)
+
+DEFS = @DEFS@
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+CPPFLAGS = @CPPFLAGS@
+LDFLAGS = @LDFLAGS@
+LIBS = @LIBS@
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/H235-SECURITY-MESSAGESDec.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/H235-SECURITY-MESSAGESEnc.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/H323-MESSAGES.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/H323-MESSAGESDec.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/H323-MESSAGESEnc.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROL.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLDec.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLEnc.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/context.Po ./$(DEPDIR)/decode.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/dlist.Po ./$(DEPDIR)/encode.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/errmgmt.Po ./$(DEPDIR)/eventHandler.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/memheap.Po ./$(DEPDIR)/ooCalls.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/ooCapability.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/ooDateTime.Po ./$(DEPDIR)/ooGkClient.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/ooLogChan.Po ./$(DEPDIR)/ooSocket.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/ooStackCmds.Po ./$(DEPDIR)/ooTimer.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/ooUtils.Po ./$(DEPDIR)/oochannels.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/ooh245.Po ./$(DEPDIR)/ooh323.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/ooh323ep.Po ./$(DEPDIR)/ooports.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/ooq931.Po ./$(DEPDIR)/ootrace.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/perutil.Po ./$(DEPDIR)/printHandler.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/rtctype.Po
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
+ $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+DIST_SOURCES = $(libooh323c_a_SOURCES)
+DIST_COMMON = Makefile.am Makefile.in
+SOURCES = $(libooh323c_a_SOURCES)
+
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .c .lo .o .obj
+$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu ooh323c/src/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
+
+AR = ar
+
+clean-noinstLIBRARIES:
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
+H235-SECURITY-MESSAGESDec.$(OBJEXT): h323/H235-SECURITY-MESSAGESDec.c
+H235-SECURITY-MESSAGESEnc.$(OBJEXT): h323/H235-SECURITY-MESSAGESEnc.c
+H323-MESSAGES.$(OBJEXT): h323/H323-MESSAGES.c
+H323-MESSAGESDec.$(OBJEXT): h323/H323-MESSAGESDec.c
+H323-MESSAGESEnc.$(OBJEXT): h323/H323-MESSAGESEnc.c
+MULTIMEDIA-SYSTEM-CONTROL.$(OBJEXT): h323/MULTIMEDIA-SYSTEM-CONTROL.c
+MULTIMEDIA-SYSTEM-CONTROLDec.$(OBJEXT): \
+ h323/MULTIMEDIA-SYSTEM-CONTROLDec.c
+MULTIMEDIA-SYSTEM-CONTROLEnc.$(OBJEXT): \
+ h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c
+libooh323c.a: $(libooh323c_a_OBJECTS) $(libooh323c_a_DEPENDENCIES)
+ -rm -f libooh323c.a
+ $(libooh323c_a_AR) libooh323c.a $(libooh323c_a_OBJECTS) $(libooh323c_a_LIBADD)
+ $(RANLIB) libooh323c.a
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT) core *.core
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H235-SECURITY-MESSAGESDec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H235-SECURITY-MESSAGESEnc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H323-MESSAGES.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H323-MESSAGESDec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H323-MESSAGESEnc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROL.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLDec.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLEnc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/context.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/decode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dlist.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/encode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errmgmt.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eventHandler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memheap.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooCalls.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooCapability.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooDateTime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooGkClient.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooLogChan.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooSocket.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooStackCmds.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooTimer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooUtils.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oochannels.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooh245.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooh323.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooh323ep.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooports.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ooq931.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ootrace.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/perutil.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printHandler.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtctype.Po@am__quote@
+
+distclean-depend:
+ -rm -rf ./$(DEPDIR)
+
+.c.o:
+@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
+
+.c.obj:
+@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(COMPILE) -c `cygpath -w $<`
+
+.c.lo:
+@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
+
+H235-SECURITY-MESSAGESDec.o: h323/H235-SECURITY-MESSAGESDec.c
+@AMDEP_TRUE@ source='h323/H235-SECURITY-MESSAGESDec.c' object='H235-SECURITY-MESSAGESDec.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/H235-SECURITY-MESSAGESDec.Po' tmpdepfile='$(DEPDIR)/H235-SECURITY-MESSAGESDec.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H235-SECURITY-MESSAGESDec.o `test -f 'h323/H235-SECURITY-MESSAGESDec.c' || echo '$(srcdir)/'`h323/H235-SECURITY-MESSAGESDec.c
+
+H235-SECURITY-MESSAGESDec.obj: h323/H235-SECURITY-MESSAGESDec.c
+@AMDEP_TRUE@ source='h323/H235-SECURITY-MESSAGESDec.c' object='H235-SECURITY-MESSAGESDec.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/H235-SECURITY-MESSAGESDec.Po' tmpdepfile='$(DEPDIR)/H235-SECURITY-MESSAGESDec.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H235-SECURITY-MESSAGESDec.obj `cygpath -w h323/H235-SECURITY-MESSAGESDec.c`
+
+H235-SECURITY-MESSAGESDec.lo: h323/H235-SECURITY-MESSAGESDec.c
+@AMDEP_TRUE@ source='h323/H235-SECURITY-MESSAGESDec.c' object='H235-SECURITY-MESSAGESDec.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/H235-SECURITY-MESSAGESDec.Plo' tmpdepfile='$(DEPDIR)/H235-SECURITY-MESSAGESDec.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H235-SECURITY-MESSAGESDec.lo `test -f 'h323/H235-SECURITY-MESSAGESDec.c' || echo '$(srcdir)/'`h323/H235-SECURITY-MESSAGESDec.c
+
+H235-SECURITY-MESSAGESEnc.o: h323/H235-SECURITY-MESSAGESEnc.c
+@AMDEP_TRUE@ source='h323/H235-SECURITY-MESSAGESEnc.c' object='H235-SECURITY-MESSAGESEnc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/H235-SECURITY-MESSAGESEnc.Po' tmpdepfile='$(DEPDIR)/H235-SECURITY-MESSAGESEnc.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H235-SECURITY-MESSAGESEnc.o `test -f 'h323/H235-SECURITY-MESSAGESEnc.c' || echo '$(srcdir)/'`h323/H235-SECURITY-MESSAGESEnc.c
+
+H235-SECURITY-MESSAGESEnc.obj: h323/H235-SECURITY-MESSAGESEnc.c
+@AMDEP_TRUE@ source='h323/H235-SECURITY-MESSAGESEnc.c' object='H235-SECURITY-MESSAGESEnc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/H235-SECURITY-MESSAGESEnc.Po' tmpdepfile='$(DEPDIR)/H235-SECURITY-MESSAGESEnc.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H235-SECURITY-MESSAGESEnc.obj `cygpath -w h323/H235-SECURITY-MESSAGESEnc.c`
+
+H235-SECURITY-MESSAGESEnc.lo: h323/H235-SECURITY-MESSAGESEnc.c
+@AMDEP_TRUE@ source='h323/H235-SECURITY-MESSAGESEnc.c' object='H235-SECURITY-MESSAGESEnc.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/H235-SECURITY-MESSAGESEnc.Plo' tmpdepfile='$(DEPDIR)/H235-SECURITY-MESSAGESEnc.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H235-SECURITY-MESSAGESEnc.lo `test -f 'h323/H235-SECURITY-MESSAGESEnc.c' || echo '$(srcdir)/'`h323/H235-SECURITY-MESSAGESEnc.c
+
+H323-MESSAGES.o: h323/H323-MESSAGES.c
+@AMDEP_TRUE@ source='h323/H323-MESSAGES.c' object='H323-MESSAGES.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/H323-MESSAGES.Po' tmpdepfile='$(DEPDIR)/H323-MESSAGES.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H323-MESSAGES.o `test -f 'h323/H323-MESSAGES.c' || echo '$(srcdir)/'`h323/H323-MESSAGES.c
+
+H323-MESSAGES.obj: h323/H323-MESSAGES.c
+@AMDEP_TRUE@ source='h323/H323-MESSAGES.c' object='H323-MESSAGES.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/H323-MESSAGES.Po' tmpdepfile='$(DEPDIR)/H323-MESSAGES.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H323-MESSAGES.obj `cygpath -w h323/H323-MESSAGES.c`
+
+H323-MESSAGES.lo: h323/H323-MESSAGES.c
+@AMDEP_TRUE@ source='h323/H323-MESSAGES.c' object='H323-MESSAGES.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/H323-MESSAGES.Plo' tmpdepfile='$(DEPDIR)/H323-MESSAGES.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H323-MESSAGES.lo `test -f 'h323/H323-MESSAGES.c' || echo '$(srcdir)/'`h323/H323-MESSAGES.c
+
+H323-MESSAGESDec.o: h323/H323-MESSAGESDec.c
+@AMDEP_TRUE@ source='h323/H323-MESSAGESDec.c' object='H323-MESSAGESDec.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/H323-MESSAGESDec.Po' tmpdepfile='$(DEPDIR)/H323-MESSAGESDec.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H323-MESSAGESDec.o `test -f 'h323/H323-MESSAGESDec.c' || echo '$(srcdir)/'`h323/H323-MESSAGESDec.c
+
+H323-MESSAGESDec.obj: h323/H323-MESSAGESDec.c
+@AMDEP_TRUE@ source='h323/H323-MESSAGESDec.c' object='H323-MESSAGESDec.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/H323-MESSAGESDec.Po' tmpdepfile='$(DEPDIR)/H323-MESSAGESDec.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H323-MESSAGESDec.obj `cygpath -w h323/H323-MESSAGESDec.c`
+
+H323-MESSAGESDec.lo: h323/H323-MESSAGESDec.c
+@AMDEP_TRUE@ source='h323/H323-MESSAGESDec.c' object='H323-MESSAGESDec.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/H323-MESSAGESDec.Plo' tmpdepfile='$(DEPDIR)/H323-MESSAGESDec.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H323-MESSAGESDec.lo `test -f 'h323/H323-MESSAGESDec.c' || echo '$(srcdir)/'`h323/H323-MESSAGESDec.c
+
+H323-MESSAGESEnc.o: h323/H323-MESSAGESEnc.c
+@AMDEP_TRUE@ source='h323/H323-MESSAGESEnc.c' object='H323-MESSAGESEnc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/H323-MESSAGESEnc.Po' tmpdepfile='$(DEPDIR)/H323-MESSAGESEnc.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H323-MESSAGESEnc.o `test -f 'h323/H323-MESSAGESEnc.c' || echo '$(srcdir)/'`h323/H323-MESSAGESEnc.c
+
+H323-MESSAGESEnc.obj: h323/H323-MESSAGESEnc.c
+@AMDEP_TRUE@ source='h323/H323-MESSAGESEnc.c' object='H323-MESSAGESEnc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/H323-MESSAGESEnc.Po' tmpdepfile='$(DEPDIR)/H323-MESSAGESEnc.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H323-MESSAGESEnc.obj `cygpath -w h323/H323-MESSAGESEnc.c`
+
+H323-MESSAGESEnc.lo: h323/H323-MESSAGESEnc.c
+@AMDEP_TRUE@ source='h323/H323-MESSAGESEnc.c' object='H323-MESSAGESEnc.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/H323-MESSAGESEnc.Plo' tmpdepfile='$(DEPDIR)/H323-MESSAGESEnc.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o H323-MESSAGESEnc.lo `test -f 'h323/H323-MESSAGESEnc.c' || echo '$(srcdir)/'`h323/H323-MESSAGESEnc.c
+
+MULTIMEDIA-SYSTEM-CONTROL.o: h323/MULTIMEDIA-SYSTEM-CONTROL.c
+@AMDEP_TRUE@ source='h323/MULTIMEDIA-SYSTEM-CONTROL.c' object='MULTIMEDIA-SYSTEM-CONTROL.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROL.Po' tmpdepfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROL.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o MULTIMEDIA-SYSTEM-CONTROL.o `test -f 'h323/MULTIMEDIA-SYSTEM-CONTROL.c' || echo '$(srcdir)/'`h323/MULTIMEDIA-SYSTEM-CONTROL.c
+
+MULTIMEDIA-SYSTEM-CONTROL.obj: h323/MULTIMEDIA-SYSTEM-CONTROL.c
+@AMDEP_TRUE@ source='h323/MULTIMEDIA-SYSTEM-CONTROL.c' object='MULTIMEDIA-SYSTEM-CONTROL.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROL.Po' tmpdepfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROL.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o MULTIMEDIA-SYSTEM-CONTROL.obj `cygpath -w h323/MULTIMEDIA-SYSTEM-CONTROL.c`
+
+MULTIMEDIA-SYSTEM-CONTROL.lo: h323/MULTIMEDIA-SYSTEM-CONTROL.c
+@AMDEP_TRUE@ source='h323/MULTIMEDIA-SYSTEM-CONTROL.c' object='MULTIMEDIA-SYSTEM-CONTROL.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROL.Plo' tmpdepfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROL.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o MULTIMEDIA-SYSTEM-CONTROL.lo `test -f 'h323/MULTIMEDIA-SYSTEM-CONTROL.c' || echo '$(srcdir)/'`h323/MULTIMEDIA-SYSTEM-CONTROL.c
+
+MULTIMEDIA-SYSTEM-CONTROLDec.o: h323/MULTIMEDIA-SYSTEM-CONTROLDec.c
+@AMDEP_TRUE@ source='h323/MULTIMEDIA-SYSTEM-CONTROLDec.c' object='MULTIMEDIA-SYSTEM-CONTROLDec.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLDec.Po' tmpdepfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLDec.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o MULTIMEDIA-SYSTEM-CONTROLDec.o `test -f 'h323/MULTIMEDIA-SYSTEM-CONTROLDec.c' || echo '$(srcdir)/'`h323/MULTIMEDIA-SYSTEM-CONTROLDec.c
+
+MULTIMEDIA-SYSTEM-CONTROLDec.obj: h323/MULTIMEDIA-SYSTEM-CONTROLDec.c
+@AMDEP_TRUE@ source='h323/MULTIMEDIA-SYSTEM-CONTROLDec.c' object='MULTIMEDIA-SYSTEM-CONTROLDec.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLDec.Po' tmpdepfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLDec.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o MULTIMEDIA-SYSTEM-CONTROLDec.obj `cygpath -w h323/MULTIMEDIA-SYSTEM-CONTROLDec.c`
+
+MULTIMEDIA-SYSTEM-CONTROLDec.lo: h323/MULTIMEDIA-SYSTEM-CONTROLDec.c
+@AMDEP_TRUE@ source='h323/MULTIMEDIA-SYSTEM-CONTROLDec.c' object='MULTIMEDIA-SYSTEM-CONTROLDec.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLDec.Plo' tmpdepfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLDec.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o MULTIMEDIA-SYSTEM-CONTROLDec.lo `test -f 'h323/MULTIMEDIA-SYSTEM-CONTROLDec.c' || echo '$(srcdir)/'`h323/MULTIMEDIA-SYSTEM-CONTROLDec.c
+
+MULTIMEDIA-SYSTEM-CONTROLEnc.o: h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c
+@AMDEP_TRUE@ source='h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c' object='MULTIMEDIA-SYSTEM-CONTROLEnc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLEnc.Po' tmpdepfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLEnc.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o MULTIMEDIA-SYSTEM-CONTROLEnc.o `test -f 'h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c' || echo '$(srcdir)/'`h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c
+
+MULTIMEDIA-SYSTEM-CONTROLEnc.obj: h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c
+@AMDEP_TRUE@ source='h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c' object='MULTIMEDIA-SYSTEM-CONTROLEnc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLEnc.Po' tmpdepfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLEnc.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o MULTIMEDIA-SYSTEM-CONTROLEnc.obj `cygpath -w h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c`
+
+MULTIMEDIA-SYSTEM-CONTROLEnc.lo: h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c
+@AMDEP_TRUE@ source='h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c' object='MULTIMEDIA-SYSTEM-CONTROLEnc.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@ depfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLEnc.Plo' tmpdepfile='$(DEPDIR)/MULTIMEDIA-SYSTEM-CONTROLEnc.TPlo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o MULTIMEDIA-SYSTEM-CONTROLEnc.lo `test -f 'h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c' || echo '$(srcdir)/'`h323/MULTIMEDIA-SYSTEM-CONTROLEnc.c
+CCDEPMODE = @CCDEPMODE@
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+distclean-libtool:
+ -rm -f libtool
+uninstall-info-am:
+
+ETAGS = etags
+ETAGSFLAGS =
+
+tags: TAGS
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) ' { files[$$0] = 1; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(ETAGS_ARGS)$$tags$$unique" \
+ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ../..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
+
+distdir: $(DISTFILES)
+ @list='$(DISTFILES)'; for file in $$list; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkinstalldirs) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(LIBRARIES)
+
+installdirs:
+
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -rm -f Makefile $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \
+ mostlyclean-am
+
+distclean: distclean-am
+
+distclean-am: clean-am distclean-compile distclean-depend \
+ distclean-generic distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool
+
+uninstall-am: uninstall-info-am
+
+.PHONY: GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool clean-noinstLIBRARIES distclean distclean-compile \
+ distclean-depend distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am info info-am install \
+ install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ tags uninstall uninstall-am uninstall-info-am
+
+
+opt:
+ $(MAKE) "CFLAGS = -DGNU -D_GNU_SOURCE -D_REENTRANT -O2 -D_COMPACT" all
+
+debug:
+ $(MAKE) "CFLAGS = -g -DGNU -D_GNU_SOURCE -D_REENTRANT" all
+
+profile:
+ $(MAKE) "CFLAGS = -g -pg -DGNU -D_GNU_SOURCE -D_REENTRANT" all
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/addons/ooh323c/src/context.c b/addons/ooh323c/src/context.c
new file mode 100644
index 000000000..d243f88a0
--- /dev/null
+++ b/addons/ooh323c/src/context.c
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 1997-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+
+#include "ooasn1.h"
+#include <stdlib.h>
+
+int initContext (OOCTXT* pctxt)
+{
+ memset (pctxt, 0, sizeof(OOCTXT));
+
+ memHeapCreate (&pctxt->pTypeMemHeap);
+ pctxt->pMsgMemHeap = pctxt->pTypeMemHeap;
+ memHeapAddRef (&pctxt->pMsgMemHeap);
+
+ return ASN_OK;
+}
+
+int initContextBuffer
+(OOCTXT* pctxt, const ASN1OCTET* bufaddr, ASN1UINT bufsiz)
+{
+ if (bufaddr == 0) {
+ /* dynamic buffer */
+ if (bufsiz == 0) bufsiz = ASN_K_ENCBUFSIZ;
+ pctxt->buffer.data = (ASN1OCTET*)
+ memHeapAlloc (&pctxt->pMsgMemHeap, bufsiz);
+ if (!pctxt->buffer.data) return ASN_E_NOMEM;
+ pctxt->buffer.size = bufsiz;
+ pctxt->buffer.dynamic = TRUE;
+ }
+ else {
+ /* static buffer */
+ pctxt->buffer.data = (ASN1OCTET*) bufaddr;
+ pctxt->buffer.size = bufsiz;
+ pctxt->buffer.dynamic = FALSE;
+ }
+
+ pctxt->buffer.byteIndex = 0;
+ pctxt->buffer.bitOffset = 8;
+
+ return ASN_OK;
+}
+
+int initSubContext (OOCTXT* pctxt, OOCTXT* psrc)
+{
+ int stat = ASN_OK;
+ memset (pctxt, 0, sizeof(OOCTXT));
+ pctxt->pTypeMemHeap = psrc->pTypeMemHeap;
+ memHeapAddRef (&pctxt->pTypeMemHeap);
+ pctxt->pMsgMemHeap = psrc->pMsgMemHeap;
+ memHeapAddRef (&pctxt->pMsgMemHeap);
+ pctxt->flags = psrc->flags;
+ pctxt->buffer.dynamic = TRUE;
+ pctxt->buffer.byteIndex = 0;
+ pctxt->buffer.bitOffset = 8;
+ return stat;
+}
+
+void freeContext (OOCTXT* pctxt)
+{
+ ASN1BOOL saveBuf = (pctxt->flags & ASN1SAVEBUF) != 0;
+
+ if (pctxt->buffer.dynamic && pctxt->buffer.data) {
+ if (saveBuf) {
+ memHeapMarkSaved (&pctxt->pMsgMemHeap, pctxt->buffer.data, TRUE);
+ }
+ else {
+ memHeapFreePtr (&pctxt->pMsgMemHeap, pctxt->buffer.data);
+ }
+ }
+
+ errFreeParms (&pctxt->errInfo);
+
+ memHeapRelease (&pctxt->pTypeMemHeap);
+ memHeapRelease (&pctxt->pMsgMemHeap);
+}
+
+void copyContext (OOCTXT* pdest, OOCTXT* psrc)
+{
+ memcpy (&pdest->buffer, &psrc->buffer, sizeof(ASN1BUFFER));
+ pdest->flags = psrc->flags;
+}
+
+void setCtxtFlag (OOCTXT* pctxt, ASN1USINT mask)
+{
+ pctxt->flags |= mask;
+}
+
+void clearCtxtFlag (OOCTXT* pctxt, ASN1USINT mask)
+{
+ pctxt->flags &= ~mask;
+}
+
+int setPERBufferUsingCtxt (OOCTXT* pTarget, OOCTXT* pSource)
+{
+ int stat = initContextBuffer
+ (pTarget, pSource->buffer.data, pSource->buffer.size);
+
+ if (ASN_OK == stat) {
+ pTarget->buffer.byteIndex = pSource->buffer.byteIndex;
+ pTarget->buffer.bitOffset = pSource->buffer.bitOffset;
+ }
+
+ return stat;
+}
+
+int setPERBuffer (OOCTXT* pctxt,
+ ASN1OCTET* bufaddr, ASN1UINT bufsiz, ASN1BOOL aligned)
+{
+ int stat = initContextBuffer (pctxt, bufaddr, bufsiz);
+ if(stat != ASN_OK) return stat;
+
+
+ return ASN_OK;
+}
+
+OOCTXT* newContext ()
+{
+ OOCTXT* pctxt = (OOCTXT*) ASN1CRTMALLOC0 (sizeof(OOCTXT));
+ if (pctxt) {
+ if (initContext(pctxt) != ASN_OK) {
+ ASN1CRTFREE0 (pctxt);
+ pctxt = 0;
+ }
+ pctxt->flags |= ASN1DYNCTXT;
+ }
+ return (pctxt);
+}
diff --git a/addons/ooh323c/src/decode.c b/addons/ooh323c/src/decode.c
new file mode 100644
index 000000000..d09247c94
--- /dev/null
+++ b/addons/ooh323c/src/decode.c
@@ -0,0 +1,1050 @@
+/*
+ * Copyright (C) 1997-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+
+#include "ooasn1.h"
+
+static int decode16BitConstrainedString
+(OOCTXT* pctxt, Asn116BitCharString* pString, Asn116BitCharSet* pCharSet);
+
+static int decodeOctets
+(OOCTXT* pctxt, ASN1OCTET* pbuffer, ASN1UINT bufsiz, ASN1UINT nbits);
+
+static int getComponentLength (OOCTXT* pctxt, ASN1UINT itemBits);
+
+int decodeBits (OOCTXT* pctxt, ASN1UINT* pvalue, ASN1UINT nbits)
+{
+ unsigned char mask;
+
+ if (nbits == 0) {
+ *pvalue = 0;
+ return ASN_OK;
+ }
+
+ /* If the number of bits is less than the current bit offset, mask */
+ /* off the required number of bits and return.. */
+
+ if (nbits < (unsigned)pctxt->buffer.bitOffset) {
+ /* Check if buffer contains number of bits requested */
+
+ if (pctxt->buffer.byteIndex >= pctxt->buffer.size)
+ return LOG_ASN1ERR (pctxt, ASN_E_ENDOFBUF);
+
+ pctxt->buffer.bitOffset -= nbits;
+
+ *pvalue = ((pctxt->buffer.data[pctxt->buffer.byteIndex]) >>
+ pctxt->buffer.bitOffset) & ((1 << nbits) - 1);
+
+ return ASN_OK;
+ }
+
+ /* Otherwise, we first need to mask off the remaining bits in the */
+ /* current byte, followed by a loop to extract bits from full bytes, */
+ /* followed by logic to mask of remaining bits from the start of */
+ /* of the last byte.. */
+
+ else {
+ /* Check if buffer contains number of bits requested */
+
+ int nbytes = (((nbits - pctxt->buffer.bitOffset) + 7) / 8);
+
+ if ((pctxt->buffer.byteIndex + nbytes) >= pctxt->buffer.size) {
+ return LOG_ASN1ERR (pctxt, ASN_E_ENDOFBUF);
+ }
+
+ /* first read current byte remaining bits */
+ mask = ((1 << pctxt->buffer.bitOffset) - 1);
+
+ *pvalue = (pctxt->buffer.data[pctxt->buffer.byteIndex]) & mask;
+
+ nbits -= pctxt->buffer.bitOffset;
+ pctxt->buffer.bitOffset = 8;
+ pctxt->buffer.byteIndex++;
+
+ /* second read bytes from next byteIndex */
+ while (nbits >= 8) {
+ *pvalue = (*pvalue << 8) |
+ (pctxt->buffer.data[pctxt->buffer.byteIndex]);
+ pctxt->buffer.byteIndex++;
+ nbits -= 8;
+ }
+
+ /* third read bits & set bitoffset of the byteIndex */
+ if (nbits > 0) {
+ pctxt->buffer.bitOffset = 8 - nbits;
+ *pvalue = (*pvalue << nbits) |
+ ((pctxt->buffer.data[pctxt->buffer.byteIndex]) >>
+ pctxt->buffer.bitOffset);
+ }
+
+ return ASN_OK;
+ }
+}
+
+int decodeBitString
+(OOCTXT* pctxt, ASN1UINT* numbits_p, ASN1OCTET* buffer, ASN1UINT bufsiz)
+{
+ ASN1UINT bitcnt;
+ int lstat, octidx = 0, stat;
+ Asn1SizeCnst* pSizeList = pctxt->pSizeConstraint;
+ ASN1BOOL doAlign;
+
+ for (*numbits_p = 0;;) {
+ lstat = decodeLength (pctxt, &bitcnt);
+ if (lstat < 0) return LOG_ASN1ERR (pctxt, lstat);
+
+ if (bitcnt > 0) {
+ *numbits_p += bitcnt;
+
+ stat = bitAndOctetStringAlignmentTest
+ (pSizeList, bitcnt, TRUE, &doAlign);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ if (doAlign) {
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+ }
+
+ stat = decodeOctets (pctxt, &buffer[octidx], bufsiz - octidx, bitcnt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+ }
+
+ if (lstat == ASN_OK_FRAG) {
+ octidx += (bitcnt / 8);
+ }
+ else break;
+ }
+
+ return ASN_OK;
+}
+
+int decodeBMPString
+(OOCTXT* pctxt, ASN1BMPString* pvalue, Asn116BitCharSet* permCharSet)
+{
+ Asn116BitCharSet charSet;
+ int stat;
+
+ /* Set character set */
+
+ init16BitCharSet (&charSet, BMP_FIRST, BMP_LAST, BMP_ABITS, BMP_UBITS);
+
+ if (permCharSet) {
+ set16BitCharSet (pctxt, &charSet, permCharSet);
+ }
+
+ /* Decode constrained string */
+
+ stat = decode16BitConstrainedString (pctxt, pvalue, &charSet);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ return (stat);
+}
+
+int decodeByteAlign (OOCTXT* pctxt)
+{
+ if (pctxt->buffer.bitOffset != 8) {
+ pctxt->buffer.byteIndex++;
+ pctxt->buffer.bitOffset = 8;
+ }
+ return ASN_OK;
+}
+
+int decodeConstrainedStringEx
+(OOCTXT* pctxt, const char** string, const char* charSet,
+ ASN1UINT abits, ASN1UINT ubits, ASN1UINT canSetBits)
+{
+ int stat;
+ char* tmpstr;
+
+ ASN1UINT i, idx, len, nbits = abits;
+
+ /* note: need to save size constraint for use in alignCharStr */
+ /* because it will be cleared in decodeLength from the context.. */
+ Asn1SizeCnst* psize = pctxt->pSizeConstraint;
+
+ /* Decode length */
+
+ stat = decodeLength (pctxt, &len);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ /* Byte-align */
+
+ if (alignCharStr (pctxt, len, nbits, psize)) {
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+ }
+
+ /* Decode data */
+
+ tmpstr = (char*) ASN1MALLOC (pctxt, len+1);
+ if (0 != tmpstr) {
+ if (nbits >= canSetBits && canSetBits > 4) {
+ for (i = 0; i < len; i++) {
+ if ((stat = decodeBits (pctxt, &idx, nbits)) == ASN_OK) {
+ tmpstr[i] = (char) idx;
+ }
+ else break;
+ }
+ }
+ else if (0 != charSet) {
+ ASN1UINT nchars = strlen (charSet);
+ for (i = 0; i < len; i++) {
+ if ((stat = decodeBits (pctxt, &idx, nbits)) == ASN_OK) {
+ if (idx < nchars) {
+ tmpstr[i] = charSet[idx];
+ }
+ else return LOG_ASN1ERR (pctxt, ASN_E_CONSVIO);
+ }
+ else break;
+ }
+ }
+ else stat = ASN_E_INVPARAM;
+
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ tmpstr[i] = '\0'; /* add null-terminator */
+ }
+ else
+ return LOG_ASN1ERR (pctxt, ASN_E_NOMEM);
+
+ *string = tmpstr;
+
+ return ASN_OK;
+}
+
+int decodeConsInteger
+(OOCTXT* pctxt, ASN1INT* pvalue, ASN1INT lower, ASN1INT upper)
+{
+ ASN1UINT range_value = upper - lower;
+ ASN1UINT adjusted_value;
+ int stat = ASN_OK;
+
+ if (range_value != ASN1UINT_MAX) { range_value += 1; }
+
+ if (lower > upper)
+ return ASN_E_RANGERR;
+ else if (lower != upper) {
+ stat = decodeConsWholeNumber (pctxt, &adjusted_value, range_value);
+ if (stat == ASN_OK) {
+ *pvalue = adjusted_value + lower;
+
+ if (*pvalue < lower || *pvalue > upper)
+ stat = ASN_E_CONSVIO;
+ }
+ }
+ else {
+ *pvalue = lower;
+ }
+
+ return stat;
+}
+
+int decodeConsUInt8
+(OOCTXT* pctxt, ASN1UINT8* pvalue, ASN1UINT lower, ASN1UINT upper)
+{
+ ASN1UINT range_value, value;
+ ASN1UINT adjusted_value;
+ int stat = ASN_OK;
+
+ /* Check for special case: if lower is 0 and upper is ASN1UINT_MAX, */
+ /* set range to ASN1UINT_MAX; otherwise to upper - lower + 1 */
+
+ range_value = (lower == 0 && upper == ASN1UINT_MAX) ?
+ ASN1UINT_MAX : upper - lower + 1;
+
+ if (lower != upper) {
+ ASN1UINT range_bitcnt;
+
+ /* If range is <= 255, bit-field case (10.5.7a) */
+
+ if (range_value <= 255) {
+ range_bitcnt = getUIntBitCount (range_value - 1);
+ }
+
+ /* If range is exactly 256, one-octet case (10.5.7b) */
+
+ else if (range_value == 256) {
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ range_bitcnt = 8;
+ }
+ stat = decodeBits (pctxt, &adjusted_value, range_bitcnt);
+ if (stat == ASN_OK) {
+ value = adjusted_value + lower;
+
+ if (value < lower || value > upper)
+ stat = ASN_E_CONSVIO;
+
+ *pvalue = (ASN1OCTET)value;
+ }
+ }
+ else *pvalue = (ASN1OCTET)lower;
+
+ return stat;
+}
+
+int decodeConsUInt16
+(OOCTXT* pctxt, ASN1USINT* pvalue, ASN1UINT lower, ASN1UINT upper)
+{
+ ASN1UINT range_value, value;
+ ASN1UINT adjusted_value;
+ int stat = ASN_OK;
+
+ /* Check for special case: if lower is 0 and upper is ASN1UINT_MAX, */
+ /* set range to ASN1UINT_MAX; otherwise to upper - lower + 1 */
+
+ range_value = (lower == 0 && upper == ASN1UINT_MAX) ?
+ ASN1UINT_MAX : upper - lower + 1;
+
+ if (lower != upper) {
+ stat = decodeConsWholeNumber (pctxt, &adjusted_value, range_value);
+ if (stat == ASN_OK) {
+ value = adjusted_value + lower;
+
+ /* Verify value is within given range (ED, 1/15/2002) */
+ if (value < lower || value > upper)
+ stat = ASN_E_CONSVIO;
+ *pvalue = (ASN1USINT) value;
+ }
+ }
+ else *pvalue = (ASN1USINT) lower;
+
+ return stat;
+}
+
+int decodeConsUnsigned
+(OOCTXT* pctxt, ASN1UINT* pvalue, ASN1UINT lower, ASN1UINT upper)
+{
+ ASN1UINT range_value;
+ ASN1UINT adjusted_value;
+ int stat = ASN_OK;
+
+ /* Check for special case: if lower is 0 and upper is ASN1UINT_MAX, */
+ /* set range to ASN1UINT_MAX; otherwise to upper - lower + 1 */
+
+ range_value = (lower == 0 && upper == ASN1UINT_MAX) ?
+ ASN1UINT_MAX : upper - lower + 1;
+
+ if (lower != upper) {
+ stat = decodeConsWholeNumber (pctxt, &adjusted_value, range_value);
+ if (stat == ASN_OK) {
+ *pvalue = adjusted_value + lower;
+ if (*pvalue < lower || *pvalue > upper)
+ stat = ASN_E_CONSVIO;
+ }
+ }
+ else *pvalue = lower;
+
+ return stat;
+}
+
+int decodeConsWholeNumber
+(OOCTXT* pctxt, ASN1UINT* padjusted_value, ASN1UINT range_value)
+{
+ ASN1UINT nocts, range_bitcnt;
+ int stat;
+
+ /* If unaligned, decode non-negative binary integer in the minimum */
+ /* number of bits necessary to represent the range (10.5.6) */
+
+ if (!TRUE) {
+ range_bitcnt = getUIntBitCount (range_value - 1);
+ }
+
+ /* If aligned, encoding depended on range value (10.5.7) */
+
+ else { /* aligned */
+
+ /* If range is <= 255, bit-field case (10.5.7a) */
+
+ if (range_value <= 255) {
+ range_bitcnt = getUIntBitCount (range_value - 1);
+ }
+
+ /* If range is exactly 256, one-octet case (10.5.7b) */
+
+ else if (range_value == 256) {
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ range_bitcnt = 8;
+ }
+
+ /* If range > 256 and <= 64k (65535), two-octet case (10.5.7c) */
+
+ else if (range_value <= 65536) {
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ range_bitcnt = 16;
+ }
+
+ /* If range > 64k, indefinite-length case (10.5.7d) */
+
+ else {
+ stat = decodeBits (pctxt, &nocts, 2);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ range_bitcnt = (nocts + 1) * 8;
+ }
+ }
+
+ return decodeBits (pctxt, padjusted_value, range_bitcnt);
+}
+
+int decodeDynBitString (OOCTXT* pctxt, ASN1DynBitStr* pBitStr)
+{
+ ASN1UINT nocts;
+ ASN1OCTET* ptmp;
+ int nbits, stat = ASN_OK;
+
+ /* If "fast copy" option is not set (ASN1FATSCOPY) or if constructed,
+ * copy the bit string value into a dynamic memory buffer;
+ * otherwise, store the pointer to the value in the decode
+ * buffer in the data pointer argument. */
+
+ if (pctxt->flags & ASN1FASTCOPY) {
+ /* check is it possible to do optimized decoding */
+
+ ASN1OCTET bit;
+ ASN1UINT byteIndex = pctxt->buffer.byteIndex; /* save byte index */
+ ASN1USINT bitOffset = pctxt->buffer.bitOffset; /* save bit offset */
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ stat = DECODEBIT (pctxt, &bit); /* read first bit of length determinant */
+ if (bit == 1 && stat == ASN_OK)
+ stat = DECODEBIT (pctxt, &bit); /* read second bit */
+
+ pctxt->buffer.byteIndex = byteIndex; /* restore byte index */
+ pctxt->buffer.bitOffset = bitOffset; /* restore bit offset */
+
+ /* if either first or second bit != 0 - not fragmented */
+
+ if (bit == 0 && stat == ASN_OK) {
+ ASN1UINT bitcnt;
+
+ stat = decodeLength (pctxt, &bitcnt);
+ if (stat != 0) return LOG_ASN1ERR (pctxt, stat);
+
+ pBitStr->numbits = bitcnt;
+ if (bitcnt > 0) {
+ pBitStr->data = ASN1BUFPTR (pctxt);
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+ }
+ else
+ pBitStr->data = 0;
+
+ return stat;
+ }
+ }
+
+ nbits = getComponentLength (pctxt, 1);
+
+ if (nbits < 0) return LOG_ASN1ERR (pctxt, nbits);
+ else if (nbits == 0) {
+ pBitStr->numbits = 0;
+ ptmp = 0;
+ }
+
+ nocts = (nbits + 7) / 8;
+
+ /* Allocate memory for the target string */
+
+ if (nocts > 0) {
+ ptmp = (ASN1OCTET*) ASN1MALLOC (pctxt, nocts);
+ if (0 == ptmp) return LOG_ASN1ERR (pctxt, ASN_E_NOMEM);
+
+ /* Call static bit string decode function */
+
+ stat = decodeBitString (pctxt, &pBitStr->numbits, ptmp, nocts);
+ }
+ pBitStr->data = ptmp;
+
+ return stat;
+}
+
+int decodeDynOctetString (OOCTXT* pctxt, ASN1DynOctStr* pOctStr)
+{
+ ASN1OCTET* ptmp;
+ int nocts, stat;
+
+ /* If "fast copy" option is not set (ASN1FASTCOPY) or if constructed,
+ * copy the octet string value into a dynamic memory buffer;
+ * otherwise, store the pointer to the value in the decode
+ * buffer in the data pointer argument. */
+
+ if (pctxt->flags & ASN1FASTCOPY) {
+ /* check if it is possible to do optimized decoding */
+
+ ASN1OCTET bit;
+ ASN1UINT byteIndex = pctxt->buffer.byteIndex; /* save byte index */
+ ASN1USINT bitOffset = pctxt->buffer.bitOffset; /* save bit offset */
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ stat = DECODEBIT (pctxt, &bit); /* read first bit of length determinant */
+ if (bit == 1 && stat == ASN_OK)
+ stat = DECODEBIT (pctxt, &bit); /* read second bit */
+
+ pctxt->buffer.byteIndex = byteIndex; /* restore byte index */
+ pctxt->buffer.bitOffset = bitOffset; /* restore bit offset */
+
+ /* if either first or second bit != 0 - not fragmented */
+
+ if (bit == 0 && stat == ASN_OK) {
+ ASN1UINT octcnt;
+
+ stat = decodeLength (pctxt, &octcnt);
+ if (stat != 0) return LOG_ASN1ERR (pctxt, stat);
+
+ pOctStr->numocts = octcnt;
+ if (octcnt > 0) {
+ pOctStr->data = ASN1BUFPTR (pctxt);
+
+ stat = moveBitCursor (pctxt, octcnt * 8);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+ }
+ else
+ pOctStr->data = 0;
+
+ return stat;
+ }
+ }
+
+ nocts = getComponentLength (pctxt, 8);
+
+ if (nocts < 0) return LOG_ASN1ERR (pctxt, nocts);
+ else if (nocts == 0) {
+ pOctStr->numocts = 0;
+ ptmp = 0;
+ }
+
+ /* Allocate memory for the target string */
+
+ else {
+ ptmp = (ASN1OCTET*) ASN1MALLOC (pctxt, nocts);
+ if (0 == ptmp) return LOG_ASN1ERR (pctxt, ASN_E_NOMEM);
+ }
+
+ /* Call static octet string decode function */
+
+ stat = decodeOctetString (pctxt, &pOctStr->numocts, ptmp, nocts);
+
+ pOctStr->data = ptmp;
+
+ return stat;
+}
+
+int decodeLength (OOCTXT* pctxt, ASN1UINT* pvalue)
+{
+ Asn1SizeCnst* pSize;
+ ASN1UINT lower, upper;
+ ASN1BOOL bitValue, extbit;
+ int stat;
+
+ /* If size constraint is present and extendable, decode extension */
+ /* bit.. */
+
+ if (isExtendableSize(pctxt->pSizeConstraint)) {
+ stat = DECODEBIT (pctxt, &extbit);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+ }
+ else extbit = 0;
+
+ /* Now use the value of the extension bit to select the proper */
+ /* size constraint range specification.. */
+
+ pSize = getSizeConstraint (pctxt, extbit);
+
+ lower = (pSize) ? pSize->lower : 0;
+ upper = (pSize) ? pSize->upper : ASN1UINT_MAX;
+
+ /* Reset the size constraint in the context block structure */
+
+ pctxt->pSizeConstraint = 0;
+
+ /* If upper limit is less than 64k, constrained case */
+
+ if (upper < 65536) {
+ if (lower == upper) {
+ *pvalue = 0;
+ stat = ASN_OK;
+ }
+ else
+ stat = decodeConsWholeNumber (pctxt, pvalue, (upper - lower + 1));
+
+ if (stat == ASN_OK) *pvalue += lower;
+ }
+ else {
+ /* unconstrained case OR constrained with upper bound >= 64K*/
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ stat = DECODEBIT (pctxt, &bitValue);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ if (bitValue == 0) {
+ stat = decodeBits (pctxt, pvalue, 7); /* 10.9.3.6 */
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+ }
+ else {
+ stat = DECODEBIT (pctxt, &bitValue);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ if (bitValue == 0) {
+ stat = decodeBits (pctxt, pvalue, 14); /* 10.9.3.7 */
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+ }
+ else {
+ ASN1UINT multiplier;
+
+ stat = decodeBits (pctxt, &multiplier, 6);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ *pvalue = 16384 * multiplier;
+
+ stat = ASN_OK_FRAG;
+ }
+ }
+ }
+
+ return stat;
+}
+
+int decodeObjectIdentifier (OOCTXT* pctxt, ASN1OBJID* pvalue)
+{
+ ASN1UINT len;
+ int stat, j;
+ unsigned subid;
+ ASN1UINT b;
+
+ /* Decode unconstrained length */
+
+ if ((stat = decodeLength (pctxt, &len)) < 0) {
+ return LOG_ASN1ERR (pctxt, stat);
+ }
+
+ /* Copy contents to a byte-aligned local buffer */
+
+ j = 0;
+ while (len > 0 && stat == ASN_OK) {
+ if (j < ASN_K_MAXSUBIDS) {
+
+ /* Parse a subidentifier out of the contents field */
+
+ pvalue->subid[j] = 0;
+ do {
+ if ((stat = decodeBits (pctxt, &b, 8)) == ASN_OK) {
+ pvalue->subid[j] = (pvalue->subid[j] * 128) + (b & 0x7F);
+ len--;
+ }
+ } while (b & 0x80 && stat == ASN_OK);
+
+ /* Handle the first subidentifier special case: the first two */
+ /* sub-id's are encoded into one using the formula (x * 40) + y */
+
+ if (j == 0) {
+ subid = pvalue->subid[0];
+ pvalue->subid[0] = ((subid / 40) >= 2) ? 2 : subid / 40;
+ pvalue->subid[1] = (pvalue->subid[0] == 2) ?
+ subid - 80 : subid % 40;
+ j = 2;
+ }
+ else j++;
+ }
+ else
+ stat = ASN_E_INVOBJID;
+ }
+
+ pvalue->numids = j;
+ if (stat == ASN_OK && len != 0) stat = ASN_E_INVLEN;
+
+ return (stat);
+}
+
+static int decodeOctets
+(OOCTXT* pctxt, ASN1OCTET* pbuffer, ASN1UINT bufsiz, ASN1UINT nbits)
+{
+ ASN1UINT nbytes = (nbits + 7) / 8 ;
+ ASN1UINT i = 0, j;
+ ASN1UINT rshift = pctxt->buffer.bitOffset;
+ ASN1UINT lshift = 8 - rshift;
+ ASN1UINT nbitsInLastOctet;
+ ASN1OCTET mask;
+ int stat;
+
+ /* Check to make sure buffer contains number of bits requested */
+
+ if ((pctxt->buffer.byteIndex + nbytes) > pctxt->buffer.size) {
+ return LOG_ASN1ERR (pctxt, ASN_E_ENDOFBUF);
+ }
+
+ /* Check to make sure buffer is big enough to hold requested */
+ /* number of bits.. */
+
+ if (nbytes > bufsiz) {
+ return LOG_ASN1ERR (pctxt, ASN_E_STROVFLW);
+ }
+
+ /* If on a byte boundary, can do a direct memcpy to target buffer */
+
+ if (pctxt->buffer.bitOffset == 8) {
+ memcpy (pbuffer, &pctxt->buffer.data[pctxt->buffer.byteIndex], nbytes);
+ stat = moveBitCursor (pctxt, nbits);
+ if (stat != ASN_OK) return stat;
+ i = nbytes - 1; nbits %= 8;
+ }
+ else {
+ while (nbits >= 8) {
+
+ /* Transfer lower bits from stream octet to upper bits of */
+ /* target octet.. */
+
+ pbuffer[i] = pctxt->buffer.data[pctxt->buffer.byteIndex++]
+ << lshift;
+
+ /* Transfer upper bits from next stream octet to lower bits */
+ /* target octet.. */
+
+ pbuffer[i++] |= pctxt->buffer.data[pctxt->buffer.byteIndex]
+ >> rshift;
+
+ nbits -= 8;
+ }
+
+ /* Copy last partial byte */
+
+ if (nbits >= rshift) {
+ pbuffer[i] =
+ pctxt->buffer.data[pctxt->buffer.byteIndex++] << lshift;
+
+ nbitsInLastOctet = nbits - rshift;
+
+ if (nbitsInLastOctet > 0) {
+ pbuffer[i] |=
+ pctxt->buffer.data[pctxt->buffer.byteIndex] >> rshift;
+ }
+
+ pctxt->buffer.bitOffset = 8 - nbitsInLastOctet;
+ }
+ else if (nbits > 0) { /* nbits < rshift */
+ pbuffer[i] =
+ pctxt->buffer.data[pctxt->buffer.byteIndex] << lshift;
+ pctxt->buffer.bitOffset = rshift - nbits;
+ }
+ }
+
+ /* Mask unused bits off of last byte */
+
+ if (nbits > 0) {
+ mask = 0;
+ for (j = 0; j < nbits; j++) {
+ mask >>= 1;
+ mask |= 0x80;
+ }
+ pbuffer[i] &= mask;
+ }
+
+ return ASN_OK;
+}
+
+int decodeOctetString
+(OOCTXT* pctxt, ASN1UINT* numocts_p, ASN1OCTET* buffer, ASN1UINT bufsiz)
+{
+ ASN1UINT octcnt;
+ int lstat, octidx = 0, stat;
+ Asn1SizeCnst* pSizeList = pctxt->pSizeConstraint;
+
+ for (*numocts_p = 0;;) {
+ lstat = decodeLength (pctxt, &octcnt);
+ if (lstat < 0) return LOG_ASN1ERR (pctxt, lstat);
+
+ if (octcnt > 0) {
+ *numocts_p += octcnt;
+
+ if (TRUE) {
+ ASN1BOOL doAlign;
+
+ stat = bitAndOctetStringAlignmentTest
+ (pSizeList, octcnt, FALSE, &doAlign);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ if (doAlign) {
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+ }
+ }
+
+ stat = decodeOctets (pctxt, &buffer[octidx],
+ bufsiz - octidx, (octcnt * 8));
+
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+ }
+
+ if (lstat == ASN_OK_FRAG) {
+ octidx += octcnt;
+ }
+ else break;
+ }
+
+ return ASN_OK;
+}
+
+int decodeOpenType
+(OOCTXT* pctxt, const ASN1OCTET** object_p2, ASN1UINT* numocts_p)
+{
+ ASN1DynOctStr octStr;
+ int stat;
+
+ stat = decodeDynOctetString (pctxt, &octStr);
+ if (stat == ASN_OK) {
+ *numocts_p = octStr.numocts;
+ *object_p2 = octStr.data;
+ }
+
+ return stat;
+}
+
+int decodeSemiConsInteger (OOCTXT* pctxt, ASN1INT* pvalue, ASN1INT lower)
+{
+ signed char b;
+ unsigned char ub;
+ ASN1UINT nbytes;
+ int stat;
+
+ stat = decodeLength (pctxt, &nbytes);
+ if (stat < 0) return LOG_ASN1ERR (pctxt, stat);
+
+ if (nbytes > 0) {
+
+ /* Align buffer */
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ /* Decode first byte into a signed byte value and assign to integer. */
+ /* This should handle sign extension.. */
+
+ stat = decodeOctets (pctxt, (ASN1OCTET*)&b, 1, 8);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ *pvalue = b;
+ nbytes--;
+
+ /* Decode remaining bytes and add to result */
+
+ while (nbytes > 0) {
+ stat = decodeOctets (pctxt, (ASN1OCTET*)&ub, 1, 8);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ *pvalue = (*pvalue * 256) + ub;
+ nbytes--;
+ }
+ }
+ else { /* nbytes == 0 */
+ *pvalue = 0;
+ }
+ if (lower > ASN1INT_MIN)
+ *pvalue += lower;
+
+ return ASN_OK;
+}
+
+int decodeSemiConsUnsigned (OOCTXT* pctxt, ASN1UINT* pvalue, ASN1UINT lower)
+{
+ ASN1UINT nbytes;
+ int stat;
+
+ stat = decodeLength (pctxt, &nbytes);
+ if (stat < 0) return LOG_ASN1ERR (pctxt, stat);
+
+
+ if (nbytes > 0) {
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ stat = decodeBits (pctxt, pvalue, nbytes * 8);
+ }
+ else
+ *pvalue = 0;
+ *pvalue += lower;
+
+ return stat;
+}
+
+int decodeSmallNonNegWholeNumber (OOCTXT* pctxt, ASN1UINT* pvalue)
+{
+ ASN1BOOL bitValue;
+ ASN1UINT len;
+ int ret;
+
+ if ((ret = DECODEBIT (pctxt, &bitValue)) != ASN_OK)
+ return ret;
+
+ if (bitValue == 0) {
+ return decodeBits (pctxt, pvalue, 6); /* 10.6.1 */
+ }
+ else {
+ if ((ret = decodeLength (pctxt, &len)) < 0)
+ return ret;
+
+ if ((ret = decodeByteAlign (pctxt)) != ASN_OK)
+ return ret;
+
+ return decodeBits (pctxt, pvalue, len*8);
+ }
+}
+
+int decodeVarWidthCharString (OOCTXT* pctxt, const char** pvalue)
+{
+ int stat;
+ ASN1OCTET* tmpstr;
+ ASN1UINT len;
+
+ /* note: need to save size constraint for use in alignCharStr */
+ /* because it will be cleared in decodeLength from the context.. */
+ Asn1SizeCnst* psize = pctxt->pSizeConstraint;
+
+ /* Decode length */
+
+ stat = decodeLength (pctxt, &len);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ /* Byte-align */
+
+ if (alignCharStr (pctxt, len, 8, psize)) {
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+ }
+
+ /* Decode data */
+
+ tmpstr = (ASN1OCTET*) ASN1MALLOC (pctxt, len + 1);
+ if (0 != tmpstr) {
+ if ((stat = decodeOctets (pctxt, tmpstr, len, len * 8)) != ASN_OK)
+ return LOG_ASN1ERR (pctxt, stat);
+
+ tmpstr[len] = '\0'; /* add null-terminator */
+ }
+ else
+ return LOG_ASN1ERR (pctxt, ASN_E_NOMEM);
+
+ *pvalue = (char*)tmpstr;
+
+ return ASN_OK;
+}
+
+static int decode16BitConstrainedString
+(OOCTXT* pctxt, Asn116BitCharString* pString, Asn116BitCharSet* pCharSet)
+{
+ ASN1UINT i, idx, nbits = pCharSet->alignedBits;
+ int stat;
+
+ /* Decode length */
+
+ stat = decodeLength (pctxt, &pString->nchars);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ /* Byte-align */
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ /* Decode data */
+
+ pString->data = (ASN116BITCHAR*)
+ ASN1MALLOC (pctxt, pString->nchars*sizeof(ASN116BITCHAR));
+
+ if (pString->data) {
+ for (i = 0; i < pString->nchars; i++) {
+ stat = decodeBits (pctxt, &idx, nbits);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ pString->data[i] = (pCharSet->charSet.data == 0) ?
+ idx + pCharSet->firstChar : pCharSet->charSet.data[idx];
+ }
+ }
+ else
+ return LOG_ASN1ERR (pctxt, ASN_E_NOMEM);
+
+ return ASN_OK;
+}
+
+static int getComponentLength (OOCTXT* pctxt, ASN1UINT itemBits)
+{
+ OOCTXT lctxt;
+ ASN1UINT len, totalLen = 0;
+ int stat;
+
+ stat = initSubContext (&lctxt, pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) {
+ freeContext (&lctxt);
+ return LOG_ASN1ERR (pctxt, stat);
+ }
+ lctxt.pSizeConstraint = pctxt->pSizeConstraint;
+
+ for (;;) {
+ stat = decodeLength (&lctxt, &len);
+ if (stat < 0) {
+ freeContext (&lctxt);
+ return LOG_ASN1ERR (pctxt, stat);
+ }
+
+ totalLen += len;
+
+ if (stat == ASN_OK_FRAG) {
+ stat = moveBitCursor (&lctxt, len * itemBits);
+ if (stat != ASN_OK) {
+ freeContext (&lctxt);
+ return LOG_ASN1ERR (pctxt, stat);
+ }
+ }
+ else break;
+ }
+
+ freeContext (&lctxt);
+
+ return totalLen;
+}
+
+int moveBitCursor (OOCTXT* pctxt, int bitOffset)
+{
+ int currBitOffset =
+ (pctxt->buffer.byteIndex * 8) + (8 - pctxt->buffer.bitOffset);
+
+ currBitOffset += bitOffset;
+
+ pctxt->buffer.byteIndex = (currBitOffset / 8);
+ pctxt->buffer.bitOffset = 8 - (currBitOffset % 8);
+
+ if (pctxt->buffer.byteIndex > pctxt->buffer.size) {
+ return (ASN_E_ENDOFBUF);
+ }
+
+ return ASN_OK;
+}
diff --git a/addons/ooh323c/src/dlist.c b/addons/ooh323c/src/dlist.c
new file mode 100644
index 000000000..52fc87d42
--- /dev/null
+++ b/addons/ooh323c/src/dlist.c
@@ -0,0 +1,256 @@
+/*
+ * Copyright (C) 1997-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+
+#include "ooasn1.h"
+
+void dListInit (DList* pList)
+{
+ if (pList) {
+ pList->count = 0;
+ pList->head = (DListNode*) 0;
+ pList->tail = (DListNode*) 0;
+ }
+}
+
+DListNode* dListAppend (OOCTXT* pctxt, DList* pList, void* pData)
+{
+ DListNode* pListNode = (DListNode*)
+ memAlloc (pctxt, sizeof(DListNode));
+
+ if (0 != pListNode) {
+ pListNode->data = pData;
+ pListNode->next = (DListNode*) 0;
+ if (0 != pList->tail) {
+ pList->tail->next = pListNode;
+ pListNode->prev = pList->tail;
+ }
+ if (0 == pList->head) {
+ pList->head = pListNode;
+ pListNode->prev = (DListNode*) 0;
+ }
+ pList->tail = pListNode;
+ pList->count++;
+ }
+
+ return pListNode;
+}
+
+DListNode* dListAppendNode (OOCTXT* pctxt, DList* pList, void* pData)
+{
+ DListNode* pListNode =
+ (DListNode*) (((char*)pData) - sizeof(DListNode));
+
+ if (0 != pListNode) {
+ pListNode->data = pData;
+ pListNode->next = (DListNode*) 0;
+ if (0 != pList->tail) {
+ pList->tail->next = pListNode;
+ pListNode->prev = pList->tail;
+ }
+ if (0 == pList->head) {
+ pList->head = pListNode;
+ pListNode->prev = (DListNode*) 0;
+ }
+ pList->tail = pListNode;
+ pList->count++;
+ }
+
+ return pListNode;
+}
+
+/* Delete the head node from the list and return the data item stored */
+/* in that node.. */
+
+void* dListDeleteHead (OOCTXT* pctxt, DList* pList)
+{
+ DListNode* pNode = (0 != pList) ? pList->head : 0;
+ if (0 != pNode) {
+ void* pdata = pNode->data;
+ dListRemove (pList, pNode);
+ memFreePtr (pctxt, pNode);
+ return pdata;
+ }
+ return 0;
+}
+
+/* Free all nodes, but not the data */
+void dListFreeNodes (OOCTXT* pctxt, DList* pList)
+{
+ DListNode* pNode, *pNextNode;
+
+ for (pNode = pList->head; pNode != 0; pNode = pNextNode) {
+ pNextNode = pNode->next;
+ memFreePtr (pctxt, pNode);
+ }
+ pList->count = 0;
+ pList->head = pList->tail = 0;
+}
+
+/* Free all nodes and their data */
+void dListFreeAll (OOCTXT* pctxt, DList* pList)
+{
+ DListNode* pNode, *pNextNode;
+
+ for (pNode = pList->head; pNode != 0; pNode = pNextNode) {
+ pNextNode = pNode->next;
+
+ memFreePtr (pctxt, pNode->data);
+ memFreePtr (pctxt, pNode);
+ }
+ pList->count = 0;
+ pList->head = pList->tail = 0;
+}
+
+/* Remove node from list. Node is not freed */
+void dListRemove (DList* pList, DListNode* node)
+{
+ if(node->next != 0) {
+ node->next->prev = node->prev;
+ }
+ else { /* tail */
+ pList->tail = node->prev;
+ }
+ if(node->prev != 0) {
+ node->prev->next = node->next;
+ }
+ else { /* head */
+ pList->head = node->next;
+ }
+ pList->count--;
+}
+
+void dListFindAndRemove(DList* pList, void *data)
+{
+ DListNode *pNode, *pNextNode;
+ for(pNode = pList->head; pNode !=0; pNode = pNextNode){
+ pNextNode = pNode->next;
+ if(pNode->data == data) /* pointer comparison*/
+ break;
+ }
+ if(pNode)
+ dListRemove(pList, pNode);
+}
+
+DListNode* dListFindByIndex (DList* pList, int index)
+{
+ DListNode* curNode;
+ int i;
+
+ if(index >= (int)pList->count) return 0;
+ for(i = 0, curNode = pList->head; i < index && curNode != 0; i++) {
+ curNode = curNode->next;
+ }
+ return curNode;
+}
+
+/* Insert item before given node */
+
+DListNode* dListInsertBefore
+(OOCTXT* pctxt, DList* pList, DListNode* node, const void* pData)
+{
+ DListNode* pListNode = (DListNode*) memAlloc (pctxt, sizeof(DListNode));
+
+ if (0 != pListNode) {
+ pListNode->data = (void*)pData;
+
+ if (node == 0) { /* insert before end (as last element) */
+ pListNode->next = (DListNode*) 0;
+ if (0 != pList->tail) {
+ pList->tail->next = pListNode;
+ pListNode->prev = pList->tail;
+ }
+ if (0 == pList->head) {
+ pList->head = pListNode;
+ pListNode->prev = (DListNode*) 0;
+ }
+ pList->tail = pListNode;
+ }
+ else if (node == pList->head) { /* insert as head (head case) */
+ pListNode->next = pList->head;
+ pListNode->prev = (DListNode*) 0;
+ if(pList->head != 0) {
+ pList->head->prev = pListNode;
+ }
+ if(pList->tail == 0) {
+ pList->tail = pListNode;
+ }
+ pList->head = pListNode;
+ }
+ else { /* other cases */
+ pListNode->next = node;
+ pListNode->prev = node->prev;
+ node->prev = pListNode;
+ /* here, pListNode->prev always should be non-zero,
+ * because if pListNode->prev is zero - it is head case (see above).
+ */
+ pListNode->prev->next = pListNode;
+ }
+
+ pList->count++;
+ }
+
+ return pListNode;
+}
+
+/* Insert item after given node */
+
+DListNode* dListInsertAfter
+(OOCTXT* pctxt, DList* pList, DListNode* node, const void* pData)
+{
+ DListNode* pListNode = (DListNode*) memAlloc (pctxt, sizeof(DListNode));
+
+ if (0 != pListNode) {
+ pListNode->data = (void*)pData;
+
+ if (node == 0) { /* insert as head (as first element) */
+ pListNode->next = pList->head;
+ pListNode->prev = (DListNode*) 0;
+ if (pList->head != 0) {
+ pList->head->prev = pListNode;
+ }
+ if (pList->tail == 0) {
+ pList->tail = pListNode;
+ }
+ pList->head = pListNode;
+ }
+ else if (node == pList->tail) { /* insert as tail (as last element) */
+ pListNode->next = (DListNode*) 0;
+ if (0 != pList->tail) {
+ pList->tail->next = pListNode;
+ pListNode->prev = pList->tail;
+ }
+ if (0 == pList->head) {
+ pList->head = pListNode;
+ pListNode->prev = (DListNode*) 0;
+ }
+ pList->tail = pListNode;
+ }
+ else { /* other cases */
+ pListNode->next = node->next;
+ pListNode->prev = node;
+ node->next = pListNode;
+ /* here, pListNode->next always should be non-zero,
+ * because if pListNode->next is zero - it is tail case (see above).
+ */
+ pListNode->next->prev = pListNode;
+ }
+
+ pList->count++;
+ }
+
+ return pListNode;
+}
+
diff --git a/addons/ooh323c/src/dlist.h b/addons/ooh323c/src/dlist.h
new file mode 100644
index 000000000..79663d999
--- /dev/null
+++ b/addons/ooh323c/src/dlist.h
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 1997-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+/**
+ * @file dlist.h
+ * Doubly-linked list structures and utility functions.
+ */
+#ifndef _OODLIST_H_
+#define _OODLIST_H_
+
+struct OOCTXT;
+
+/**
+ * @defgroup llfuns Doubly-linked list structures and utility functions.
+ * @{
+ */
+typedef struct _DListNode {
+ void* data;
+ struct _DListNode* next;
+ struct _DListNode* prev;
+} DListNode;
+
+typedef struct _DList {
+ unsigned int count;
+ DListNode* head;
+ DListNode* tail;
+} DList;
+
+#define ALLOC_ASN1ELEMDNODE(pctxt,type) \
+(type*) (((char*)memHeapAllocZ (&(pctxt)->pTypeMemHeap, sizeof(type) + \
+sizeof(DListNode))) + sizeof(DListNode))
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef EXTERN
+#if defined (MAKE_DLL)
+#define EXTERN __declspec(dllexport)
+#elif defined (USEASN1DLL)
+#define EXTERN __declspec(dllimport)
+#else
+#define EXTERN
+#endif /* MAKE_DLL */
+#endif /* EXTERN */
+
+/**
+ * This function appends an item to the linked list structure. The data item is
+ * passed into the function as a void pointer that can point to any object of
+ * any type. The memAlloc function is used to allocated the memory for the
+ * list node structure; therefore, all internal list memory will be released
+ * whenever memFree is called. The pointer to the data item itself is stored
+ * in the node structure - a copy is not made.
+ *
+ * @param pctxt A pointer to a context structure. This provides a
+ * storage area for the function to store all working
+ * variables that must be maintained between function
+ * calls.
+ * @param pList A pointer to a linked list structure onto which the data
+ * item is to be appended. A pointer to an updated linked
+ * list structure.
+ * @param pData A pointer to a data item to be appended to the list.
+ * @return A pointer to an allocated node structure used to link
+ * the given data value into the list.
+ */
+EXTERN DListNode* dListAppend
+(struct OOCTXT* pctxt, DList* pList, void* pData);
+
+EXTERN DListNode* dListAppendNode
+(struct OOCTXT* pctxt, DList* pList, void* pData);
+
+/**
+ * This function delete the head item from the list and returns a pointer
+ * the data item stored in that node. The memory for the node structure
+ * is released.
+ *
+ * @param pctxt A pointer to a context structure. This provides a
+ * storage area for the function to store all working
+ * variables that must be maintained between function
+ * calls.
+ * @param pList A pointer to the linked list structure from which
+ * the node will be deleted.
+ * @return A pointer to the data item stored in the deleted node.
+ */
+EXTERN void* dListDeleteHead (struct OOCTXT* pctxt, DList* pList);
+
+EXTERN DListNode* dListFindByIndex (DList* pList, int index);
+
+/**
+ * This function initializes a doubly linked list structure. It sets the number
+ * of elements to zero and sets all internal pointer values to NULL. A doubly
+ * linked-list structure is described by the DList type. Nodes of the list
+ * are of type DListNode.
+ *
+ * Memory for the structures is allocated using the memAlloc run-time
+ * function and is maintained within the context structure that is a required
+ * parameter to all dList functions. This memory is released when memFree
+ * is called or the Context is released. Unless otherwise noted, all data
+ * passed into the list functions is simply stored on the list by value (i.e. a
+ * deep-copy of the data is not done).
+ *
+ * @param pList A pointer to a linked list structure to be initialized.
+ */
+EXTERN void dListInit (DList* pList);
+
+/**
+ * This function removes all nodes from the linked list and releases the memory
+ * that was allocated for storing the node structures (DListNode). The data
+ * will not be released.
+ *
+ * @param pctxt A pointer to a context structure. This provides a
+ * storage area for the function to store all working
+ * variables that must be maintained between function
+ * calls.
+ * @param pList A pointer to a linked list structure onto which the data
+ * item is to be appended. A pointer to an updated linked
+ * list structure.
+ */
+EXTERN void dListFreeNodes (struct OOCTXT* pctxt, DList* pList);
+
+/**
+ * This function removes all nodes from the linked list structure and releases
+ * the memory that was allocated for storing the node structures
+ * (DListNode) and for data. The memory for data in each node must have
+ * been previously allocated with calls to memAlloc, memAllocZ, or
+ * memRealloc functions.
+ *
+ * @param pctxt Pointer to a context structure. This provides a
+ * storage area for the function to store all working
+ * variables that must be maintained between function
+ * calls.
+ * @param pList Pointer to a linked list structure.
+ */
+EXTERN void dListFreeAll (struct OOCTXT* pctxt, DList* pList);
+
+/**
+ * This function inserts an item into the linked list structure before the
+ * specified element.
+ *
+ * @param pctxt Pointer to a context structure.
+ * @param pList A pointer to a linked list structure into which the
+ * data item is to be inserted.
+ * @param node The position in the list where the item is to be
+ * inserted. The item will be inserted before this
+ * node or appended to the list if node is null.
+ * @param pData A pointer to the data item to be inserted to the list.
+ * @return A pointer to an allocated node structure used to
+ * link the given data value into the list.
+ */
+EXTERN DListNode* dListInsertBefore
+(struct OOCTXT* pctxt, DList* pList, DListNode* node, const void* pData);
+
+/**
+ * This function inserts an item into the linked list structure after the
+ * specified element.
+ *
+ * @param pctxt Pointer to a context structure.
+ * @param pList A pointer to a linked list structure into which the
+ * data item is to be inserted.
+ * @param node The position in the list where the item is to be
+ * inserted. The item will be inserted after this
+ * node or added as the head element if node is null.
+ * @param pData A pointer to the data item to be inserted to the list.
+ * @return A pointer to an allocated node structure used to
+ * link the given data value into the list.
+ */
+EXTERN DListNode* dListInsertAfter
+(struct OOCTXT* pctxt, DList* pList, DListNode* node, const void* pData);
+
+/**
+ * This function removes a node from the linked list structure. The memAlloc
+ * function was used to allocate the memory for the list node structure,
+ * therefore, all internal list memory will be released whenever memFree or
+ * memFreePtr is called.
+ *
+ * @param pList A pointer to a linked list structure onto which the data
+ * item is to be removed. A pointer to an updated linked
+ * list structure.
+ * @param node A pointer to the node that is to be removed. It should
+ * already be in the linked list structure.
+ */
+EXTERN void dListRemove (DList* pList, DListNode* node);
+void dListFindAndRemove(DList* pList, void* data);
+
+/**
+ * @}
+ */
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/addons/ooh323c/src/encode.c b/addons/ooh323c/src/encode.c
new file mode 100644
index 000000000..45e5916df
--- /dev/null
+++ b/addons/ooh323c/src/encode.c
@@ -0,0 +1,1103 @@
+/*
+ * Copyright (C) 1997-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+
+#include <stdlib.h>
+#include "ooasn1.h"
+
+static int encode16BitConstrainedString
+(OOCTXT* pctxt, Asn116BitCharString value, Asn116BitCharSet* pCharSet);
+
+static int encode2sCompBinInt (OOCTXT* pctxt, ASN1INT value);
+static int encodeNonNegBinInt (OOCTXT* pctxt, ASN1UINT value);
+static int encodeUnconsLength (OOCTXT* pctxt, ASN1UINT value);
+static int getIdentByteCount (ASN1UINT ident);
+
+int encodeBit (OOCTXT* pctxt, ASN1BOOL value)
+{
+ int stat = ASN_OK;
+
+ /* If start of new byte, init to zero */
+
+ if (pctxt->buffer.bitOffset == 8) {
+ pctxt->buffer.data[pctxt->buffer.byteIndex] = 0;
+ }
+
+ /* Adjust bit offset and determine if at end of current byte */
+
+ if (--pctxt->buffer.bitOffset < 0) {
+ if (++pctxt->buffer.byteIndex >= pctxt->buffer.size) {
+ if ((stat = encodeExpandBuffer (pctxt, 1)) != ASN_OK) {
+ return stat;
+ }
+ }
+ pctxt->buffer.data[pctxt->buffer.byteIndex] = 0;
+ pctxt->buffer.bitOffset = 7;
+ }
+
+ /* Set single-bit value */
+
+ if (value) {
+ pctxt->buffer.data[pctxt->buffer.byteIndex] |=
+ ( 1 << pctxt->buffer.bitOffset );
+ }
+
+ /* If last bit in octet, set offsets to start new byte (ED, 9/7/01) */
+
+ if (pctxt->buffer.bitOffset == 0) {
+ pctxt->buffer.bitOffset = 8;
+ pctxt->buffer.byteIndex++;
+ pctxt->buffer.data[pctxt->buffer.byteIndex] = 0;
+ }
+
+ return stat;
+}
+
+int encodeBits (OOCTXT* pctxt, ASN1UINT value, ASN1UINT nbits)
+{
+ int nbytes = (nbits + 7)/ 8, stat = ASN_OK;
+
+ if (nbits == 0) return stat;
+
+ /* If start of new byte, init to zero */
+
+ if (pctxt->buffer.bitOffset == 8) {
+ pctxt->buffer.data[pctxt->buffer.byteIndex] = 0;
+ }
+
+ /* Mask off unused bits from the front of the value */
+
+ if (nbits < (sizeof(ASN1UINT) * 8))
+ value &= ((1 << nbits) - 1);
+
+ /* If bits will fit in current byte, set them and return */
+
+ if (nbits < (unsigned)pctxt->buffer.bitOffset) {
+ pctxt->buffer.bitOffset -= nbits;
+ pctxt->buffer.data[pctxt->buffer.byteIndex] |=
+ ( value << pctxt->buffer.bitOffset );
+ return stat;
+ }
+
+ /* Check buffer space and allocate more memory if necessary */
+
+ stat = encodeCheckBuffer (pctxt, nbytes);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ /* Set bits in remainder of the current byte and then loop */
+ /* to set bits in subsequent bytes.. */
+
+ nbits -= pctxt->buffer.bitOffset;
+ pctxt->buffer.data[pctxt->buffer.byteIndex++] |=
+ (ASN1OCTET)( value >> nbits );
+ pctxt->buffer.data[pctxt->buffer.byteIndex] = 0;
+
+ while (nbits >= 8) {
+ nbits -= 8;
+ pctxt->buffer.data[pctxt->buffer.byteIndex++] =
+ (ASN1OCTET)( value >> nbits );
+ pctxt->buffer.data[pctxt->buffer.byteIndex] = 0;
+ }
+
+ /* copy final partial byte */
+
+ pctxt->buffer.bitOffset = 8 - nbits;
+ if (nbits > 0) {
+ pctxt->buffer.data[pctxt->buffer.byteIndex] =
+ (ASN1OCTET)((value & ((1 << nbits)-1)) << pctxt->buffer.bitOffset);
+ }
+ else
+ pctxt->buffer.data[pctxt->buffer.byteIndex] = 0;
+
+ return stat;
+}
+
+int encodeBitsFromOctet (OOCTXT* pctxt, ASN1OCTET value, ASN1UINT nbits)
+{
+ int lshift = pctxt->buffer.bitOffset;
+ int rshift = 8 - pctxt->buffer.bitOffset;
+ int stat = ASN_OK;
+ ASN1OCTET mask;
+
+ if (nbits == 0) return ASN_OK;
+
+ /* Mask off unused bits from the end of the value */
+
+ if (nbits < 8) {
+ switch (nbits) {
+ case 1: mask = 0x80; break;
+ case 2: mask = 0xC0; break;
+ case 3: mask = 0xE0; break;
+ case 4: mask = 0xF0; break;
+ case 5: mask = 0xF8; break;
+ case 6: mask = 0xFC; break;
+ case 7: mask = 0xFE; break;
+ default:;
+ }
+ value &= mask;
+ }
+
+ /* If we are on a byte boundary, we can do a direct assignment */
+
+ if (pctxt->buffer.bitOffset == 8) {
+ pctxt->buffer.data[pctxt->buffer.byteIndex] = value;
+ if (nbits == 8) {
+ pctxt->buffer.byteIndex++;
+ pctxt->buffer.data[pctxt->buffer.byteIndex] = 0;
+ }
+ else
+ pctxt->buffer.bitOffset -= nbits;
+ }
+
+ /* Otherwise, need to set some bits in the first octet and */
+ /* possibly some bits in the following octet.. */
+
+ else {
+ pctxt->buffer.data[pctxt->buffer.byteIndex] |=
+ (ASN1OCTET)(value >> rshift);
+
+ pctxt->buffer.bitOffset -= nbits;
+
+ if (pctxt->buffer.bitOffset < 0) {
+ pctxt->buffer.byteIndex++;
+ pctxt->buffer.data[pctxt->buffer.byteIndex] =
+ (ASN1OCTET)(value << lshift);
+ pctxt->buffer.bitOffset += 8;
+ }
+ }
+
+ return stat;
+}
+
+int encodeBitString (OOCTXT* pctxt, ASN1UINT numbits, const ASN1OCTET* data)
+{
+ int enclen, octidx = 0, stat;
+ Asn1SizeCnst* pSizeList = pctxt->pSizeConstraint;
+
+ for (;;) {
+ if ((enclen = encodeLength (pctxt, numbits)) < 0) {
+ return LOG_ASN1ERR (pctxt, enclen);
+ }
+
+ if (enclen > 0) {
+ ASN1BOOL doAlign;
+
+ stat = bitAndOctetStringAlignmentTest
+ (pSizeList, numbits, TRUE, &doAlign);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ if (doAlign) {
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+ }
+
+ stat = encodeOctets (pctxt, &data[octidx], enclen);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+ }
+
+ if (enclen < (int)numbits) {
+ numbits -= enclen;
+ octidx += (enclen/8);
+ }
+ else break;
+ }
+
+ return ASN_OK;
+}
+
+int encodeBMPString
+(OOCTXT* pctxt, ASN1BMPString value, Asn116BitCharSet* permCharSet)
+{
+ Asn116BitCharSet charSet;
+ int stat;
+
+ /* Set character set */
+
+ init16BitCharSet (&charSet, BMP_FIRST, BMP_LAST, BMP_ABITS, BMP_UBITS);
+
+ if (permCharSet) {
+ set16BitCharSet (pctxt, &charSet, permCharSet);
+ }
+
+ /* Encode constrained string */
+
+ stat = encode16BitConstrainedString (pctxt, value, &charSet);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ return stat;
+}
+
+int encodeByteAlign (OOCTXT* pctxt)
+{
+ if (pctxt->buffer.bitOffset != 8) {
+ if ((pctxt->buffer.byteIndex + 1) >= pctxt->buffer.size) {
+ int stat = encodeExpandBuffer (pctxt, 1);
+ if (stat != ASN_OK) return (stat);
+ }
+ pctxt->buffer.byteIndex++;
+ pctxt->buffer.bitOffset = 8;
+ pctxt->buffer.data[pctxt->buffer.byteIndex] = 0;
+ }
+
+ return ASN_OK;
+}
+
+int encodeCheckBuffer (OOCTXT* pctxt, ASN1UINT nbytes)
+{
+ int stat = ASN_OK;
+
+ /* Add one to required bytes because increment logic will always */
+ /* init the byte at the incremented index to zero.. */
+
+ if ( ( pctxt->buffer.byteIndex + nbytes + 1 ) >= pctxt->buffer.size ) {
+ if ((stat = encodeExpandBuffer (pctxt, nbytes+1)) != ASN_OK) {
+ return LOG_ASN1ERR (pctxt, stat);
+ }
+ }
+
+ return (stat);
+}
+
+int encodeConsInteger
+(OOCTXT* pctxt, ASN1INT value, ASN1INT lower, ASN1INT upper)
+{
+ ASN1UINT range_value;
+ ASN1UINT adjusted_value;
+ int stat;
+
+ /* Check value against given range */
+
+ if (value < lower || value > upper) {
+ return ASN_E_CONSVIO;
+ }
+
+ /* Adjust range value based on lower/upper signed values and */
+ /* other possible conflicts.. */
+
+ if ((upper > 0 && lower >= 0) || (upper <= 0 && lower < 0)) {
+ range_value = upper - lower;
+ adjusted_value = value - lower;
+ }
+ else {
+ range_value = upper + abs(lower);
+ adjusted_value = value + abs(lower);
+ }
+
+ if (range_value != ASN1UINT_MAX) { range_value += 1; }
+
+ if (range_value == 0 || lower > upper)
+ stat = ASN_E_RANGERR;
+ else if (lower != upper) {
+ stat = encodeConsWholeNumber (pctxt, adjusted_value, range_value);
+ }
+ else
+ stat = ASN_OK;
+
+ return stat;
+}
+
+int encodeConsUnsigned
+(OOCTXT* pctxt, ASN1UINT value, ASN1UINT lower, ASN1UINT upper)
+{
+ ASN1UINT range_value;
+ ASN1UINT adjusted_value;
+ int stat;
+
+ /* Check for special case: if lower is 0 and upper is ASN1UINT_MAX, */
+ /* set range to ASN1UINT_MAX; otherwise to upper - lower + 1 */
+
+ range_value = (lower == 0 && upper == ASN1UINT_MAX) ?
+ ASN1UINT_MAX : upper - lower + 1;
+
+ adjusted_value = value - lower;
+
+ if (lower != upper) {
+ stat = encodeConsWholeNumber (pctxt, adjusted_value, range_value);
+ }
+ else
+ stat = ASN_OK;
+
+ return stat;
+}
+
+int encodeConsWholeNumber
+(OOCTXT* pctxt, ASN1UINT adjusted_value, ASN1UINT range_value)
+{
+ ASN1UINT nocts, range_bitcnt = getUIntBitCount (range_value - 1);
+ int stat;
+
+ if (adjusted_value >= range_value && range_value != ASN1UINT_MAX) {
+ return LOG_ASN1ERR (pctxt, ASN_E_RANGERR);
+ }
+
+ /* If range is <= 255, bit-field case (10.5.7a) */
+
+ if (range_value <= 255) {
+ return encodeBits (pctxt, adjusted_value, range_bitcnt);
+ }
+
+ /* If range is exactly 256, one-octet case (10.5.7b) */
+
+ else if (range_value == 256) {
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ return encodeBits (pctxt, adjusted_value, 8);
+ }
+
+ /* If range > 256 and <= 64k (65536), two-octet case (10.5.7c) */
+
+ else if (range_value <= 65536) {
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ return encodeBits (pctxt, adjusted_value, 16);
+ }
+
+ /* If range > 64k, indefinite-length case (10.5.7d) */
+
+ else {
+ /* Encode length determinant as a constrained whole number. */
+ /* Constraint is 1 to max number of bytes needed to hold */
+ /* the target integer value.. */
+
+ if (adjusted_value < 256) nocts = 1;
+ else if (adjusted_value < 65536) nocts = 2;
+ else if (adjusted_value < 0x1000000) nocts = 3;
+ else nocts = 4;
+
+ stat = encodeBits (pctxt, nocts - 1, 2);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ return encodeNonNegBinInt (pctxt, adjusted_value);
+ }
+}
+
+int encodeConstrainedStringEx (OOCTXT* pctxt,
+ const char* string,
+ const char* charSet,
+ ASN1UINT abits, /* aligned char bits */
+ ASN1UINT ubits, /* unaligned char bits */
+ ASN1UINT canSetBits)
+{
+ ASN1UINT i, len = strlen(string);
+ int stat;
+ /* note: need to save size constraint for use in alignCharStr */
+ /* because it will be cleared in encodeLength from the context.. */
+ Asn1SizeCnst* psize = pctxt->pSizeConstraint;
+
+ /* Encode length */
+
+ stat = encodeLength (pctxt, len);
+ if (stat < 0) return LOG_ASN1ERR (pctxt, stat);
+
+ /* Byte align */
+
+ if (alignCharStr (pctxt, len, abits, psize)) {
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+ }
+
+ /* Encode data */
+
+ if (abits >= canSetBits && canSetBits > 4) {
+ for (i = 0; i < len; i++) {
+ if ((stat = encodeBits (pctxt, string[i], abits)) != ASN_OK)
+ return LOG_ASN1ERR (pctxt, stat);
+ }
+ }
+ else if (0 != charSet) {
+ ASN1UINT nchars = strlen(charSet), pos;
+ const char* ptr;
+ for (i = 0; i < len; i++) {
+ ptr = memchr (charSet, string[i], nchars);
+
+ if (0 == ptr)
+ return LOG_ASN1ERR (pctxt, ASN_E_CONSVIO);
+ else
+ pos = ptr - charSet;
+
+ if ((stat = encodeBits (pctxt, pos, abits)) != ASN_OK)
+ return LOG_ASN1ERR (pctxt, stat);
+ }
+ }
+ else return LOG_ASN1ERR (pctxt, ASN_E_INVPARAM);
+
+ return stat;
+}
+
+int encodeExpandBuffer (OOCTXT* pctxt, ASN1UINT nbytes)
+{
+ if (pctxt->buffer.dynamic)
+ {
+ /* If dynamic encoding is enabled, expand the current buffer to */
+ /* allow encoding to continue. */
+
+ pctxt->buffer.size += ASN1MAX (ASN_K_ENCBUFSIZ, nbytes);
+
+ pctxt->buffer.data = (ASN1OCTET*) memHeapRealloc
+ (&pctxt->pMsgMemHeap, pctxt->buffer.data, pctxt->buffer.size);
+
+ if (!pctxt->buffer.data) return (ASN_E_NOMEM);
+
+ return (ASN_OK);
+ }
+
+ return (ASN_E_BUFOVFLW);
+}
+
+int encodeGetMsgBitCnt (OOCTXT* pctxt)
+{
+ int numBitsInLastByte = 8 - pctxt->buffer.bitOffset;
+ return ((pctxt->buffer.byteIndex * 8) + numBitsInLastByte);
+}
+
+ASN1OCTET* encodeGetMsgPtr (OOCTXT* pctxt, int* pLength)
+{
+ if (pLength) *pLength = getPERMsgLen (pctxt);
+ return pctxt->buffer.data;
+}
+
+int encodeIdent (OOCTXT* pctxt, ASN1UINT ident)
+{
+ ASN1UINT mask;
+ int nshifts = 0, stat;
+
+ if (ident !=0) {
+ ASN1UINT lv;
+ nshifts = getIdentByteCount (ident);
+ while (nshifts > 0) {
+ mask = ((ASN1UINT)0x7f) << (7 * (nshifts - 1));
+ nshifts--;
+ lv = (ASN1UINT)((ident & mask) >> (nshifts * 7));
+ if (nshifts != 0) { lv |= 0x80; }
+ if ((stat = encodeBits (pctxt, lv, 8)) != ASN_OK)
+ return LOG_ASN1ERR (pctxt, stat);
+ }
+ }
+ else {
+ /* encode a single zero byte */
+ if ((stat = encodeBits (pctxt, 0, 8)) != ASN_OK)
+ return LOG_ASN1ERR (pctxt, stat);
+ }
+
+ return ASN_OK;
+}
+
+int encodeLength (OOCTXT* pctxt, ASN1UINT value)
+{
+ ASN1BOOL extendable;
+ Asn1SizeCnst* pSize =
+ checkSize (pctxt->pSizeConstraint, value, &extendable);
+ ASN1UINT lower = (pSize) ? pSize->lower : 0;
+ ASN1UINT upper = (pSize) ? pSize->upper : ASN1UINT_MAX;
+ int enclen, stat;
+
+ /* If size constraints exist and the given length did not fall */
+ /* within the range of any of them, signal constraint violation */
+ /* error.. */
+
+ if (pctxt->pSizeConstraint && !pSize)
+ return LOG_ASN1ERR (pctxt, ASN_E_CONSVIO);
+
+ /* Reset the size constraint in the context block structure */
+
+ pctxt->pSizeConstraint = 0;
+
+ /* If size constraint is present and extendable, encode extension */
+ /* bit.. */
+
+ if (extendable) {
+ stat = (pSize) ?
+ encodeBit (pctxt, pSize->extended) : encodeBit (pctxt, 1);
+
+ if (stat != ASN_OK) return (stat);
+ }
+
+ /* If upper limit is less than 64k, constrained case */
+
+ if (upper < 65536) {
+ stat = (lower == upper) ? ASN_OK :
+ encodeConsWholeNumber (pctxt, value - lower, upper - lower + 1);
+ enclen = (stat == ASN_OK) ? value : stat;
+ }
+ else {
+ /* unconstrained case or Constrained with upper bound >= 64K*/
+ enclen = encodeUnconsLength (pctxt, value);
+ }
+
+ return enclen;
+
+}
+
+int encodeObjectIdentifier (OOCTXT* pctxt, ASN1OBJID* pvalue)
+{
+ int len, stat;
+ ASN1UINT temp;
+ register int numids, i;
+
+ /* Calculate length in bytes and encode */
+
+ len = 1; /* 1st 2 arcs require 1 byte */
+ numids = pvalue->numids;
+ for (i = 2; i < numids; i++) {
+ len += getIdentByteCount (pvalue->subid[i]);
+ }
+
+ /* PER encode length */
+
+ if ((stat = encodeLength (pctxt, (ASN1UINT)len)) < 0) {
+ return LOG_ASN1ERR (pctxt, stat);
+ }
+
+ /* Validate given object ID by applying ASN.1 rules */
+
+ if (0 == pvalue) return LOG_ASN1ERR (pctxt, ASN_E_INVOBJID);
+ if (numids < 2) return LOG_ASN1ERR (pctxt, ASN_E_INVOBJID);
+ if (pvalue->subid[0] > 2) return LOG_ASN1ERR (pctxt, ASN_E_INVOBJID);
+ if (pvalue->subid[0] != 2 && pvalue->subid[1] > 39)
+ return LOG_ASN1ERR (pctxt, ASN_E_INVOBJID);
+
+ /* Passed checks, encode object identifier */
+
+ /* Munge first two sub ID's and encode */
+
+ temp = ((pvalue->subid[0] * 40) + pvalue->subid[1]);
+ if ((stat = encodeIdent (pctxt, temp)) != ASN_OK)
+ return LOG_ASN1ERR (pctxt, stat);
+
+ /* Encode the remainder of the OID value */
+
+ for (i = 2; i < numids; i++) {
+ if ((stat = encodeIdent (pctxt, pvalue->subid[i])) != ASN_OK)
+ return LOG_ASN1ERR (pctxt, stat);
+ }
+
+ return ASN_OK;
+}
+
+int encodebitsFromOctet (OOCTXT* pctxt, ASN1OCTET value, ASN1UINT nbits)
+{
+ int lshift = pctxt->buffer.bitOffset;
+ int rshift = 8 - pctxt->buffer.bitOffset;
+ int stat = ASN_OK;
+ ASN1OCTET mask;
+
+ if (nbits == 0) return ASN_OK;
+
+ /* Mask off unused bits from the end of the value */
+
+ if (nbits < 8) {
+ switch (nbits) {
+ case 1: mask = 0x80; break;
+ case 2: mask = 0xC0; break;
+ case 3: mask = 0xE0; break;
+ case 4: mask = 0xF0; break;
+ case 5: mask = 0xF8; break;
+ case 6: mask = 0xFC; break;
+ case 7: mask = 0xFE; break;
+ default:;
+ }
+ value &= mask;
+ }
+
+ /* If we are on a byte boundary, we can do a direct assignment */
+
+ if (pctxt->buffer.bitOffset == 8) {
+ pctxt->buffer.data[pctxt->buffer.byteIndex] = value;
+ if (nbits == 8) {
+ pctxt->buffer.byteIndex++;
+ pctxt->buffer.data[pctxt->buffer.byteIndex] = 0;
+ }
+ else
+ pctxt->buffer.bitOffset -= nbits;
+ }
+
+ /* Otherwise, need to set some bits in the first octet and */
+ /* possibly some bits in the following octet.. */
+
+ else {
+ pctxt->buffer.data[pctxt->buffer.byteIndex] |=
+ (ASN1OCTET)(value >> rshift);
+
+ pctxt->buffer.bitOffset -= nbits;
+
+ if (pctxt->buffer.bitOffset < 0) {
+ pctxt->buffer.byteIndex++;
+ pctxt->buffer.data[pctxt->buffer.byteIndex] =
+ (ASN1OCTET)(value << lshift);
+ pctxt->buffer.bitOffset += 8;
+ }
+ }
+
+ return stat;
+}
+
+int encodeOctets (OOCTXT* pctxt, const ASN1OCTET* pvalue, ASN1UINT nbits)
+{
+ int i = 0, stat;
+ int numFullOcts = nbits / 8;
+
+ if (nbits == 0) return 0;
+
+ /* Check buffer space and allocate more memory if necessary */
+
+ stat = encodeCheckBuffer (pctxt, numFullOcts + 1);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ if (numFullOcts > 0) {
+
+ /* If the current bit offset is 8 (i.e. we don't have a */
+ /* byte started), can copy the string directly to the */
+ /* encode buffer.. */
+
+ if (pctxt->buffer.bitOffset == 8) {
+ memcpy (&pctxt->buffer.data[pctxt->buffer.byteIndex], pvalue,
+ numFullOcts);
+ pctxt->buffer.byteIndex += numFullOcts;
+ pctxt->buffer.data[pctxt->buffer.byteIndex] = 0;
+ i = numFullOcts;
+ }
+
+ /* Else, copy bits */
+
+ else {
+ for (i = 0; i < numFullOcts; i++) {
+ stat = encodeBitsFromOctet (pctxt, pvalue[i], 8);
+ if (stat != ASN_OK) return stat;
+ }
+ }
+ }
+
+ /* Move remaining bits from the last octet to the output buffer */
+
+ if (nbits % 8 != 0) {
+ stat = encodeBitsFromOctet (pctxt, pvalue[i], nbits % 8);
+ }
+
+ return stat;
+}
+
+int encodeOctetString (OOCTXT* pctxt, ASN1UINT numocts, const ASN1OCTET* data)
+{
+ int enclen, octidx = 0, stat;
+ Asn1SizeCnst* pSizeList = pctxt->pSizeConstraint;
+
+ for (;;) {
+ if ((enclen = encodeLength (pctxt, numocts)) < 0) {
+ return LOG_ASN1ERR (pctxt, enclen);
+ }
+
+ if (enclen > 0) {
+ ASN1BOOL doAlign;
+
+ stat = bitAndOctetStringAlignmentTest
+ (pSizeList, numocts, FALSE, &doAlign);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ if (doAlign) {
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+ }
+
+ stat = encodeOctets (pctxt, &data[octidx], enclen * 8);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+ }
+
+ if (enclen < (int)numocts) {
+ numocts -= enclen;
+ octidx += enclen;
+ }
+ else break;
+ }
+
+ return ASN_OK;
+}
+
+int encodeOpenType (OOCTXT* pctxt, ASN1UINT numocts, const ASN1OCTET* data)
+{
+ int enclen, octidx = 0, stat;
+ ASN1OCTET zeroByte = 0x00;
+ ASN1OpenType openType;
+
+ /* If open type contains length zero, add a single zero byte (10.1) */
+
+ if (numocts == 0) {
+ openType.numocts = 1;
+ openType.data = &zeroByte;
+ }
+ else {
+ openType.numocts = numocts;
+ openType.data = data;
+ }
+
+ /* Encode the open type */
+
+ for (;;) {
+ if ((enclen = encodeLength (pctxt, openType.numocts)) < 0) {
+ return LOG_ASN1ERR (pctxt, enclen);
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ stat = encodeOctets (pctxt, &openType.data[octidx], enclen * 8);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ if (enclen < (int)openType.numocts) {
+ openType.numocts -= enclen;
+ octidx += enclen;
+ }
+ else break;
+ }
+
+ return ASN_OK;
+}
+
+int encodeOpenTypeExt (OOCTXT* pctxt, DList* pElemList)
+{
+ DListNode* pnode;
+ ASN1OpenType* pOpenType;
+ int stat;
+
+ if (0 != pElemList) {
+ pnode = pElemList->head;
+ while (0 != pnode) {
+ if (0 != pnode->data) {
+ pOpenType = (ASN1OpenType*)pnode->data;
+
+ if (pOpenType->numocts > 0) {
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ stat = encodeOpenType
+ (pctxt, pOpenType->numocts, pOpenType->data);
+
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+ }
+ }
+ pnode = pnode->next;
+ }
+ }
+
+ return ASN_OK;
+}
+
+int encodeOpenTypeExtBits (OOCTXT* pctxt, DList* pElemList)
+{
+ DListNode* pnode;
+ int stat;
+
+ if (0 != pElemList) {
+ pnode = pElemList->head;
+
+ while (0 != pnode) {
+ stat = encodeBit (pctxt, (ASN1BOOL)(0 != pnode->data));
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ pnode = pnode->next;
+ }
+ }
+
+ return ASN_OK;
+}
+
+int encodeSemiConsInteger (OOCTXT* pctxt, ASN1INT value, ASN1INT lower)
+{
+ int nbytes, stat;
+ int shift = ((sizeof(value) - 1) * 8) - 1;
+ ASN1UINT tempValue;
+
+ if (lower > ASN1INT_MIN)
+ value -= lower;
+
+ /* Calculate signed number value length */
+
+ for ( ; shift > 0; shift -= 8) {
+ tempValue = (value >> shift) & 0x1ff;
+ if (tempValue == 0 || tempValue == 0x1ff) continue;
+ else break;
+ }
+
+ nbytes = (shift + 9) / 8;
+
+ /* Encode length */
+
+ if ((stat = encodeLength (pctxt, nbytes)) < 0) {
+ return stat;
+ }
+
+ if ((stat = encodeByteAlign (pctxt)) != ASN_OK)
+ return stat;
+
+ /* Encode signed value */
+
+ stat = encode2sCompBinInt (pctxt, value);
+
+ return stat;
+}
+
+int encodeSemiConsUnsigned (OOCTXT* pctxt, ASN1UINT value, ASN1UINT lower)
+{
+ int nbytes, stat;
+ int shift = ((sizeof(value) - 1) * 8) - 1;
+ ASN1UINT mask = 1UL << ((sizeof(value) * 8) - 1);
+ ASN1UINT tempValue;
+
+ value -= lower;
+
+ /* Calculate unsigned number value length */
+
+ for ( ; shift > 0; shift -= 8) {
+ tempValue = (value >> shift) & 0x1ff;
+
+ if (tempValue == 0) continue;
+ else break;
+ }
+
+ nbytes = (shift + 9) / 8;
+
+ /* If MS bit in unsigned number is set, add an extra zero byte */
+
+ if ((value & mask) != 0) nbytes++;
+
+ /* Encode length */
+
+ if ((stat = encodeLength (pctxt, nbytes)) < 0) {
+ return stat;
+ }
+
+ if ((stat = encodeByteAlign (pctxt)) != ASN_OK)
+ return stat;
+
+ /* Encode additional zero byte if necessary */
+
+ if (nbytes > sizeof(value)) {
+ stat = encodebitsFromOctet (pctxt, 0, 8);
+ if (stat != ASN_OK) return (stat);
+ }
+
+ /* Encode unsigned value */
+
+ stat = encodeNonNegBinInt (pctxt, value);
+
+ return stat;
+}
+
+int encodeSmallNonNegWholeNumber (OOCTXT* pctxt, ASN1UINT value)
+{
+ int stat;
+
+ if (value < 64) {
+ stat = encodeBits (pctxt, value, 7);
+ }
+ else {
+ ASN1UINT len;
+
+ /* Encode a one-byte length determinant value */
+ if (value < 256) len = 1;
+ else if (value < 65536) len = 2;
+ else if (value < 0x1000000) len = 3;
+ else len = 4;
+
+ stat = encodeBits (pctxt, len, 8);
+
+ /* Byte-align and encode the value */
+ if (stat == ASN_OK) {
+ if ((stat = encodeByteAlign (pctxt)) == ASN_OK) {
+ stat = encodeBits (pctxt, value, len*8);
+ }
+ }
+ }
+
+ return stat;
+}
+
+int encodeVarWidthCharString (OOCTXT* pctxt, const char* value)
+{
+ int stat;
+ ASN1UINT len = strlen (value);
+ /* note: need to save size constraint for use in alignCharStr */
+ /* because it will be cleared in encodeLength from the context.. */
+ Asn1SizeCnst* psize = pctxt->pSizeConstraint;
+
+ /* Encode length */
+
+ stat = encodeLength (pctxt, len);
+ if (stat < 0) return LOG_ASN1ERR (pctxt, stat);
+
+ /* Byte align */
+
+ if (alignCharStr (pctxt, len, 8, psize)) {
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+ }
+
+ /* Encode data */
+
+ stat = encodeOctets (pctxt, (const ASN1OCTET*)value, len * 8);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ return ASN_OK;
+}
+
+static int encode16BitConstrainedString
+(OOCTXT* pctxt, Asn116BitCharString value, Asn116BitCharSet* pCharSet)
+{
+ ASN1UINT i, pos;
+ ASN1UINT nbits = pCharSet->alignedBits;
+ int stat;
+
+ /* Encode length */
+
+ stat = encodeLength (pctxt, value.nchars);
+ if (stat < 0) return LOG_ASN1ERR (pctxt, stat);
+
+ /* Byte align */
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ /* Encode data */
+
+ for (i = 0; i < value.nchars; i++) {
+ if (pCharSet->charSet.data == 0) {
+ stat = encodeBits
+ (pctxt, value.data[i] - pCharSet->firstChar, nbits);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+ }
+ else {
+ for (pos = 0; pos < pCharSet->charSet.nchars; pos++) {
+ if (value.data[i] == pCharSet->charSet.data[pos]) {
+ stat = encodeBits (pctxt, pos, nbits);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+ break;
+ }
+ }
+ }
+ }
+
+ return stat;
+}
+
+int encode2sCompBinInt (OOCTXT* pctxt, ASN1INT value)
+{
+ /* 10.4.6 A minimum octet 2's-complement-binary-integer encoding */
+ /* of the whole number has a field width that is a multiple of 8 */
+ /* bits and also satisifies the condition that the leading 9 bits */
+ /* field shall not be all zeros and shall not be all ones. */
+
+ /* first encode integer value into a local buffer */
+
+ ASN1OCTET lbuf[8], lb;
+ ASN1INT i = sizeof(lbuf), temp = value;
+
+ memset (lbuf, 0, sizeof(lbuf));
+ do {
+ lb = temp % 256;
+ temp /= 256;
+ if (temp < 0 && lb != 0) temp--; /* two's complement adjustment */
+ lbuf[--i] = lb;
+ } while (temp != 0 && temp != -1);
+
+ /* If the value is positive and bit 8 of the leading byte is set, */
+ /* copy a zero byte to the contents to signal a positive number.. */
+
+ if (value > 0 && (lb & 0x80) != 0) {
+ i--;
+ }
+
+ /* If the value is negative and bit 8 of the leading byte is clear, */
+ /* copy a -1 byte (0xFF) to the contents to signal a negative */
+ /* number.. */
+
+ else if (value < 0 && ((lb & 0x80) == 0)) {
+ lbuf[--i] = 0xff;
+ }
+
+ /* Add the data to the encode buffer */
+
+ return encodeOctets (pctxt, &lbuf[i], (sizeof(lbuf) - i) * 8);
+}
+
+static int encodeNonNegBinInt (OOCTXT* pctxt, ASN1UINT value)
+{
+ /* 10.3.6 A minimum octet non-negative binary integer encoding of */
+ /* the whole number (which does not predetermine the number of */
+ /* octets to be used for the encoding) has a field which is a */
+ /* multiple of 8 bits and also satisifies the condition that the */
+ /* leading eight bits of the field shall not be zero unless the */
+ /* field is precisely 8 bits long. */
+
+ ASN1UINT bitcnt = (value == 0) ? 1 : getUIntBitCount (value);
+
+ /* round-up to nearest 8-bit boundary */
+
+ bitcnt = (bitcnt + 7) & (~7);
+
+ /* encode bits */
+
+ return encodeBits (pctxt, value, bitcnt);
+}
+
+static int encodeUnconsLength (OOCTXT* pctxt, ASN1UINT value)
+{
+ int enclen, stat;
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return LOG_ASN1ERR (pctxt, stat);
+
+ /* 1 octet case */
+ if (value < 128) {
+ stat = encodeBits (pctxt, value, 8);
+ enclen = (stat == ASN_OK) ? value : stat;
+ }
+ /* 2 octet case */
+ else if (value < 16384) {
+ if ((stat = encodeBit (pctxt, 1)) == ASN_OK)
+ stat = encodeBits (pctxt, value, 15);
+ enclen = (stat == ASN_OK) ? value : stat;
+ }
+ /* fragmentation case */
+ else {
+ int multiplier = ASN1MIN (value/16384, 4);
+ encodeBit (pctxt, 1); /* set bit 8 of first octet */
+ encodeBit (pctxt, 1); /* set bit 7 of first octet */
+ stat = encodeBits (pctxt, multiplier, 6);
+ enclen = (stat == ASN_OK) ? 16384 * multiplier : stat;
+ }
+
+ return enclen;
+}
+
+static int getIdentByteCount (ASN1UINT ident)
+{
+ if (ident < (1u << 7)) { /* 7 */
+ return 1;
+ }
+ else if (ident < (1u << 14)) { /* 14 */
+ return 2;
+ }
+ else if (ident < (1u << 21)) { /* 21 */
+ return 3;
+ }
+ else if (ident < (1u << 28)) { /* 28 */
+ return 4;
+ }
+ return 5;
+}
diff --git a/addons/ooh323c/src/errmgmt.c b/addons/ooh323c/src/errmgmt.c
new file mode 100644
index 000000000..d41bad102
--- /dev/null
+++ b/addons/ooh323c/src/errmgmt.c
@@ -0,0 +1,261 @@
+/*
+ * Copyright (C) 1997-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+
+/* Error management functions */
+
+#include <stdlib.h>
+#include "ooasn1.h"
+
+/* Error status text */
+static const char* g_status_text[] = {
+ "Encode buffer overflow",
+ "Unexpected end of buffer on decode",
+ "Unexpected tag encountered: expected = %s, parsed = %s",
+ "Invalid object identifier",
+ "Invalid field length detected",
+ "Enumerated value %s not in defined set",
+ "Duplicate element in SET",
+ "Missing required element in SET",
+ "Element with tag %s not part of SET",
+ "Max elements defined for SEQUENCE field exceeded",
+ "Element with tag %s is an invalid option in choice",
+ "No dynamic memory available",
+ "Invalid string type",
+ "Invalid hex string",
+ "Invalid binary string",
+ "Invalid real value",
+ "Max items in sized BIT or OCTET STRING field exceeded",
+ "Invalid value specification",
+ "No definition found for referenced defined value",
+ "No definition found for referenced defined type",
+ "Invalid tag value",
+ "Nesting level too deep",
+ "Value constraint violation: field %s, value %s",
+ "Value range error: lower bound is greater than upper",
+ "Unexpected end of file detected",
+ "Invalid UTF-8 character at index %d",
+ "List error: concurrent modification attempt while iterating",
+ "List error: illegal state for attempted operation",
+ "Array index out of bounds",
+ "Invalid parameter passed to function or method",
+ "Invalid time string format",
+ "Context is not initialized",
+ "ASN.1 value will not fit in target variable",
+ "Character is not within the defined character set",
+ "Invalid XML state for attempted operation",
+ "Error condition returned from XML parser:\n%s",
+ "SEQUENCE elements not in correct order",
+ "Invalid index for table constraint identifier",
+ "Invalid value for relational table constraint fixed type field",
+ "File not found",
+ "File read error",
+ "File write error",
+ "Invalid Base64 string",
+ "Socket error",
+ "XML interface library not found",
+ "Invalid XML interface library"
+} ;
+
+#define ASN1_K_MAX_STAT (sizeof(g_status_text)/sizeof(char *))
+
+/* Add an integer parameter to an error message */
+
+int errAddIntParm (ASN1ErrInfo* pErrInfo, int errParm)
+{
+ char lbuf[16];
+ sprintf (lbuf, "%d", errParm);
+ return errAddStrParm (pErrInfo, lbuf);
+}
+
+/* Add a character string parameter to an error message */
+
+int errAddStrParm (ASN1ErrInfo* pErrInfo, const char* errprm_p)
+{
+#if defined(_NO_THREADS) || !defined(_NO_MALLOC)
+ if (pErrInfo->parmcnt < ASN_K_MAXERRP) {
+ char* tmpstr = (char*) ASN1CRTMALLOC0 (strlen(errprm_p)+1);
+ strcpy (tmpstr, errprm_p);
+ pErrInfo->parms[pErrInfo->parmcnt] = tmpstr;
+ pErrInfo->parmcnt++;
+ return TRUE;
+ }
+ else
+#endif
+ return FALSE;
+}
+
+/* Add an unsigned integer parameter to an error message */
+
+int errAddUIntParm (ASN1ErrInfo* pErrInfo, unsigned int errParm)
+{
+ char lbuf[16];
+ sprintf (lbuf, "%u", errParm);
+ return errAddStrParm (pErrInfo, lbuf);
+}
+
+/* Free error parameter memory */
+
+void errFreeParms (ASN1ErrInfo* pErrInfo)
+{
+#if defined(_NO_THREADS) || !defined(_NO_MALLOC)
+ int i;
+
+ for (i = 0; i < pErrInfo->parmcnt; i++)
+ ASN1CRTFREE0 ((char*)pErrInfo->parms[i]);
+#endif
+
+ pErrInfo->parmcnt = 0;
+ pErrInfo->status = 0;
+}
+
+/* Reset error */
+
+int errReset (ASN1ErrInfo* pErrInfo)
+{
+ errFreeParms (pErrInfo);
+ pErrInfo->stkx = 0;
+ return ASN_OK;
+}
+
+/* Format error message */
+
+char* errFmtMsg (ASN1ErrInfo* pErrInfo, char* bufp)
+{
+ const char* tp;
+ int i, j, pcnt;
+
+ if (pErrInfo->status < 0)
+ {
+ i = abs (pErrInfo->status + 1);
+
+ if (i >= 0 && i < ASN1_K_MAX_STAT)
+ {
+ /* Substitute error parameters into error message */
+
+ j = pcnt = 0;
+ tp = g_status_text[i];
+
+ while (*tp)
+ {
+ if (*tp == '%' && *(tp+1) == 's')
+ {
+ /* Plug in error parameter */
+
+ if (pcnt < pErrInfo->parmcnt && pErrInfo->parms[pcnt])
+ {
+ strcpy (&bufp[j], pErrInfo->parms[pcnt]);
+ j += strlen (pErrInfo->parms[pcnt++]);
+ }
+ else
+ bufp[j++] = '?';
+
+ tp += 2;
+ }
+ else
+ bufp[j++] = *tp++;
+ }
+
+ bufp[j] = '\0'; /* null terminate string */
+ }
+ else
+ strcpy (bufp, "unrecognized completion status");
+ }
+ else strcpy (bufp, "normal completion status");
+
+ return (bufp);
+}
+
+/* Get error text in a dynamic memory buffer. This allocates memory */
+/* using the 'memAlloc' function. This memory is automatically freed */
+/* at the time the 'memFree' function is called. */
+
+char* errGetText (OOCTXT* pctxt)
+{
+ char lbuf[500];
+ char* pBuf = (char*) ASN1MALLOC (pctxt,
+ (sizeof(lbuf) + 100 * (2 + pctxt->errInfo.stkx)) * sizeof(char));
+
+ sprintf (pBuf, "ASN.1 ERROR: Status %d\n", pctxt->errInfo.status);
+ sprintf (lbuf, "%s\nStack trace:", errFmtMsg (&pctxt->errInfo, lbuf));
+ strcat(pBuf, lbuf);
+
+ while (pctxt->errInfo.stkx > 0) {
+ pctxt->errInfo.stkx--;
+ sprintf (lbuf, " Module: %s, Line %d\n",
+ pctxt->errInfo.stack[pctxt->errInfo.stkx].module,
+ pctxt->errInfo.stack[pctxt->errInfo.stkx].lineno);
+ strcat(pBuf, lbuf);
+ }
+
+ errFreeParms (&pctxt->errInfo);
+
+ return pBuf;
+}
+
+/* Print error information to the standard output */
+
+void errPrint (ASN1ErrInfo* pErrInfo)
+{
+ char lbuf[200];
+ printf ("ASN.1 ERROR: Status %d\n", pErrInfo->status);
+ printf ("%s\n", errFmtMsg (pErrInfo, lbuf));
+ printf ("Stack trace:");
+ while (pErrInfo->stkx > 0) {
+ pErrInfo->stkx--;
+ printf (" Module: %s, Line %d\n",
+ pErrInfo->stack[pErrInfo->stkx].module,
+ pErrInfo->stack[pErrInfo->stkx].lineno);
+ }
+ errFreeParms (pErrInfo);
+}
+
+/* Copy error data from one error structure to another */
+
+int errCopyData (ASN1ErrInfo* pSrcErrInfo, ASN1ErrInfo* pDestErrInfo)
+{
+ int i;
+ pDestErrInfo->status = pSrcErrInfo->status;
+
+ /* copy error parameters */
+
+ for (i = 0; i < pSrcErrInfo->parmcnt; i++) {
+ errAddStrParm (pDestErrInfo, pSrcErrInfo->parms[i]);
+ }
+
+ /* copy stack info */
+
+ for (i = 0; i < pSrcErrInfo->stkx; i++) {
+ if (pDestErrInfo->stkx < ASN_K_MAXERRSTK) {
+ pDestErrInfo->stack[pDestErrInfo->stkx].module =
+ pSrcErrInfo->stack[i].module;
+ pDestErrInfo->stack[pDestErrInfo->stkx++].lineno =
+ pSrcErrInfo->stack[i].lineno;
+ }
+ }
+
+ return (pSrcErrInfo->status);
+}
+
+
+int errSetData (ASN1ErrInfo* pErrInfo, int status,
+ const char* module, int lno)
+{
+ if (pErrInfo->status == 0) {
+ pErrInfo->status = status;
+ }
+ ooLogAsn1Error(status, module, lno);
+ return status;
+}
diff --git a/addons/ooh323c/src/eventHandler.c b/addons/ooh323c/src/eventHandler.c
new file mode 100644
index 000000000..7b15759a6
--- /dev/null
+++ b/addons/ooh323c/src/eventHandler.c
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2004-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+
+#include "eventHandler.h"
+
+void setEventHandler (OOCTXT* pctxt, EventHandler* pHandler)
+{
+ pctxt->pEventHandler = pHandler;
+}
+
+void removeEventHandler (OOCTXT* pctxt)
+{
+ pctxt->pEventHandler = 0;
+}
+
+void invokeStartElement (OOCTXT* pctxt, const char* name, int index)
+{
+ if (0 != pctxt->pEventHandler) {
+ pctxt->pEventHandler->startElement (name, index);
+ }
+}
+
+void invokeEndElement (OOCTXT* pctxt, const char* name, int index)
+{
+ if (0 != pctxt->pEventHandler) {
+ pctxt->pEventHandler->endElement (name, index);
+ }
+}
+
+void invokeBoolValue (OOCTXT* pctxt, ASN1BOOL value)
+{
+ if (0 != pctxt->pEventHandler) {
+ pctxt->pEventHandler->boolValue (value);
+ }
+}
+
+void invokeIntValue (OOCTXT* pctxt, ASN1INT value)
+{
+ if (0 != pctxt->pEventHandler) {
+ pctxt->pEventHandler->intValue (value);
+ }
+}
+
+void invokeUIntValue (OOCTXT* pctxt, ASN1UINT value)
+{
+ if (0 != pctxt->pEventHandler) {
+ pctxt->pEventHandler->uIntValue (value);
+ }
+}
+
+void invokeBitStrValue (OOCTXT* pctxt, ASN1UINT numbits,
+ const ASN1OCTET* data)
+{
+ if (0 != pctxt->pEventHandler) {
+ pctxt->pEventHandler->bitStrValue (numbits, data);
+ }
+}
+
+void invokeOctStrValue (OOCTXT* pctxt, ASN1UINT numocts,
+ const ASN1OCTET* data)
+{
+ if (0 != pctxt->pEventHandler) {
+ pctxt->pEventHandler->octStrValue (numocts, data);
+ }
+}
+
+void invokeCharStrValue (OOCTXT* pctxt, const char* value)
+{
+ if (0 != pctxt->pEventHandler) {
+ pctxt->pEventHandler->charStrValue (value);
+ }
+}
+
+void invokeCharStr16BitValue (OOCTXT* pctxt, ASN1UINT nchars,
+ ASN116BITCHAR* data)
+{
+ if (0 != pctxt->pEventHandler) {
+ pctxt->pEventHandler->charStr16BitValue (nchars, data);
+ }
+}
+
+void invokeNullValue (OOCTXT* pctxt)
+{
+ if (0 != pctxt->pEventHandler) {
+ pctxt->pEventHandler->nullValue ();
+ }
+}
+
+void invokeOidValue (OOCTXT* pctxt, ASN1UINT numSubIds, ASN1UINT* pSubIds)
+{
+ if (0 != pctxt->pEventHandler) {
+ pctxt->pEventHandler->oidValue (numSubIds, pSubIds);
+ }
+}
+
+void invokeEnumValue (OOCTXT* pctxt, ASN1UINT value)
+{
+ if (0 != pctxt->pEventHandler) {
+ pctxt->pEventHandler->enumValue (value);
+ }
+}
+
+void invokeOpenTypeValue (OOCTXT* pctxt, ASN1UINT numocts,
+ const ASN1OCTET* data)
+{
+ if (0 != pctxt->pEventHandler) {
+ pctxt->pEventHandler->openTypeValue (numocts, data);
+ }
+}
diff --git a/addons/ooh323c/src/eventHandler.h b/addons/ooh323c/src/eventHandler.h
new file mode 100644
index 000000000..320a55b99
--- /dev/null
+++ b/addons/ooh323c/src/eventHandler.h
@@ -0,0 +1,284 @@
+/*
+ * Copyright (C) 2004-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+/**
+ * @file eventHandler.h
+ * C event handler structure. This structure holds event handler function
+ * callbacks for use by the generated code.
+ */
+/**
+ * @defgroup EventHandler event handler
+ * Event handler structures and callback function definitions.
+ * @{
+ */
+#ifndef _EVENTHANDLER_H_
+#define _EVENTHANDLER_H_
+
+#include <stdio.h>
+#include "ooasn1.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#ifndef EXTERN
+#if define (MAKE_DLL)
+#define EXTERN __declspec(dllexport)
+#else
+#define EXTERN
+#endif /* MAKE_DLL */
+#endif /* EXTERN */
+
+
+/**
+ * This is a function pointer for a callback function which is invoked
+ * from within a decode function when an element of a SEQUENCE, SET,
+ * SEQUENCE OF, SET OF, or CHOICE construct is parsed.
+ *
+ * @param name For SEQUENCE, SET, or CHOICE, this is the name of the
+ * element as defined in the ASN.1 defination. For
+ * SEQUENCE OF or SET OF, this is set to the name
+ * "element".
+ * @param index For SEQUENCE, SET, or CHOICE, this is not used and is
+ * set to the value
+ * -1. For SEQUENCE OF or SET OF, this contains the
+ * zero-based index of the element in the conceptual
+ * array associated with the construct.
+ * @return - none
+ */
+typedef void (*StartElement) (const char* name, int index) ;
+
+
+/**
+ * This is a function pointer for a callback function which is invoked from
+ * within a decode function when parsing is complete on an element of a
+ * SEQUENCE, SET, SEQUENCE OF, SET OF, or CHOICE construct.
+ *
+ * @param name For SEQUENCE, SET, or CHOICE, this is the name of the
+ * element as defined in the ASN.1 defination. For
+ * SEQUENCE OF or SET OF, this is set to the name
+ * "element".
+ * @param index For SEQUENCE, SET, or CHOICE, this is not used and is
+ * set to the value
+ * -1. For SEQUENCE OF or SET OF, this contains the
+ * zero-based index of the element in the conceptual
+ * array associated with the construct.
+ * @return - none
+ */
+typedef void (*EndElement) (const char* name, int index) ;
+
+
+/**
+ * This is a function pointer for a callback function which is invoked from
+ * within a decode function when a value of the BOOLEAN ASN.1 type is parsed.
+ *
+ * @param value Parsed value.
+ * @return - none
+ */
+typedef void (*BoolValue) (ASN1BOOL value);
+
+/**
+ * This is a function pointer for a callback function which is invoked from
+ * within a decode function when a value of the INTERGER ASN.1 type is parsed.
+ *
+ * @param value Parsed value.
+ * @return - none
+ */
+typedef void (*IntValue) (ASN1INT value);
+
+/**
+ * This is a function pointer for a callback function which is invoked
+ * from within a decode function when a value of the INTEGER ASN.1 type
+ * is parsed. In this case, constraints on the integer value forced the
+ * use of unsigned integer C type to represent the value.
+ *
+ * @param value Parsed value.
+ * @return - none
+ */
+typedef void (*UIntValue) (ASN1UINT value);
+
+/**
+ * This is a function pointer for a callback function which is invoked from
+ * within a decode function when a value of the BIT STRING ASN.1 type is
+ * parsed.
+ *
+ * @param numbits - Number of bits in the parsed value.
+ * @param data - Pointer to a byte array that contains the bit
+ * string data.
+ * @return - none
+ */
+typedef void (*BitStrValue) (ASN1UINT numbits, const ASN1OCTET* data);
+
+/**
+ * This is a function pointer for a callback function which is invoked from
+ * within a decode function when a value of one of the OCTET STRING ASN.1 type
+ * is parsed.
+ *
+ * @param numocts Number of octets in the parsed value.
+ * @param data Pointer to byte array containing the octet string
+ * data.
+ * @return - none
+ */
+typedef void (*OctStrValue) (ASN1UINT numocts, const ASN1OCTET* data) ;
+
+/**
+ * This is a function pointer for a callback function which is invoked from
+ * within a decode function when a value of one of the 8-bit ASN.1 character
+ * string types is parsed.
+ *
+ * @param value Null terminated character string value.
+ * @return - none
+ */
+typedef void (*CharStrValue) (const char* value) ;
+
+/**
+ * This is a function pointer for a callback function which is invoked from
+ * within a decode function when a value of one of the 16-bit ASN.1 character
+ * string types is parsed.
+ *
+ * This is used for the ASN.1 BmpString type.
+ *
+ * @param nchars Number of characters in the parsed value.
+ * @param data Pointer to an array containing 16-bit values.
+ * These are represented using unsigned short integer
+ * values.
+ * @return - none
+ */
+typedef void (*CharStrValue16Bit) (ASN1UINT nchars, ASN116BITCHAR* data) ;
+
+/**
+ * This is a function pointer for a callback function which is invoked from
+ * within a decode function when a value of the NULL ASN.1 type is parsed.
+ *
+ * @param - none
+ * @return - none
+ */
+typedef void (*NullValue) () ;
+
+/**
+ * This is a function pointer for a callback function which is invoked from
+ * within a decode function whn a value the OBJECT IDENTIFIER ASN.1 type is
+ * parsed.
+ *
+ * @param numSubIds Number of subidentifiers in the object identifier.
+ * @param pSubIds Pointer to array containing the subidentifier values.
+ * @return -none
+ */
+typedef void (*OidValue) (ASN1UINT numSubIds, ASN1UINT* pSubIds) ;
+
+/**
+ * This is a function pointer for a callback function which is invoked from
+ * within a decode function when a value of the ENUMERATED ASN.1 type is
+ * parsed.
+ *
+ * @param value - Parsed enumerated value
+ * @return - none
+ */
+typedef void (*EnumValue) (ASN1UINT value) ;
+
+/**
+ * This is a function pointer for a callback function which is invoked from
+ * within a decode function when an ASN.1 open type is parsed.
+ *
+ * @param numocts Number of octets in the parsed value.
+ * @param data Pointer to byet array contain in tencoded ASN.1
+ * value.
+ * @return - none
+ */
+typedef void (*OpenTypeValue) (ASN1UINT numocts, const ASN1OCTET* data) ;
+
+
+/**
+ * This is a basic C based event handler structure, which can be used
+ * to define user-defined event handlers.
+ */
+typedef struct EventHandler {
+ StartElement startElement;
+ EndElement endElement;
+ BoolValue boolValue;
+ IntValue intValue;
+ UIntValue uIntValue;
+ BitStrValue bitStrValue;
+ OctStrValue octStrValue;
+ CharStrValue charStrValue;
+ CharStrValue16Bit charStr16BitValue;
+ NullValue nullValue;
+ OidValue oidValue;
+ EnumValue enumValue;
+ OpenTypeValue openTypeValue;
+} EventHandler;
+
+
+/**
+ * This function sets the event handler object within the context. It
+ * will overwrite the definition of any handler that was set previously.
+ *
+ * @param pctxt Context to which event handler has to be added.
+ * @param pHandler Pointer to the event handler structure.
+ * @return none
+ */
+EXTERN void setEventHandler (OOCTXT* pctxt, EventHandler* pHandler);
+
+/**
+ * This function is called to remove the event handler current defined
+ * in the context. This is done by setting the event handler object
+ * pointer to NULL.
+ *
+ * @param pctxt Context from which event handler has to be removed.
+ * @return none
+ */
+EXTERN void removeEventHandler (OOCTXT* pctxt);
+
+/**
+ * The following functions are invoked from within the generated
+ * code to call the various user-defined event handler methods ..
+ */
+EXTERN void invokeStartElement (OOCTXT* pctxt, const char* name, int index);
+EXTERN void invokeEndElement (OOCTXT* pctxt, const char* name, int index);
+EXTERN void invokeBoolValue (OOCTXT* pctxt, ASN1BOOL value);
+EXTERN void invokeIntValue (OOCTXT* pctxt, ASN1INT value);
+EXTERN void invokeUIntValue (OOCTXT* pctxt, ASN1UINT value);
+
+EXTERN void invokeBitStrValue
+(OOCTXT* pctxt, ASN1UINT numbits, const ASN1OCTET* data);
+
+EXTERN void invokeOctStrValue
+(OOCTXT* pctxt, ASN1UINT numocts, const ASN1OCTET* data);
+
+EXTERN void invokeCharStrValue (OOCTXT* pctxt, const char* value);
+
+EXTERN void invokeCharStr16BitValue
+(OOCTXT* pctxt, ASN1UINT nchars, ASN116BITCHAR* data);
+
+EXTERN void invokeNullValue (OOCTXT* pctxt);
+
+EXTERN void invokeOidValue
+(OOCTXT* pctxt, ASN1UINT numSubIds, ASN1UINT* pSubIds);
+
+EXTERN void invokeEnumValue (OOCTXT* pctxt, ASN1UINT value);
+
+EXTERN void invokeOpenTypeValue
+(OOCTXT* pctxt, ASN1UINT numocts, const ASN1OCTET* data);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/addons/ooh323c/src/h323/H235-SECURITY-MESSAGES.h b/addons/ooh323c/src/h323/H235-SECURITY-MESSAGES.h
new file mode 100644
index 000000000..2f401b39a
--- /dev/null
+++ b/addons/ooh323c/src/h323/H235-SECURITY-MESSAGES.h
@@ -0,0 +1,690 @@
+/*
+ * Copyright (C) 2004-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+/**
+ * This file was generated by the Objective Systems ASN1C Compiler
+ * (http://www.obj-sys.com). Version: 5.72, Date: 22-Mar-2005.
+ */
+#ifndef H235_SECURITY_MESSAGES_H
+#define H235_SECURITY_MESSAGES_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "ooasn1.h"
+
+/**************************************************************/
+/* */
+/* ChallengeString */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ChallengeString {
+ ASN1UINT numocts;
+ ASN1OCTET data[128];
+} H235ChallengeString;
+
+EXTERN int asn1PE_H235ChallengeString (OOCTXT* pctxt, H235ChallengeString* pvalue);
+
+EXTERN int asn1PD_H235ChallengeString (OOCTXT* pctxt, H235ChallengeString* pvalue);
+
+/**************************************************************/
+/* */
+/* TimeStamp */
+/* */
+/**************************************************************/
+
+typedef ASN1UINT H235TimeStamp;
+
+EXTERN int asn1PE_H235TimeStamp (OOCTXT* pctxt, H235TimeStamp value);
+
+EXTERN int asn1PD_H235TimeStamp (OOCTXT* pctxt, H235TimeStamp* pvalue);
+
+/**************************************************************/
+/* */
+/* RandomVal */
+/* */
+/**************************************************************/
+
+typedef ASN1INT H235RandomVal;
+
+EXTERN int asn1PE_H235RandomVal (OOCTXT* pctxt, H235RandomVal value);
+
+EXTERN int asn1PD_H235RandomVal (OOCTXT* pctxt, H235RandomVal* pvalue);
+
+/**************************************************************/
+/* */
+/* Password */
+/* */
+/**************************************************************/
+
+typedef ASN1BMPString H235Password;
+
+EXTERN int asn1PE_H235Password (OOCTXT* pctxt, H235Password value);
+
+EXTERN int asn1PD_H235Password (OOCTXT* pctxt, H235Password* pvalue);
+
+/**************************************************************/
+/* */
+/* EncodedPwdCertToken */
+/* */
+/**************************************************************/
+
+typedef ASN1OpenType H235EncodedPwdCertToken;
+
+EXTERN int asn1PE_H235EncodedPwdCertToken (OOCTXT* pctxt, H235EncodedPwdCertToken value);
+
+EXTERN int asn1PD_H235EncodedPwdCertToken (OOCTXT* pctxt, H235EncodedPwdCertToken* pvalue);
+
+/**************************************************************/
+/* */
+/* NonStandardParameter */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235NonStandardParameter {
+ ASN1OBJID nonStandardIdentifier;
+ ASN1DynOctStr data;
+} H235NonStandardParameter;
+
+EXTERN int asn1PE_H235NonStandardParameter (OOCTXT* pctxt, H235NonStandardParameter* pvalue);
+
+EXTERN int asn1PD_H235NonStandardParameter (OOCTXT* pctxt, H235NonStandardParameter* pvalue);
+
+/**************************************************************/
+/* */
+/* AuthenticationBES */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H235AuthenticationBES_default_ 1
+#define T_H235AuthenticationBES_radius 2
+#define T_H235AuthenticationBES_extElem1 3
+
+typedef struct EXTERN H235AuthenticationBES {
+ int t;
+} H235AuthenticationBES;
+
+EXTERN int asn1PE_H235AuthenticationBES (OOCTXT* pctxt, H235AuthenticationBES* pvalue);
+
+EXTERN int asn1PD_H235AuthenticationBES (OOCTXT* pctxt, H235AuthenticationBES* pvalue);
+
+/**************************************************************/
+/* */
+/* AuthenticationMechanism */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H235AuthenticationMechanism_dhExch 1
+#define T_H235AuthenticationMechanism_pwdSymEnc 2
+#define T_H235AuthenticationMechanism_pwdHash 3
+#define T_H235AuthenticationMechanism_certSign 4
+#define T_H235AuthenticationMechanism_ipsec 5
+#define T_H235AuthenticationMechanism_tls 6
+#define T_H235AuthenticationMechanism_nonStandard 7
+#define T_H235AuthenticationMechanism_authenticationBES 8
+#define T_H235AuthenticationMechanism_extElem1 9
+
+typedef struct EXTERN H235AuthenticationMechanism {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ /* t = 7 */
+ H235NonStandardParameter *nonStandard;
+ /* t = 8 */
+ H235AuthenticationBES *authenticationBES;
+ /* t = 9 */
+ } u;
+} H235AuthenticationMechanism;
+
+EXTERN int asn1PE_H235AuthenticationMechanism (OOCTXT* pctxt, H235AuthenticationMechanism* pvalue);
+
+EXTERN int asn1PD_H235AuthenticationMechanism (OOCTXT* pctxt, H235AuthenticationMechanism* pvalue);
+
+/**************************************************************/
+/* */
+/* DHset_halfkey */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235DHset_halfkey {
+ ASN1UINT numbits;
+ ASN1OCTET data[256];
+} H235DHset_halfkey;
+
+EXTERN int asn1PE_H235DHset_halfkey (OOCTXT* pctxt, H235DHset_halfkey* pvalue);
+
+EXTERN int asn1PD_H235DHset_halfkey (OOCTXT* pctxt, H235DHset_halfkey* pvalue);
+
+/**************************************************************/
+/* */
+/* DHset_modSize */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235DHset_modSize {
+ ASN1UINT numbits;
+ ASN1OCTET data[256];
+} H235DHset_modSize;
+
+EXTERN int asn1PE_H235DHset_modSize (OOCTXT* pctxt, H235DHset_modSize* pvalue);
+
+EXTERN int asn1PD_H235DHset_modSize (OOCTXT* pctxt, H235DHset_modSize* pvalue);
+
+/**************************************************************/
+/* */
+/* DHset_generator */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235DHset_generator {
+ ASN1UINT numbits;
+ ASN1OCTET data[256];
+} H235DHset_generator;
+
+EXTERN int asn1PE_H235DHset_generator (OOCTXT* pctxt, H235DHset_generator* pvalue);
+
+EXTERN int asn1PD_H235DHset_generator (OOCTXT* pctxt, H235DHset_generator* pvalue);
+
+/**************************************************************/
+/* */
+/* DHset */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235DHset {
+ H235DHset_halfkey halfkey;
+ H235DHset_modSize modSize;
+ H235DHset_generator generator;
+} H235DHset;
+
+EXTERN int asn1PE_H235DHset (OOCTXT* pctxt, H235DHset* pvalue);
+
+EXTERN int asn1PD_H235DHset (OOCTXT* pctxt, H235DHset* pvalue);
+
+/**************************************************************/
+/* */
+/* TypedCertificate */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235TypedCertificate {
+ ASN1OBJID type;
+ ASN1DynOctStr certificate;
+} H235TypedCertificate;
+
+EXTERN int asn1PE_H235TypedCertificate (OOCTXT* pctxt, H235TypedCertificate* pvalue);
+
+EXTERN int asn1PD_H235TypedCertificate (OOCTXT* pctxt, H235TypedCertificate* pvalue);
+
+/**************************************************************/
+/* */
+/* Identifier */
+/* */
+/**************************************************************/
+
+typedef ASN1BMPString H235Identifier;
+
+EXTERN int asn1PE_H235Identifier (OOCTXT* pctxt, H235Identifier value);
+
+EXTERN int asn1PD_H235Identifier (OOCTXT* pctxt, H235Identifier* pvalue);
+
+/**************************************************************/
+/* */
+/* ECpoint_x */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ECpoint_x {
+ ASN1UINT numbits;
+ ASN1OCTET data[64];
+} H235ECpoint_x;
+
+EXTERN int asn1PE_H235ECpoint_x (OOCTXT* pctxt, H235ECpoint_x* pvalue);
+
+EXTERN int asn1PD_H235ECpoint_x (OOCTXT* pctxt, H235ECpoint_x* pvalue);
+
+/**************************************************************/
+/* */
+/* ECpoint_y */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ECpoint_y {
+ ASN1UINT numbits;
+ ASN1OCTET data[64];
+} H235ECpoint_y;
+
+EXTERN int asn1PE_H235ECpoint_y (OOCTXT* pctxt, H235ECpoint_y* pvalue);
+
+EXTERN int asn1PD_H235ECpoint_y (OOCTXT* pctxt, H235ECpoint_y* pvalue);
+
+/**************************************************************/
+/* */
+/* ECpoint */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ECpoint {
+ struct {
+ unsigned xPresent : 1;
+ unsigned yPresent : 1;
+ } m;
+ H235ECpoint_x x;
+ H235ECpoint_y y;
+} H235ECpoint;
+
+EXTERN int asn1PE_H235ECpoint (OOCTXT* pctxt, H235ECpoint* pvalue);
+
+EXTERN int asn1PD_H235ECpoint (OOCTXT* pctxt, H235ECpoint* pvalue);
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp_modulus */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ECKASDH_eckasdhp_modulus {
+ ASN1UINT numbits;
+ ASN1OCTET data[64];
+} H235ECKASDH_eckasdhp_modulus;
+
+EXTERN int asn1PE_H235ECKASDH_eckasdhp_modulus (OOCTXT* pctxt, H235ECKASDH_eckasdhp_modulus* pvalue);
+
+EXTERN int asn1PD_H235ECKASDH_eckasdhp_modulus (OOCTXT* pctxt, H235ECKASDH_eckasdhp_modulus* pvalue);
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp_weierstrassA */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ECKASDH_eckasdhp_weierstrassA {
+ ASN1UINT numbits;
+ ASN1OCTET data[64];
+} H235ECKASDH_eckasdhp_weierstrassA;
+
+EXTERN int asn1PE_H235ECKASDH_eckasdhp_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassA* pvalue);
+
+EXTERN int asn1PD_H235ECKASDH_eckasdhp_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassA* pvalue);
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp_weierstrassB */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ECKASDH_eckasdhp_weierstrassB {
+ ASN1UINT numbits;
+ ASN1OCTET data[64];
+} H235ECKASDH_eckasdhp_weierstrassB;
+
+EXTERN int asn1PE_H235ECKASDH_eckasdhp_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassB* pvalue);
+
+EXTERN int asn1PD_H235ECKASDH_eckasdhp_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassB* pvalue);
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ECKASDH_eckasdhp {
+ H235ECpoint public_key;
+ H235ECKASDH_eckasdhp_modulus modulus;
+ H235ECpoint base;
+ H235ECKASDH_eckasdhp_weierstrassA weierstrassA;
+ H235ECKASDH_eckasdhp_weierstrassB weierstrassB;
+} H235ECKASDH_eckasdhp;
+
+EXTERN int asn1PE_H235ECKASDH_eckasdhp (OOCTXT* pctxt, H235ECKASDH_eckasdhp* pvalue);
+
+EXTERN int asn1PD_H235ECKASDH_eckasdhp (OOCTXT* pctxt, H235ECKASDH_eckasdhp* pvalue);
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2_fieldSize */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ECKASDH_eckasdh2_fieldSize {
+ ASN1UINT numbits;
+ ASN1OCTET data[64];
+} H235ECKASDH_eckasdh2_fieldSize;
+
+EXTERN int asn1PE_H235ECKASDH_eckasdh2_fieldSize (OOCTXT* pctxt, H235ECKASDH_eckasdh2_fieldSize* pvalue);
+
+EXTERN int asn1PD_H235ECKASDH_eckasdh2_fieldSize (OOCTXT* pctxt, H235ECKASDH_eckasdh2_fieldSize* pvalue);
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2_weierstrassA */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ECKASDH_eckasdh2_weierstrassA {
+ ASN1UINT numbits;
+ ASN1OCTET data[64];
+} H235ECKASDH_eckasdh2_weierstrassA;
+
+EXTERN int asn1PE_H235ECKASDH_eckasdh2_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassA* pvalue);
+
+EXTERN int asn1PD_H235ECKASDH_eckasdh2_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassA* pvalue);
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2_weierstrassB */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ECKASDH_eckasdh2_weierstrassB {
+ ASN1UINT numbits;
+ ASN1OCTET data[64];
+} H235ECKASDH_eckasdh2_weierstrassB;
+
+EXTERN int asn1PE_H235ECKASDH_eckasdh2_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassB* pvalue);
+
+EXTERN int asn1PD_H235ECKASDH_eckasdh2_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassB* pvalue);
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2 */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ECKASDH_eckasdh2 {
+ H235ECpoint public_key;
+ H235ECKASDH_eckasdh2_fieldSize fieldSize;
+ H235ECpoint base;
+ H235ECKASDH_eckasdh2_weierstrassA weierstrassA;
+ H235ECKASDH_eckasdh2_weierstrassB weierstrassB;
+} H235ECKASDH_eckasdh2;
+
+EXTERN int asn1PE_H235ECKASDH_eckasdh2 (OOCTXT* pctxt, H235ECKASDH_eckasdh2* pvalue);
+
+EXTERN int asn1PD_H235ECKASDH_eckasdh2 (OOCTXT* pctxt, H235ECKASDH_eckasdh2* pvalue);
+
+/**************************************************************/
+/* */
+/* ECKASDH */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H235ECKASDH_eckasdhp 1
+#define T_H235ECKASDH_eckasdh2 2
+#define T_H235ECKASDH_extElem1 3
+
+typedef struct EXTERN H235ECKASDH {
+ int t;
+ union {
+ /* t = 1 */
+ H235ECKASDH_eckasdhp *eckasdhp;
+ /* t = 2 */
+ H235ECKASDH_eckasdh2 *eckasdh2;
+ /* t = 3 */
+ } u;
+} H235ECKASDH;
+
+EXTERN int asn1PE_H235ECKASDH (OOCTXT* pctxt, H235ECKASDH* pvalue);
+
+EXTERN int asn1PD_H235ECKASDH (OOCTXT* pctxt, H235ECKASDH* pvalue);
+
+/**************************************************************/
+/* */
+/* ClearToken */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ClearToken {
+ struct {
+ unsigned timeStampPresent : 1;
+ unsigned passwordPresent : 1;
+ unsigned dhkeyPresent : 1;
+ unsigned challengePresent : 1;
+ unsigned randomPresent : 1;
+ unsigned certificatePresent : 1;
+ unsigned generalIDPresent : 1;
+ unsigned nonStandardPresent : 1;
+ unsigned eckasdhkeyPresent : 1;
+ unsigned sendersIDPresent : 1;
+ } m;
+ ASN1OBJID tokenOID;
+ H235TimeStamp timeStamp;
+ H235Password password;
+ H235DHset dhkey;
+ H235ChallengeString challenge;
+ H235RandomVal random;
+ H235TypedCertificate certificate;
+ H235Identifier generalID;
+ H235NonStandardParameter nonStandard;
+ H235ECKASDH eckasdhkey;
+ H235Identifier sendersID;
+} H235ClearToken;
+
+EXTERN int asn1PE_H235ClearToken (OOCTXT* pctxt, H235ClearToken* pvalue);
+
+EXTERN int asn1PD_H235ClearToken (OOCTXT* pctxt, H235ClearToken* pvalue);
+
+/**************************************************************/
+/* */
+/* IV8 */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235IV8 {
+ ASN1UINT numocts;
+ ASN1OCTET data[8];
+} H235IV8;
+
+EXTERN int asn1PE_H235IV8 (OOCTXT* pctxt, H235IV8* pvalue);
+
+EXTERN int asn1PD_H235IV8 (OOCTXT* pctxt, H235IV8* pvalue);
+
+/**************************************************************/
+/* */
+/* IV16 */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235IV16 {
+ ASN1UINT numocts;
+ ASN1OCTET data[16];
+} H235IV16;
+
+EXTERN int asn1PE_H235IV16 (OOCTXT* pctxt, H235IV16* pvalue);
+
+EXTERN int asn1PD_H235IV16 (OOCTXT* pctxt, H235IV16* pvalue);
+
+/**************************************************************/
+/* */
+/* Params */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235Params {
+ struct {
+ unsigned ranIntPresent : 1;
+ unsigned iv8Present : 1;
+ unsigned iv16Present : 1;
+ } m;
+ ASN1INT ranInt;
+ H235IV8 iv8;
+ H235IV16 iv16;
+} H235Params;
+
+EXTERN int asn1PE_H235Params (OOCTXT* pctxt, H235Params* pvalue);
+
+EXTERN int asn1PD_H235Params (OOCTXT* pctxt, H235Params* pvalue);
+
+/**************************************************************/
+/* */
+/* ENCRYPTED */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235ENCRYPTED {
+ ASN1OBJID algorithmOID;
+ H235Params paramS;
+ ASN1DynOctStr encryptedData;
+} H235ENCRYPTED;
+
+EXTERN int asn1PE_H235ENCRYPTED (OOCTXT* pctxt, H235ENCRYPTED* pvalue);
+
+EXTERN int asn1PD_H235ENCRYPTED (OOCTXT* pctxt, H235ENCRYPTED* pvalue);
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoEncryptedToken */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235CryptoToken_cryptoEncryptedToken {
+ ASN1OBJID tokenOID;
+ H235ENCRYPTED token;
+} H235CryptoToken_cryptoEncryptedToken;
+
+EXTERN int asn1PE_H235CryptoToken_cryptoEncryptedToken (OOCTXT* pctxt, H235CryptoToken_cryptoEncryptedToken* pvalue);
+
+EXTERN int asn1PD_H235CryptoToken_cryptoEncryptedToken (OOCTXT* pctxt, H235CryptoToken_cryptoEncryptedToken* pvalue);
+
+/**************************************************************/
+/* */
+/* EncodedGeneralToken */
+/* */
+/**************************************************************/
+
+typedef ASN1OpenType H235EncodedGeneralToken;
+
+EXTERN int asn1PE_H235EncodedGeneralToken (OOCTXT* pctxt, H235EncodedGeneralToken value);
+
+EXTERN int asn1PD_H235EncodedGeneralToken (OOCTXT* pctxt, H235EncodedGeneralToken* pvalue);
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoSignedToken_token */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235CryptoToken_cryptoSignedToken_token {
+ H235EncodedGeneralToken toBeSigned;
+ ASN1OBJID algorithmOID;
+ H235Params paramS;
+ ASN1DynBitStr signature;
+} H235CryptoToken_cryptoSignedToken_token;
+
+EXTERN int asn1PE_H235CryptoToken_cryptoSignedToken_token (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken_token* pvalue);
+
+EXTERN int asn1PD_H235CryptoToken_cryptoSignedToken_token (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken_token* pvalue);
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoSignedToken */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235CryptoToken_cryptoSignedToken {
+ ASN1OBJID tokenOID;
+ H235CryptoToken_cryptoSignedToken_token token;
+} H235CryptoToken_cryptoSignedToken;
+
+EXTERN int asn1PE_H235CryptoToken_cryptoSignedToken (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken* pvalue);
+
+EXTERN int asn1PD_H235CryptoToken_cryptoSignedToken (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken* pvalue);
+
+/**************************************************************/
+/* */
+/* HASHED */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235HASHED {
+ ASN1OBJID algorithmOID;
+ H235Params paramS;
+ ASN1DynBitStr hash;
+} H235HASHED;
+
+EXTERN int asn1PE_H235HASHED (OOCTXT* pctxt, H235HASHED* pvalue);
+
+EXTERN int asn1PD_H235HASHED (OOCTXT* pctxt, H235HASHED* pvalue);
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoHashedToken */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H235CryptoToken_cryptoHashedToken {
+ ASN1OBJID tokenOID;
+ H235ClearToken hashedVals;
+ H235HASHED token;
+} H235CryptoToken_cryptoHashedToken;
+
+EXTERN int asn1PE_H235CryptoToken_cryptoHashedToken (OOCTXT* pctxt, H235CryptoToken_cryptoHashedToken* pvalue);
+
+EXTERN int asn1PD_H235CryptoToken_cryptoHashedToken (OOCTXT* pctxt, H235CryptoToken_cryptoHashedToken* pvalue);
+
+/**************************************************************/
+/* */
+/* CryptoToken */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H235CryptoToken_cryptoEncryptedToken 1
+#define T_H235CryptoToken_cryptoSignedToken 2
+#define T_H235CryptoToken_cryptoHashedToken 3
+#define T_H235CryptoToken_cryptoPwdEncr 4
+#define T_H235CryptoToken_extElem1 5
+
+typedef struct EXTERN H235CryptoToken {
+ int t;
+ union {
+ /* t = 1 */
+ H235CryptoToken_cryptoEncryptedToken *cryptoEncryptedToken;
+ /* t = 2 */
+ H235CryptoToken_cryptoSignedToken *cryptoSignedToken;
+ /* t = 3 */
+ H235CryptoToken_cryptoHashedToken *cryptoHashedToken;
+ /* t = 4 */
+ H235ENCRYPTED *cryptoPwdEncr;
+ /* t = 5 */
+ } u;
+} H235CryptoToken;
+
+EXTERN int asn1PE_H235CryptoToken (OOCTXT* pctxt, H235CryptoToken* pvalue);
+
+EXTERN int asn1PD_H235CryptoToken (OOCTXT* pctxt, H235CryptoToken* pvalue);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/addons/ooh323c/src/h323/H235-SECURITY-MESSAGESDec.c b/addons/ooh323c/src/h323/H235-SECURITY-MESSAGESDec.c
new file mode 100644
index 000000000..897bf0eec
--- /dev/null
+++ b/addons/ooh323c/src/h323/H235-SECURITY-MESSAGESDec.c
@@ -0,0 +1,1782 @@
+/*
+ * Copyright (C) 2004-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+/**
+ * This file was generated by the Objective Systems ASN1C Compiler
+ * (http://www.obj-sys.com). Version: 5.72, Date: 22-Mar-2005.
+ */
+#include "ooasn1.h"
+#include "H235-SECURITY-MESSAGES.h"
+#include "eventHandler.h"
+
+/**************************************************************/
+/* */
+/* ChallengeString */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ChallengeString (OOCTXT* pctxt, H235ChallengeString* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 8, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TimeStamp */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235TimeStamp (OOCTXT* pctxt, H235TimeStamp* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeConsUnsigned (pctxt, pvalue, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RandomVal */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235RandomVal (OOCTXT* pctxt, H235RandomVal* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeUnconsInteger (pctxt, pvalue);
+ if (stat != ASN_OK) return stat;
+ invokeIntValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Password */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235Password (OOCTXT* pctxt, H235Password* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBMPString (pctxt, pvalue, 0);
+ if (stat != ASN_OK) return stat;
+ invokeCharStr16BitValue (pctxt, pvalue->nchars, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncodedPwdCertToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235EncodedPwdCertToken (OOCTXT* pctxt, H235EncodedPwdCertToken* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeOpenType (pctxt, &pvalue->data, &pvalue->numocts);
+ if (stat != ASN_OK) return stat;
+ invokeOpenTypeValue
+ (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NonStandardParameter */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235NonStandardParameter (OOCTXT* pctxt, H235NonStandardParameter* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode nonStandardIdentifier */
+
+ invokeStartElement (pctxt, "nonStandardIdentifier", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->nonStandardIdentifier);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->nonStandardIdentifier.numids, pvalue->nonStandardIdentifier.subid);
+
+ invokeEndElement (pctxt, "nonStandardIdentifier", -1);
+
+ /* decode data */
+
+ invokeStartElement (pctxt, "data", -1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->data);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->data.numocts, pvalue->data.data);
+
+ invokeEndElement (pctxt, "data", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AuthenticationBES */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235AuthenticationBES (OOCTXT* pctxt, H235AuthenticationBES* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* default_ */
+ case 0:
+ invokeStartElement (pctxt, "default_", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "default_", -1);
+
+ break;
+
+ /* radius */
+ case 1:
+ invokeStartElement (pctxt, "radius", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "radius", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AuthenticationMechanism */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235AuthenticationMechanism (OOCTXT* pctxt, H235AuthenticationMechanism* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 6);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* dhExch */
+ case 0:
+ invokeStartElement (pctxt, "dhExch", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "dhExch", -1);
+
+ break;
+
+ /* pwdSymEnc */
+ case 1:
+ invokeStartElement (pctxt, "pwdSymEnc", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "pwdSymEnc", -1);
+
+ break;
+
+ /* pwdHash */
+ case 2:
+ invokeStartElement (pctxt, "pwdHash", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "pwdHash", -1);
+
+ break;
+
+ /* certSign */
+ case 3:
+ invokeStartElement (pctxt, "certSign", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "certSign", -1);
+
+ break;
+
+ /* ipsec */
+ case 4:
+ invokeStartElement (pctxt, "ipsec", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "ipsec", -1);
+
+ break;
+
+ /* tls */
+ case 5:
+ invokeStartElement (pctxt, "tls", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "tls", -1);
+
+ break;
+
+ /* nonStandard */
+ case 6:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H235NonStandardParameter);
+
+ stat = asn1PD_H235NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 8;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* authenticationBES */
+ case 8:
+ invokeStartElement (pctxt, "authenticationBES", -1);
+
+ pvalue->u.authenticationBES = ALLOC_ASN1ELEM (pctxt, H235AuthenticationBES);
+
+ stat = asn1PD_H235AuthenticationBES (pctxt, pvalue->u.authenticationBES);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "authenticationBES", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DHset_halfkey */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235DHset_halfkey (OOCTXT* pctxt, H235DHset_halfkey* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 2048, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DHset_modSize */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235DHset_modSize (OOCTXT* pctxt, H235DHset_modSize* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 2048, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DHset_generator */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235DHset_generator (OOCTXT* pctxt, H235DHset_generator* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 2048, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DHset */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235DHset (OOCTXT* pctxt, H235DHset* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode halfkey */
+
+ invokeStartElement (pctxt, "halfkey", -1);
+
+ stat = asn1PD_H235DHset_halfkey (pctxt, &pvalue->halfkey);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "halfkey", -1);
+
+ /* decode modSize */
+
+ invokeStartElement (pctxt, "modSize", -1);
+
+ stat = asn1PD_H235DHset_modSize (pctxt, &pvalue->modSize);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "modSize", -1);
+
+ /* decode generator */
+
+ invokeStartElement (pctxt, "generator", -1);
+
+ stat = asn1PD_H235DHset_generator (pctxt, &pvalue->generator);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "generator", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TypedCertificate */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235TypedCertificate (OOCTXT* pctxt, H235TypedCertificate* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode type */
+
+ invokeStartElement (pctxt, "type", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->type);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->type.numids, pvalue->type.subid);
+
+ invokeEndElement (pctxt, "type", -1);
+
+ /* decode certificate */
+
+ invokeStartElement (pctxt, "certificate", -1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->certificate);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->certificate.numocts, pvalue->certificate.data);
+
+ invokeEndElement (pctxt, "certificate", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Identifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235Identifier (OOCTXT* pctxt, H235Identifier* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBMPString (pctxt, pvalue, 0);
+ if (stat != ASN_OK) return stat;
+ invokeCharStr16BitValue (pctxt, pvalue->nchars, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECpoint_x */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECpoint_x (OOCTXT* pctxt, H235ECpoint_x* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECpoint_y */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECpoint_y (OOCTXT* pctxt, H235ECpoint_y* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECpoint */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECpoint (OOCTXT* pctxt, H235ECpoint* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.xPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.yPresent = optbit;
+
+ /* decode x */
+
+ if (pvalue->m.xPresent) {
+ invokeStartElement (pctxt, "x", -1);
+
+ stat = asn1PD_H235ECpoint_x (pctxt, &pvalue->x);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "x", -1);
+ }
+
+ /* decode y */
+
+ if (pvalue->m.yPresent) {
+ invokeStartElement (pctxt, "y", -1);
+
+ stat = asn1PD_H235ECpoint_y (pctxt, &pvalue->y);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "y", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp_modulus */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECKASDH_eckasdhp_modulus (OOCTXT* pctxt, H235ECKASDH_eckasdhp_modulus* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp_weierstrassA */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECKASDH_eckasdhp_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassA* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp_weierstrassB */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECKASDH_eckasdhp_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassB* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECKASDH_eckasdhp (OOCTXT* pctxt, H235ECKASDH_eckasdhp* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode public_key */
+
+ invokeStartElement (pctxt, "public_key", -1);
+
+ stat = asn1PD_H235ECpoint (pctxt, &pvalue->public_key);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "public_key", -1);
+
+ /* decode modulus */
+
+ invokeStartElement (pctxt, "modulus", -1);
+
+ stat = asn1PD_H235ECKASDH_eckasdhp_modulus (pctxt, &pvalue->modulus);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "modulus", -1);
+
+ /* decode base */
+
+ invokeStartElement (pctxt, "base", -1);
+
+ stat = asn1PD_H235ECpoint (pctxt, &pvalue->base);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "base", -1);
+
+ /* decode weierstrassA */
+
+ invokeStartElement (pctxt, "weierstrassA", -1);
+
+ stat = asn1PD_H235ECKASDH_eckasdhp_weierstrassA (pctxt, &pvalue->weierstrassA);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "weierstrassA", -1);
+
+ /* decode weierstrassB */
+
+ invokeStartElement (pctxt, "weierstrassB", -1);
+
+ stat = asn1PD_H235ECKASDH_eckasdhp_weierstrassB (pctxt, &pvalue->weierstrassB);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "weierstrassB", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2_fieldSize */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECKASDH_eckasdh2_fieldSize (OOCTXT* pctxt, H235ECKASDH_eckasdh2_fieldSize* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2_weierstrassA */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECKASDH_eckasdh2_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassA* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2_weierstrassB */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECKASDH_eckasdh2_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassB* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECKASDH_eckasdh2 (OOCTXT* pctxt, H235ECKASDH_eckasdh2* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode public_key */
+
+ invokeStartElement (pctxt, "public_key", -1);
+
+ stat = asn1PD_H235ECpoint (pctxt, &pvalue->public_key);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "public_key", -1);
+
+ /* decode fieldSize */
+
+ invokeStartElement (pctxt, "fieldSize", -1);
+
+ stat = asn1PD_H235ECKASDH_eckasdh2_fieldSize (pctxt, &pvalue->fieldSize);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "fieldSize", -1);
+
+ /* decode base */
+
+ invokeStartElement (pctxt, "base", -1);
+
+ stat = asn1PD_H235ECpoint (pctxt, &pvalue->base);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "base", -1);
+
+ /* decode weierstrassA */
+
+ invokeStartElement (pctxt, "weierstrassA", -1);
+
+ stat = asn1PD_H235ECKASDH_eckasdh2_weierstrassA (pctxt, &pvalue->weierstrassA);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "weierstrassA", -1);
+
+ /* decode weierstrassB */
+
+ invokeStartElement (pctxt, "weierstrassB", -1);
+
+ stat = asn1PD_H235ECKASDH_eckasdh2_weierstrassB (pctxt, &pvalue->weierstrassB);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "weierstrassB", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ECKASDH (OOCTXT* pctxt, H235ECKASDH* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* eckasdhp */
+ case 0:
+ invokeStartElement (pctxt, "eckasdhp", -1);
+
+ pvalue->u.eckasdhp = ALLOC_ASN1ELEM (pctxt, H235ECKASDH_eckasdhp);
+
+ stat = asn1PD_H235ECKASDH_eckasdhp (pctxt, pvalue->u.eckasdhp);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "eckasdhp", -1);
+
+ break;
+
+ /* eckasdh2 */
+ case 1:
+ invokeStartElement (pctxt, "eckasdh2", -1);
+
+ pvalue->u.eckasdh2 = ALLOC_ASN1ELEM (pctxt, H235ECKASDH_eckasdh2);
+
+ stat = asn1PD_H235ECKASDH_eckasdh2 (pctxt, pvalue->u.eckasdh2);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "eckasdh2", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ClearToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ClearToken (OOCTXT* pctxt, H235ClearToken* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.timeStampPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.passwordPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.dhkeyPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.challengePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.randomPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.certificatePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.generalIDPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.nonStandardPresent = optbit;
+
+ /* decode tokenOID */
+
+ invokeStartElement (pctxt, "tokenOID", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->tokenOID);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->tokenOID.numids, pvalue->tokenOID.subid);
+
+ invokeEndElement (pctxt, "tokenOID", -1);
+
+ /* decode timeStamp */
+
+ if (pvalue->m.timeStampPresent) {
+ invokeStartElement (pctxt, "timeStamp", -1);
+
+ stat = asn1PD_H235TimeStamp (pctxt, &pvalue->timeStamp);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "timeStamp", -1);
+ }
+
+ /* decode password */
+
+ if (pvalue->m.passwordPresent) {
+ invokeStartElement (pctxt, "password", -1);
+
+ stat = asn1PD_H235Password (pctxt, &pvalue->password);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "password", -1);
+ }
+
+ /* decode dhkey */
+
+ if (pvalue->m.dhkeyPresent) {
+ invokeStartElement (pctxt, "dhkey", -1);
+
+ stat = asn1PD_H235DHset (pctxt, &pvalue->dhkey);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dhkey", -1);
+ }
+
+ /* decode challenge */
+
+ if (pvalue->m.challengePresent) {
+ invokeStartElement (pctxt, "challenge", -1);
+
+ stat = asn1PD_H235ChallengeString (pctxt, &pvalue->challenge);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "challenge", -1);
+ }
+
+ /* decode random */
+
+ if (pvalue->m.randomPresent) {
+ invokeStartElement (pctxt, "random", -1);
+
+ stat = asn1PD_H235RandomVal (pctxt, &pvalue->random);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "random", -1);
+ }
+
+ /* decode certificate */
+
+ if (pvalue->m.certificatePresent) {
+ invokeStartElement (pctxt, "certificate", -1);
+
+ stat = asn1PD_H235TypedCertificate (pctxt, &pvalue->certificate);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "certificate", -1);
+ }
+
+ /* decode generalID */
+
+ if (pvalue->m.generalIDPresent) {
+ invokeStartElement (pctxt, "generalID", -1);
+
+ stat = asn1PD_H235Identifier (pctxt, &pvalue->generalID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "generalID", -1);
+ }
+
+ /* decode nonStandard */
+
+ if (pvalue->m.nonStandardPresent) {
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ stat = asn1PD_H235NonStandardParameter (pctxt, &pvalue->nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 2 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.eckasdhkeyPresent = 1;
+
+ invokeStartElement (pctxt, "eckasdhkey", -1);
+
+ stat = asn1PD_H235ECKASDH (pctxt, &pvalue->eckasdhkey);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "eckasdhkey", -1);
+ break;
+
+ case 1:
+ pvalue->m.sendersIDPresent = 1;
+
+ invokeStartElement (pctxt, "sendersID", -1);
+
+ stat = asn1PD_H235Identifier (pctxt, &pvalue->sendersID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "sendersID", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IV8 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235IV8 (OOCTXT* pctxt, H235IV8* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 8, 8, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IV16 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235IV16 (OOCTXT* pctxt, H235IV16* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Params */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235Params (OOCTXT* pctxt, H235Params* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ OOCTXT lctxt2;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.ranIntPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.iv8Present = optbit;
+
+ /* decode ranInt */
+
+ if (pvalue->m.ranIntPresent) {
+ invokeStartElement (pctxt, "ranInt", -1);
+
+ stat = decodeUnconsInteger (pctxt, &pvalue->ranInt);
+ if (stat != ASN_OK) return stat;
+ invokeIntValue (pctxt, pvalue->ranInt);
+
+ invokeEndElement (pctxt, "ranInt", -1);
+ }
+
+ /* decode iv8 */
+
+ if (pvalue->m.iv8Present) {
+ invokeStartElement (pctxt, "iv8", -1);
+
+ stat = asn1PD_H235IV8 (pctxt, &pvalue->iv8);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "iv8", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ if (i < 1 && openType.numocts > 0) { /* known element */
+ copyContext (&lctxt2, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (i) {
+ case 0:
+ pvalue->m.iv16Present = 1;
+
+ invokeStartElement (pctxt, "iv16", -1);
+
+ stat = asn1PD_H235IV16 (pctxt, &pvalue->iv16);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "iv16", -1);
+ break;
+
+ default:
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ copyContext (pctxt, &lctxt2);
+ }
+ else { /* unknown element */
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ENCRYPTED */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235ENCRYPTED (OOCTXT* pctxt, H235ENCRYPTED* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode algorithmOID */
+
+ invokeStartElement (pctxt, "algorithmOID", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->algorithmOID);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->algorithmOID.numids, pvalue->algorithmOID.subid);
+
+ invokeEndElement (pctxt, "algorithmOID", -1);
+
+ /* decode paramS */
+
+ invokeStartElement (pctxt, "paramS", -1);
+
+ stat = asn1PD_H235Params (pctxt, &pvalue->paramS);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "paramS", -1);
+
+ /* decode encryptedData */
+
+ invokeStartElement (pctxt, "encryptedData", -1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->encryptedData);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->encryptedData.numocts, pvalue->encryptedData.data);
+
+ invokeEndElement (pctxt, "encryptedData", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoEncryptedToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235CryptoToken_cryptoEncryptedToken (OOCTXT* pctxt, H235CryptoToken_cryptoEncryptedToken* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode tokenOID */
+
+ invokeStartElement (pctxt, "tokenOID", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->tokenOID);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->tokenOID.numids, pvalue->tokenOID.subid);
+
+ invokeEndElement (pctxt, "tokenOID", -1);
+
+ /* decode token */
+
+ invokeStartElement (pctxt, "token", -1);
+
+ stat = asn1PD_H235ENCRYPTED (pctxt, &pvalue->token);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "token", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncodedGeneralToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235EncodedGeneralToken (OOCTXT* pctxt, H235EncodedGeneralToken* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeOpenType (pctxt, &pvalue->data, &pvalue->numocts);
+ if (stat != ASN_OK) return stat;
+ invokeOpenTypeValue
+ (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoSignedToken_token */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235CryptoToken_cryptoSignedToken_token (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken_token* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode toBeSigned */
+
+ invokeStartElement (pctxt, "toBeSigned", -1);
+
+ stat = asn1PD_H235EncodedGeneralToken (pctxt, &pvalue->toBeSigned);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "toBeSigned", -1);
+
+ /* decode algorithmOID */
+
+ invokeStartElement (pctxt, "algorithmOID", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->algorithmOID);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->algorithmOID.numids, pvalue->algorithmOID.subid);
+
+ invokeEndElement (pctxt, "algorithmOID", -1);
+
+ /* decode paramS */
+
+ invokeStartElement (pctxt, "paramS", -1);
+
+ stat = asn1PD_H235Params (pctxt, &pvalue->paramS);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "paramS", -1);
+
+ /* decode signature */
+
+ invokeStartElement (pctxt, "signature", -1);
+
+ stat = decodeDynBitString (pctxt, (ASN1DynBitStr*)&pvalue->signature);
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->signature.numbits, pvalue->signature.data);
+
+ invokeEndElement (pctxt, "signature", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoSignedToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235CryptoToken_cryptoSignedToken (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode tokenOID */
+
+ invokeStartElement (pctxt, "tokenOID", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->tokenOID);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->tokenOID.numids, pvalue->tokenOID.subid);
+
+ invokeEndElement (pctxt, "tokenOID", -1);
+
+ /* decode token */
+
+ invokeStartElement (pctxt, "token", -1);
+
+ stat = asn1PD_H235CryptoToken_cryptoSignedToken_token (pctxt, &pvalue->token);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "token", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* HASHED */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235HASHED (OOCTXT* pctxt, H235HASHED* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode algorithmOID */
+
+ invokeStartElement (pctxt, "algorithmOID", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->algorithmOID);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->algorithmOID.numids, pvalue->algorithmOID.subid);
+
+ invokeEndElement (pctxt, "algorithmOID", -1);
+
+ /* decode paramS */
+
+ invokeStartElement (pctxt, "paramS", -1);
+
+ stat = asn1PD_H235Params (pctxt, &pvalue->paramS);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "paramS", -1);
+
+ /* decode hash */
+
+ invokeStartElement (pctxt, "hash", -1);
+
+ stat = decodeDynBitString (pctxt, (ASN1DynBitStr*)&pvalue->hash);
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->hash.numbits, pvalue->hash.data);
+
+ invokeEndElement (pctxt, "hash", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoHashedToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235CryptoToken_cryptoHashedToken (OOCTXT* pctxt, H235CryptoToken_cryptoHashedToken* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode tokenOID */
+
+ invokeStartElement (pctxt, "tokenOID", -1);
+
+ stat = decodeObjectIdentifier (pctxt, &pvalue->tokenOID);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->tokenOID.numids, pvalue->tokenOID.subid);
+
+ invokeEndElement (pctxt, "tokenOID", -1);
+
+ /* decode hashedVals */
+
+ invokeStartElement (pctxt, "hashedVals", -1);
+
+ stat = asn1PD_H235ClearToken (pctxt, &pvalue->hashedVals);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "hashedVals", -1);
+
+ /* decode token */
+
+ invokeStartElement (pctxt, "token", -1);
+
+ stat = asn1PD_H235HASHED (pctxt, &pvalue->token);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "token", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H235CryptoToken (OOCTXT* pctxt, H235CryptoToken* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* cryptoEncryptedToken */
+ case 0:
+ invokeStartElement (pctxt, "cryptoEncryptedToken", -1);
+
+ pvalue->u.cryptoEncryptedToken = ALLOC_ASN1ELEM (pctxt, H235CryptoToken_cryptoEncryptedToken);
+
+ stat = asn1PD_H235CryptoToken_cryptoEncryptedToken (pctxt, pvalue->u.cryptoEncryptedToken);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoEncryptedToken", -1);
+
+ break;
+
+ /* cryptoSignedToken */
+ case 1:
+ invokeStartElement (pctxt, "cryptoSignedToken", -1);
+
+ pvalue->u.cryptoSignedToken = ALLOC_ASN1ELEM (pctxt, H235CryptoToken_cryptoSignedToken);
+
+ stat = asn1PD_H235CryptoToken_cryptoSignedToken (pctxt, pvalue->u.cryptoSignedToken);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoSignedToken", -1);
+
+ break;
+
+ /* cryptoHashedToken */
+ case 2:
+ invokeStartElement (pctxt, "cryptoHashedToken", -1);
+
+ pvalue->u.cryptoHashedToken = ALLOC_ASN1ELEM (pctxt, H235CryptoToken_cryptoHashedToken);
+
+ stat = asn1PD_H235CryptoToken_cryptoHashedToken (pctxt, pvalue->u.cryptoHashedToken);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoHashedToken", -1);
+
+ break;
+
+ /* cryptoPwdEncr */
+ case 3:
+ invokeStartElement (pctxt, "cryptoPwdEncr", -1);
+
+ pvalue->u.cryptoPwdEncr = ALLOC_ASN1ELEM (pctxt, H235ENCRYPTED);
+
+ stat = asn1PD_H235ENCRYPTED (pctxt, pvalue->u.cryptoPwdEncr);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "cryptoPwdEncr", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 5;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
diff --git a/addons/ooh323c/src/h323/H235-SECURITY-MESSAGESEnc.c b/addons/ooh323c/src/h323/H235-SECURITY-MESSAGESEnc.c
new file mode 100644
index 000000000..8530c5198
--- /dev/null
+++ b/addons/ooh323c/src/h323/H235-SECURITY-MESSAGESEnc.c
@@ -0,0 +1,1269 @@
+/*
+ * Copyright (C) 2004-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+/**
+ * This file was generated by the Objective Systems ASN1C Compiler
+ * (http://www.obj-sys.com). Version: 5.72, Date: 22-Mar-2005.
+ */
+#include "ooasn1.h"
+#include "H235-SECURITY-MESSAGES.h"
+
+/**************************************************************/
+/* */
+/* ChallengeString */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ChallengeString (OOCTXT* pctxt, H235ChallengeString* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 8, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TimeStamp */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235TimeStamp (OOCTXT* pctxt, H235TimeStamp value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeConsUnsigned (pctxt, value, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RandomVal */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235RandomVal (OOCTXT* pctxt, H235RandomVal value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeUnconsInteger (pctxt, value);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Password */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235Password (OOCTXT* pctxt, H235Password value)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBMPString (pctxt, value, 0);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncodedPwdCertToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235EncodedPwdCertToken (OOCTXT* pctxt, H235EncodedPwdCertToken value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeOpenType (pctxt, value.numocts, value.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NonStandardParameter */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235NonStandardParameter (OOCTXT* pctxt, H235NonStandardParameter* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode nonStandardIdentifier */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->nonStandardIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ /* encode data */
+
+ stat = encodeOctetString (pctxt, pvalue->data.numocts, pvalue->data.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AuthenticationBES */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235AuthenticationBES (OOCTXT* pctxt, H235AuthenticationBES* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* default_ */
+ case 1:
+ /* NULL */
+ break;
+
+ /* radius */
+ case 2:
+ /* NULL */
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AuthenticationMechanism */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235AuthenticationMechanism (OOCTXT* pctxt, H235AuthenticationMechanism* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 7);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 6);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* dhExch */
+ case 1:
+ /* NULL */
+ break;
+
+ /* pwdSymEnc */
+ case 2:
+ /* NULL */
+ break;
+
+ /* pwdHash */
+ case 3:
+ /* NULL */
+ break;
+
+ /* certSign */
+ case 4:
+ /* NULL */
+ break;
+
+ /* ipsec */
+ case 5:
+ /* NULL */
+ break;
+
+ /* tls */
+ case 6:
+ /* NULL */
+ break;
+
+ /* nonStandard */
+ case 7:
+ stat = asn1PE_H235NonStandardParameter (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 8);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ switch (pvalue->t)
+ {
+ /* authenticationBES */
+ case 8:
+ stat = asn1PE_H235AuthenticationBES (&lctxt, pvalue->u.authenticationBES);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+ break;
+
+ default:
+ ;
+ }
+
+ stat = encodeByteAlign (pctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DHset_halfkey */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235DHset_halfkey (OOCTXT* pctxt, H235DHset_halfkey* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 2048, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DHset_modSize */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235DHset_modSize (OOCTXT* pctxt, H235DHset_modSize* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 2048, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DHset_generator */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235DHset_generator (OOCTXT* pctxt, H235DHset_generator* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 2048, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* DHset */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235DHset (OOCTXT* pctxt, H235DHset* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode halfkey */
+
+ stat = asn1PE_H235DHset_halfkey (pctxt, &pvalue->halfkey);
+ if (stat != ASN_OK) return stat;
+
+ /* encode modSize */
+
+ stat = asn1PE_H235DHset_modSize (pctxt, &pvalue->modSize);
+ if (stat != ASN_OK) return stat;
+
+ /* encode generator */
+
+ stat = asn1PE_H235DHset_generator (pctxt, &pvalue->generator);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TypedCertificate */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235TypedCertificate (OOCTXT* pctxt, H235TypedCertificate* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ /* encode type */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->type);
+ if (stat != ASN_OK) return stat;
+
+ /* encode certificate */
+
+ stat = encodeOctetString (pctxt, pvalue->certificate.numocts, pvalue->certificate.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Identifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235Identifier (OOCTXT* pctxt, H235Identifier value)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBMPString (pctxt, value, 0);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECpoint_x */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECpoint_x (OOCTXT* pctxt, H235ECpoint_x* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECpoint_y */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECpoint_y (OOCTXT* pctxt, H235ECpoint_y* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECpoint */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECpoint (OOCTXT* pctxt, H235ECpoint* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = 0;
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.xPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.yPresent);
+
+ /* encode x */
+
+ if (pvalue->m.xPresent) {
+ stat = asn1PE_H235ECpoint_x (pctxt, &pvalue->x);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode y */
+
+ if (pvalue->m.yPresent) {
+ stat = asn1PE_H235ECpoint_y (pctxt, &pvalue->y);
+ if (stat != ASN_OK) return stat;
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp_modulus */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECKASDH_eckasdhp_modulus (OOCTXT* pctxt, H235ECKASDH_eckasdhp_modulus* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp_weierstrassA */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECKASDH_eckasdhp_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassA* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp_weierstrassB */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECKASDH_eckasdhp_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdhp_weierstrassB* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdhp */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECKASDH_eckasdhp (OOCTXT* pctxt, H235ECKASDH_eckasdhp* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode public_key */
+
+ stat = asn1PE_H235ECpoint (pctxt, &pvalue->public_key);
+ if (stat != ASN_OK) return stat;
+
+ /* encode modulus */
+
+ stat = asn1PE_H235ECKASDH_eckasdhp_modulus (pctxt, &pvalue->modulus);
+ if (stat != ASN_OK) return stat;
+
+ /* encode base */
+
+ stat = asn1PE_H235ECpoint (pctxt, &pvalue->base);
+ if (stat != ASN_OK) return stat;
+
+ /* encode weierstrassA */
+
+ stat = asn1PE_H235ECKASDH_eckasdhp_weierstrassA (pctxt, &pvalue->weierstrassA);
+ if (stat != ASN_OK) return stat;
+
+ /* encode weierstrassB */
+
+ stat = asn1PE_H235ECKASDH_eckasdhp_weierstrassB (pctxt, &pvalue->weierstrassB);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2_fieldSize */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECKASDH_eckasdh2_fieldSize (OOCTXT* pctxt, H235ECKASDH_eckasdh2_fieldSize* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2_weierstrassA */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECKASDH_eckasdh2_weierstrassA (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassA* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2_weierstrassB */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECKASDH_eckasdh2_weierstrassB (OOCTXT* pctxt, H235ECKASDH_eckasdh2_weierstrassB* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 0, 511, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeBitString (pctxt, pvalue->numbits, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH_eckasdh2 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECKASDH_eckasdh2 (OOCTXT* pctxt, H235ECKASDH_eckasdh2* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode public_key */
+
+ stat = asn1PE_H235ECpoint (pctxt, &pvalue->public_key);
+ if (stat != ASN_OK) return stat;
+
+ /* encode fieldSize */
+
+ stat = asn1PE_H235ECKASDH_eckasdh2_fieldSize (pctxt, &pvalue->fieldSize);
+ if (stat != ASN_OK) return stat;
+
+ /* encode base */
+
+ stat = asn1PE_H235ECpoint (pctxt, &pvalue->base);
+ if (stat != ASN_OK) return stat;
+
+ /* encode weierstrassA */
+
+ stat = asn1PE_H235ECKASDH_eckasdh2_weierstrassA (pctxt, &pvalue->weierstrassA);
+ if (stat != ASN_OK) return stat;
+
+ /* encode weierstrassB */
+
+ stat = asn1PE_H235ECKASDH_eckasdh2_weierstrassB (pctxt, &pvalue->weierstrassB);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ECKASDH */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ECKASDH (OOCTXT* pctxt, H235ECKASDH* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 2);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* eckasdhp */
+ case 1:
+ stat = asn1PE_H235ECKASDH_eckasdhp (pctxt, pvalue->u.eckasdhp);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* eckasdh2 */
+ case 2:
+ stat = asn1PE_H235ECKASDH_eckasdh2 (pctxt, pvalue->u.eckasdh2);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ClearToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ClearToken (OOCTXT* pctxt, H235ClearToken* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.eckasdhkeyPresent ||
+ pvalue->m.sendersIDPresent);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.timeStampPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.passwordPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.dhkeyPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.challengePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.randomPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.certificatePresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.generalIDPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.nonStandardPresent);
+
+ /* encode tokenOID */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->tokenOID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode timeStamp */
+
+ if (pvalue->m.timeStampPresent) {
+ stat = asn1PE_H235TimeStamp (pctxt, pvalue->timeStamp);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode password */
+
+ if (pvalue->m.passwordPresent) {
+ stat = asn1PE_H235Password (pctxt, pvalue->password);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode dhkey */
+
+ if (pvalue->m.dhkeyPresent) {
+ stat = asn1PE_H235DHset (pctxt, &pvalue->dhkey);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode challenge */
+
+ if (pvalue->m.challengePresent) {
+ stat = asn1PE_H235ChallengeString (pctxt, &pvalue->challenge);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode random */
+
+ if (pvalue->m.randomPresent) {
+ stat = asn1PE_H235RandomVal (pctxt, pvalue->random);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode certificate */
+
+ if (pvalue->m.certificatePresent) {
+ stat = asn1PE_H235TypedCertificate (pctxt, &pvalue->certificate);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode generalID */
+
+ if (pvalue->m.generalIDPresent) {
+ stat = asn1PE_H235Identifier (pctxt, pvalue->generalID);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode nonStandard */
+
+ if (pvalue->m.nonStandardPresent) {
+ stat = asn1PE_H235NonStandardParameter (pctxt, &pvalue->nonStandard);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 1);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.eckasdhkeyPresent);
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.sendersIDPresent);
+ /* encode extension elements */
+
+ if (pvalue->m.eckasdhkeyPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H235ECKASDH (&lctxt, &pvalue->eckasdhkey);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ if (pvalue->m.sendersIDPresent) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H235Identifier (&lctxt, pvalue->sendersID);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IV8 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235IV8 (OOCTXT* pctxt, H235IV8* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 8, 8, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* IV16 */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235IV16 (OOCTXT* pctxt, H235IV16* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = encodeOctetString (pctxt, pvalue->numocts, pvalue->data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Params */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235Params (OOCTXT* pctxt, H235Params* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+ ASN1OpenType openType;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->m.iv16Present);
+
+ encodeBit (pctxt, extbit);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.ranIntPresent);
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.iv8Present);
+
+ /* encode ranInt */
+
+ if (pvalue->m.ranIntPresent) {
+ stat = encodeUnconsInteger (pctxt, pvalue->ranInt);
+ if (stat != ASN_OK) return stat;
+ }
+
+ /* encode iv8 */
+
+ if (pvalue->m.iv8Present) {
+ stat = asn1PE_H235IV8 (pctxt, &pvalue->iv8);
+ if (stat != ASN_OK) return stat;
+ }
+
+ if (extbit) {
+
+ /* encode extension optional bits length */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, 0);
+ if (stat != ASN_OK) return stat;
+
+ /* encode optional bits */
+
+ encodeBit (pctxt, (ASN1BOOL)pvalue->m.iv16Present);
+ /* encode extension elements */
+
+ if (pvalue->m.iv16Present) {
+ initContext (&lctxt);
+ stat = setPERBuffer (&lctxt, 0, 0, TRUE);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = asn1PE_H235IV16 (&lctxt, &pvalue->iv16);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ stat = encodeByteAlign (&lctxt);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ openType.data = encodeGetMsgPtr (&lctxt, (int*)&openType.numocts);
+
+ stat = encodeOpenType (pctxt, openType.numocts, openType.data);
+ if (stat != ASN_OK) return freeContext (&lctxt), stat;
+
+ freeContext (&lctxt);
+ }
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ENCRYPTED */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235ENCRYPTED (OOCTXT* pctxt, H235ENCRYPTED* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode algorithmOID */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->algorithmOID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode paramS */
+
+ stat = asn1PE_H235Params (pctxt, &pvalue->paramS);
+ if (stat != ASN_OK) return stat;
+
+ /* encode encryptedData */
+
+ stat = encodeOctetString (pctxt, pvalue->encryptedData.numocts, pvalue->encryptedData.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoEncryptedToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235CryptoToken_cryptoEncryptedToken (OOCTXT* pctxt, H235CryptoToken_cryptoEncryptedToken* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode tokenOID */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->tokenOID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode token */
+
+ stat = asn1PE_H235ENCRYPTED (pctxt, &pvalue->token);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncodedGeneralToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235EncodedGeneralToken (OOCTXT* pctxt, H235EncodedGeneralToken value)
+{
+ int stat = ASN_OK;
+
+ stat = encodeOpenType (pctxt, value.numocts, value.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoSignedToken_token */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235CryptoToken_cryptoSignedToken_token (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken_token* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode toBeSigned */
+
+ stat = asn1PE_H235EncodedGeneralToken (pctxt, pvalue->toBeSigned);
+ if (stat != ASN_OK) return stat;
+
+ /* encode algorithmOID */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->algorithmOID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode paramS */
+
+ stat = asn1PE_H235Params (pctxt, &pvalue->paramS);
+ if (stat != ASN_OK) return stat;
+
+ /* encode signature */
+
+ stat = encodeBitString (pctxt, pvalue->signature.numbits, pvalue->signature.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoSignedToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235CryptoToken_cryptoSignedToken (OOCTXT* pctxt, H235CryptoToken_cryptoSignedToken* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode tokenOID */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->tokenOID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode token */
+
+ stat = asn1PE_H235CryptoToken_cryptoSignedToken_token (pctxt, &pvalue->token);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* HASHED */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235HASHED (OOCTXT* pctxt, H235HASHED* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode algorithmOID */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->algorithmOID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode paramS */
+
+ stat = asn1PE_H235Params (pctxt, &pvalue->paramS);
+ if (stat != ASN_OK) return stat;
+
+ /* encode hash */
+
+ stat = encodeBitString (pctxt, pvalue->hash.numbits, pvalue->hash.data);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoToken_cryptoHashedToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235CryptoToken_cryptoHashedToken (OOCTXT* pctxt, H235CryptoToken_cryptoHashedToken* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* encode tokenOID */
+
+ stat = encodeObjectIdentifier (pctxt, &pvalue->tokenOID);
+ if (stat != ASN_OK) return stat;
+
+ /* encode hashedVals */
+
+ stat = asn1PE_H235ClearToken (pctxt, &pvalue->hashedVals);
+ if (stat != ASN_OK) return stat;
+
+ /* encode token */
+
+ stat = asn1PE_H235HASHED (pctxt, &pvalue->token);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CryptoToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PE_H235CryptoToken (OOCTXT* pctxt, H235CryptoToken* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ extbit = (ASN1BOOL)(pvalue->t > 4);
+
+ encodeBit (pctxt, extbit);
+
+ if (!extbit) {
+
+ /* Encode choice index value */
+
+ stat = encodeConsUnsigned (pctxt, pvalue->t - 1, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode root element data value */
+
+ switch (pvalue->t)
+ {
+ /* cryptoEncryptedToken */
+ case 1:
+ stat = asn1PE_H235CryptoToken_cryptoEncryptedToken (pctxt, pvalue->u.cryptoEncryptedToken);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* cryptoSignedToken */
+ case 2:
+ stat = asn1PE_H235CryptoToken_cryptoSignedToken (pctxt, pvalue->u.cryptoSignedToken);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* cryptoHashedToken */
+ case 3:
+ stat = asn1PE_H235CryptoToken_cryptoHashedToken (pctxt, pvalue->u.cryptoHashedToken);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ /* cryptoPwdEncr */
+ case 4:
+ stat = asn1PE_H235ENCRYPTED (pctxt, pvalue->u.cryptoPwdEncr);
+ if (stat != ASN_OK) return stat;
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ /* Encode extension choice index value */
+
+ stat = encodeSmallNonNegWholeNumber (pctxt, pvalue->t - 5);
+ if (stat != ASN_OK) return stat;
+
+ /* Encode extension element data value */
+
+ }
+
+ return (stat);
+}
+
diff --git a/addons/ooh323c/src/h323/H323-MESSAGES.c b/addons/ooh323c/src/h323/H323-MESSAGES.c
new file mode 100644
index 000000000..2c27f3b93
--- /dev/null
+++ b/addons/ooh323c/src/h323/H323-MESSAGES.c
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2004-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+/**
+ * This file was generated by the Objective Systems ASN1C Compiler
+ * (http://www.obj-sys.com). Version: 5.72, Date: 22-Mar-2005.
+ */
+#include "ooasn1.h"
+#include "H323-MESSAGES.h"
+
+/**************************************************************/
+/* */
+/* NumberDigits */
+/* */
+/**************************************************************/
+
+EXTERN const char* gs_H323_MESSAGES_NumberDigits_CharSet =
+"#*,0123456789";
+
+/**************************************************************/
+/* */
+/* TBCD_STRING */
+/* */
+/**************************************************************/
+
+EXTERN const char* gs_H323_MESSAGES_TBCD_STRING_CharSet =
+"#*0123456789abc";
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM_system_id */
+/* */
+/**************************************************************/
+
+EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_system_id_sid_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_system_id_mid_CharSet =
+"#*0123456789abc";
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM */
+/* */
+/**************************************************************/
+
+EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_imsi_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_min_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_mdn_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_msisdn_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_esn_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_mscid_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_sesn_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_soc_CharSet =
+"#*0123456789abc";
+
+/**************************************************************/
+/* */
+/* GSM_UIM */
+/* */
+/**************************************************************/
+
+EXTERN const char* gs_H323_MESSAGES_GSM_UIM_imsi_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_GSM_UIM_msisdn_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_GSM_UIM_imei_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_GSM_UIM_hplmn_CharSet =
+"#*0123456789abc";
+
+EXTERN const char* gs_H323_MESSAGES_GSM_UIM_vplmn_CharSet =
+"#*0123456789abc";
+
+/**************************************************************/
+/* */
+/* AliasAddress */
+/* */
+/**************************************************************/
+
+EXTERN const char* gs_H323_MESSAGES_AliasAddress_dialedDigits_CharSet =
+"#*,0123456789";
+
diff --git a/addons/ooh323c/src/h323/H323-MESSAGES.h b/addons/ooh323c/src/h323/H323-MESSAGES.h
new file mode 100644
index 000000000..fbd87b336
--- /dev/null
+++ b/addons/ooh323c/src/h323/H323-MESSAGES.h
@@ -0,0 +1,6510 @@
+/*
+ * Copyright (C) 2004-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+/**
+ * This file was generated by the Objective Systems ASN1C Compiler
+ * (http://www.obj-sys.com). Version: 5.72, Date: 22-Mar-2005.
+ */
+#ifndef H323_MESSAGES_H
+#define H323_MESSAGES_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "ooasn1.h"
+#include "H235-SECURITY-MESSAGES.h"
+#include "MULTIMEDIA-SYSTEM-CONTROL.h"
+
+/**************************************************************/
+/* */
+/* ScreeningIndicator */
+/* */
+/**************************************************************/
+
+typedef enum {
+ userProvidedNotScreened = 0,
+ userProvidedVerifiedAndPassed = 1,
+ userProvidedVerifiedAndFailed = 2,
+ networkProvided = 3
+} H225ScreeningIndicator_Root;
+
+typedef ASN1UINT H225ScreeningIndicator;
+
+EXTERN int asn1PE_H225ScreeningIndicator (OOCTXT* pctxt, H225ScreeningIndicator value);
+
+EXTERN int asn1PD_H225ScreeningIndicator (OOCTXT* pctxt, H225ScreeningIndicator* pvalue);
+
+/**************************************************************/
+/* */
+/* NumberDigits */
+/* */
+/**************************************************************/
+
+typedef ASN1IA5String H225NumberDigits;
+
+EXTERN int asn1PE_H225NumberDigits (OOCTXT* pctxt, H225NumberDigits value);
+
+EXTERN int asn1PD_H225NumberDigits (OOCTXT* pctxt, H225NumberDigits* pvalue);
+
+/**************************************************************/
+/* */
+/* TBCD_STRING */
+/* */
+/**************************************************************/
+
+typedef ASN1IA5String H225TBCD_STRING;
+
+EXTERN int asn1PE_H225TBCD_STRING (OOCTXT* pctxt, H225TBCD_STRING value);
+
+EXTERN int asn1PD_H225TBCD_STRING (OOCTXT* pctxt, H225TBCD_STRING* pvalue);
+
+/**************************************************************/
+/* */
+/* GloballyUniqueID */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GloballyUniqueID {
+ ASN1UINT numocts;
+ ASN1OCTET data[16];
+} H225GloballyUniqueID;
+
+EXTERN int asn1PE_H225GloballyUniqueID (OOCTXT* pctxt, H225GloballyUniqueID* pvalue);
+
+EXTERN int asn1PD_H225GloballyUniqueID (OOCTXT* pctxt, H225GloballyUniqueID* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceIdentifier */
+/* */
+/**************************************************************/
+
+typedef H225GloballyUniqueID H225ConferenceIdentifier;
+
+EXTERN int asn1PE_H225ConferenceIdentifier (OOCTXT* pctxt, H225ConferenceIdentifier* pvalue);
+
+EXTERN int asn1PD_H225ConferenceIdentifier (OOCTXT* pctxt, H225ConferenceIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestSeqNum */
+/* */
+/**************************************************************/
+
+typedef ASN1USINT H225RequestSeqNum;
+
+EXTERN int asn1PE_H225RequestSeqNum (OOCTXT* pctxt, H225RequestSeqNum value);
+
+EXTERN int asn1PD_H225RequestSeqNum (OOCTXT* pctxt, H225RequestSeqNum* pvalue);
+
+/**************************************************************/
+/* */
+/* GatekeeperIdentifier */
+/* */
+/**************************************************************/
+
+typedef ASN1BMPString H225GatekeeperIdentifier;
+
+EXTERN int asn1PE_H225GatekeeperIdentifier (OOCTXT* pctxt, H225GatekeeperIdentifier value);
+
+EXTERN int asn1PD_H225GatekeeperIdentifier (OOCTXT* pctxt, H225GatekeeperIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* BandWidth */
+/* */
+/**************************************************************/
+
+typedef ASN1UINT H225BandWidth;
+
+EXTERN int asn1PE_H225BandWidth (OOCTXT* pctxt, H225BandWidth value);
+
+EXTERN int asn1PD_H225BandWidth (OOCTXT* pctxt, H225BandWidth* pvalue);
+
+/**************************************************************/
+/* */
+/* CallReferenceValue */
+/* */
+/**************************************************************/
+
+typedef ASN1USINT H225CallReferenceValue;
+
+EXTERN int asn1PE_H225CallReferenceValue (OOCTXT* pctxt, H225CallReferenceValue value);
+
+EXTERN int asn1PD_H225CallReferenceValue (OOCTXT* pctxt, H225CallReferenceValue* pvalue);
+
+/**************************************************************/
+/* */
+/* EndpointIdentifier */
+/* */
+/**************************************************************/
+
+typedef ASN1BMPString H225EndpointIdentifier;
+
+EXTERN int asn1PE_H225EndpointIdentifier (OOCTXT* pctxt, H225EndpointIdentifier value);
+
+EXTERN int asn1PD_H225EndpointIdentifier (OOCTXT* pctxt, H225EndpointIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* ProtocolIdentifier */
+/* */
+/**************************************************************/
+
+typedef ASN1OBJID H225ProtocolIdentifier;
+
+EXTERN int asn1PE_H225ProtocolIdentifier (OOCTXT* pctxt, H225ProtocolIdentifier value);
+
+EXTERN int asn1PD_H225ProtocolIdentifier (OOCTXT* pctxt, H225ProtocolIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* TimeToLive */
+/* */
+/**************************************************************/
+
+typedef ASN1UINT H225TimeToLive;
+
+EXTERN int asn1PE_H225TimeToLive (OOCTXT* pctxt, H225TimeToLive value);
+
+EXTERN int asn1PD_H225TimeToLive (OOCTXT* pctxt, H225TimeToLive* pvalue);
+
+/**************************************************************/
+/* */
+/* H248PackagesDescriptor */
+/* */
+/**************************************************************/
+
+typedef ASN1DynOctStr H225H248PackagesDescriptor;
+
+EXTERN int asn1PE_H225H248PackagesDescriptor (OOCTXT* pctxt, H225H248PackagesDescriptor value);
+
+EXTERN int asn1PD_H225H248PackagesDescriptor (OOCTXT* pctxt, H225H248PackagesDescriptor* pvalue);
+
+/**************************************************************/
+/* */
+/* H248SignalsDescriptor */
+/* */
+/**************************************************************/
+
+typedef ASN1DynOctStr H225H248SignalsDescriptor;
+
+EXTERN int asn1PE_H225H248SignalsDescriptor (OOCTXT* pctxt, H225H248SignalsDescriptor value);
+
+EXTERN int asn1PD_H225H248SignalsDescriptor (OOCTXT* pctxt, H225H248SignalsDescriptor* pvalue);
+
+/**************************************************************/
+/* */
+/* GenericIdentifier */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225GenericIdentifier_standard 1
+#define T_H225GenericIdentifier_oid 2
+#define T_H225GenericIdentifier_nonStandard 3
+#define T_H225GenericIdentifier_extElem1 4
+
+typedef struct EXTERN H225GenericIdentifier {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1INT standard;
+ /* t = 2 */
+ ASN1OBJID *oid;
+ /* t = 3 */
+ H225GloballyUniqueID *nonStandard;
+ /* t = 4 */
+ } u;
+} H225GenericIdentifier;
+
+EXTERN int asn1PE_H225GenericIdentifier (OOCTXT* pctxt, H225GenericIdentifier* pvalue);
+
+EXTERN int asn1PD_H225GenericIdentifier (OOCTXT* pctxt, H225GenericIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipAddress_ip */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_ipAddress_ip {
+ ASN1UINT numocts;
+ ASN1OCTET data[4];
+} H225TransportAddress_ipAddress_ip;
+
+EXTERN int asn1PE_H225TransportAddress_ipAddress_ip (OOCTXT* pctxt, H225TransportAddress_ipAddress_ip* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ipAddress_ip (OOCTXT* pctxt, H225TransportAddress_ipAddress_ip* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipAddress */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_ipAddress {
+ H225TransportAddress_ipAddress_ip ip;
+ ASN1USINT port;
+} H225TransportAddress_ipAddress;
+
+EXTERN int asn1PE_H225TransportAddress_ipAddress (OOCTXT* pctxt, H225TransportAddress_ipAddress* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ipAddress (OOCTXT* pctxt, H225TransportAddress_ipAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipSourceRoute_ip */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_ipSourceRoute_ip {
+ ASN1UINT numocts;
+ ASN1OCTET data[4];
+} H225TransportAddress_ipSourceRoute_ip;
+
+EXTERN int asn1PE_H225TransportAddress_ipSourceRoute_ip (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_ip* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ipSourceRoute_ip (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_ip* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipSourceRoute_route_element */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_ipSourceRoute_route_element {
+ ASN1UINT numocts;
+ ASN1OCTET data[4];
+} H225TransportAddress_ipSourceRoute_route_element;
+
+EXTERN int asn1PE_H225TransportAddress_ipSourceRoute_route_element (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_route_element* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ipSourceRoute_route_element (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_route_element* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225TransportAddress_ipSourceRoute_route_element */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225_SeqOfH225TransportAddress_ipSourceRoute_route_element {
+ ASN1UINT n;
+ H225TransportAddress_ipSourceRoute_route_element *elem;
+} H225_SeqOfH225TransportAddress_ipSourceRoute_route_element;
+
+EXTERN int asn1PE_H225_SeqOfH225TransportAddress_ipSourceRoute_route_element (OOCTXT* pctxt, H225_SeqOfH225TransportAddress_ipSourceRoute_route_element* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225TransportAddress_ipSourceRoute_route_element (OOCTXT* pctxt, H225_SeqOfH225TransportAddress_ipSourceRoute_route_element* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipSourceRoute_routing */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225TransportAddress_ipSourceRoute_routing_strict 1
+#define T_H225TransportAddress_ipSourceRoute_routing_loose 2
+#define T_H225TransportAddress_ipSourceRoute_routing_extElem1 3
+
+typedef struct EXTERN H225TransportAddress_ipSourceRoute_routing {
+ int t;
+} H225TransportAddress_ipSourceRoute_routing;
+
+EXTERN int asn1PE_H225TransportAddress_ipSourceRoute_routing (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_routing* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ipSourceRoute_routing (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_routing* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipSourceRoute */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_ipSourceRoute {
+ H225TransportAddress_ipSourceRoute_ip ip;
+ ASN1USINT port;
+ H225_SeqOfH225TransportAddress_ipSourceRoute_route_element route;
+ H225TransportAddress_ipSourceRoute_routing routing;
+} H225TransportAddress_ipSourceRoute;
+
+EXTERN int asn1PE_H225TransportAddress_ipSourceRoute (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ipSourceRoute (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipxAddress_node */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_ipxAddress_node {
+ ASN1UINT numocts;
+ ASN1OCTET data[6];
+} H225TransportAddress_ipxAddress_node;
+
+EXTERN int asn1PE_H225TransportAddress_ipxAddress_node (OOCTXT* pctxt, H225TransportAddress_ipxAddress_node* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ipxAddress_node (OOCTXT* pctxt, H225TransportAddress_ipxAddress_node* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipxAddress_netnum */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_ipxAddress_netnum {
+ ASN1UINT numocts;
+ ASN1OCTET data[4];
+} H225TransportAddress_ipxAddress_netnum;
+
+EXTERN int asn1PE_H225TransportAddress_ipxAddress_netnum (OOCTXT* pctxt, H225TransportAddress_ipxAddress_netnum* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ipxAddress_netnum (OOCTXT* pctxt, H225TransportAddress_ipxAddress_netnum* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipxAddress_port */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_ipxAddress_port {
+ ASN1UINT numocts;
+ ASN1OCTET data[2];
+} H225TransportAddress_ipxAddress_port;
+
+EXTERN int asn1PE_H225TransportAddress_ipxAddress_port (OOCTXT* pctxt, H225TransportAddress_ipxAddress_port* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ipxAddress_port (OOCTXT* pctxt, H225TransportAddress_ipxAddress_port* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipxAddress */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_ipxAddress {
+ H225TransportAddress_ipxAddress_node node;
+ H225TransportAddress_ipxAddress_netnum netnum;
+ H225TransportAddress_ipxAddress_port port;
+} H225TransportAddress_ipxAddress;
+
+EXTERN int asn1PE_H225TransportAddress_ipxAddress (OOCTXT* pctxt, H225TransportAddress_ipxAddress* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ipxAddress (OOCTXT* pctxt, H225TransportAddress_ipxAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ip6Address_ip */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_ip6Address_ip {
+ ASN1UINT numocts;
+ ASN1OCTET data[16];
+} H225TransportAddress_ip6Address_ip;
+
+EXTERN int asn1PE_H225TransportAddress_ip6Address_ip (OOCTXT* pctxt, H225TransportAddress_ip6Address_ip* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ip6Address_ip (OOCTXT* pctxt, H225TransportAddress_ip6Address_ip* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_ip6Address */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_ip6Address {
+ H225TransportAddress_ip6Address_ip ip;
+ ASN1USINT port;
+} H225TransportAddress_ip6Address;
+
+EXTERN int asn1PE_H225TransportAddress_ip6Address (OOCTXT* pctxt, H225TransportAddress_ip6Address* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_ip6Address (OOCTXT* pctxt, H225TransportAddress_ip6Address* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_netBios */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_netBios {
+ ASN1UINT numocts;
+ ASN1OCTET data[16];
+} H225TransportAddress_netBios;
+
+EXTERN int asn1PE_H225TransportAddress_netBios (OOCTXT* pctxt, H225TransportAddress_netBios* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_netBios (OOCTXT* pctxt, H225TransportAddress_netBios* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress_nsap */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportAddress_nsap {
+ ASN1UINT numocts;
+ ASN1OCTET data[20];
+} H225TransportAddress_nsap;
+
+EXTERN int asn1PE_H225TransportAddress_nsap (OOCTXT* pctxt, H225TransportAddress_nsap* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress_nsap (OOCTXT* pctxt, H225TransportAddress_nsap* pvalue);
+
+/**************************************************************/
+/* */
+/* H221NonStandard */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H221NonStandard {
+ ASN1UINT8 t35CountryCode;
+ ASN1UINT8 t35Extension;
+ ASN1USINT manufacturerCode;
+} H225H221NonStandard;
+
+EXTERN int asn1PE_H225H221NonStandard (OOCTXT* pctxt, H225H221NonStandard* pvalue);
+
+EXTERN int asn1PD_H225H221NonStandard (OOCTXT* pctxt, H225H221NonStandard* pvalue);
+
+/**************************************************************/
+/* */
+/* NonStandardIdentifier */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225NonStandardIdentifier_object 1
+#define T_H225NonStandardIdentifier_h221NonStandard 2
+#define T_H225NonStandardIdentifier_extElem1 3
+
+typedef struct EXTERN H225NonStandardIdentifier {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1OBJID *object;
+ /* t = 2 */
+ H225H221NonStandard *h221NonStandard;
+ /* t = 3 */
+ } u;
+} H225NonStandardIdentifier;
+
+EXTERN int asn1PE_H225NonStandardIdentifier (OOCTXT* pctxt, H225NonStandardIdentifier* pvalue);
+
+EXTERN int asn1PD_H225NonStandardIdentifier (OOCTXT* pctxt, H225NonStandardIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* NonStandardParameter */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225NonStandardParameter {
+ H225NonStandardIdentifier nonStandardIdentifier;
+ ASN1DynOctStr data;
+} H225NonStandardParameter;
+
+EXTERN int asn1PE_H225NonStandardParameter (OOCTXT* pctxt, H225NonStandardParameter* pvalue);
+
+EXTERN int asn1PD_H225NonStandardParameter (OOCTXT* pctxt, H225NonStandardParameter* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportAddress */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225TransportAddress_ipAddress 1
+#define T_H225TransportAddress_ipSourceRoute 2
+#define T_H225TransportAddress_ipxAddress 3
+#define T_H225TransportAddress_ip6Address 4
+#define T_H225TransportAddress_netBios 5
+#define T_H225TransportAddress_nsap 6
+#define T_H225TransportAddress_nonStandardAddress 7
+#define T_H225TransportAddress_extElem1 8
+
+typedef struct EXTERN H225TransportAddress {
+ int t;
+ union {
+ /* t = 1 */
+ H225TransportAddress_ipAddress *ipAddress;
+ /* t = 2 */
+ H225TransportAddress_ipSourceRoute *ipSourceRoute;
+ /* t = 3 */
+ H225TransportAddress_ipxAddress *ipxAddress;
+ /* t = 4 */
+ H225TransportAddress_ip6Address *ip6Address;
+ /* t = 5 */
+ H225TransportAddress_netBios *netBios;
+ /* t = 6 */
+ H225TransportAddress_nsap *nsap;
+ /* t = 7 */
+ H225NonStandardParameter *nonStandardAddress;
+ /* t = 8 */
+ } u;
+} H225TransportAddress;
+
+EXTERN int asn1PE_H225TransportAddress (OOCTXT* pctxt, H225TransportAddress* pvalue);
+
+EXTERN int asn1PD_H225TransportAddress (OOCTXT* pctxt, H225TransportAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* PublicTypeOfNumber */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225PublicTypeOfNumber_unknown 1
+#define T_H225PublicTypeOfNumber_internationalNumber 2
+#define T_H225PublicTypeOfNumber_nationalNumber 3
+#define T_H225PublicTypeOfNumber_networkSpecificNumber 4
+#define T_H225PublicTypeOfNumber_subscriberNumber 5
+#define T_H225PublicTypeOfNumber_abbreviatedNumber 6
+#define T_H225PublicTypeOfNumber_extElem1 7
+
+typedef struct EXTERN H225PublicTypeOfNumber {
+ int t;
+} H225PublicTypeOfNumber;
+
+EXTERN int asn1PE_H225PublicTypeOfNumber (OOCTXT* pctxt, H225PublicTypeOfNumber* pvalue);
+
+EXTERN int asn1PD_H225PublicTypeOfNumber (OOCTXT* pctxt, H225PublicTypeOfNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* PublicPartyNumber */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225PublicPartyNumber {
+ H225PublicTypeOfNumber publicTypeOfNumber;
+ H225NumberDigits publicNumberDigits;
+} H225PublicPartyNumber;
+
+EXTERN int asn1PE_H225PublicPartyNumber (OOCTXT* pctxt, H225PublicPartyNumber* pvalue);
+
+EXTERN int asn1PD_H225PublicPartyNumber (OOCTXT* pctxt, H225PublicPartyNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* PrivateTypeOfNumber */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225PrivateTypeOfNumber_unknown 1
+#define T_H225PrivateTypeOfNumber_level2RegionalNumber 2
+#define T_H225PrivateTypeOfNumber_level1RegionalNumber 3
+#define T_H225PrivateTypeOfNumber_pISNSpecificNumber 4
+#define T_H225PrivateTypeOfNumber_localNumber 5
+#define T_H225PrivateTypeOfNumber_abbreviatedNumber 6
+#define T_H225PrivateTypeOfNumber_extElem1 7
+
+typedef struct EXTERN H225PrivateTypeOfNumber {
+ int t;
+} H225PrivateTypeOfNumber;
+
+EXTERN int asn1PE_H225PrivateTypeOfNumber (OOCTXT* pctxt, H225PrivateTypeOfNumber* pvalue);
+
+EXTERN int asn1PD_H225PrivateTypeOfNumber (OOCTXT* pctxt, H225PrivateTypeOfNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* PrivatePartyNumber */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225PrivatePartyNumber {
+ H225PrivateTypeOfNumber privateTypeOfNumber;
+ H225NumberDigits privateNumberDigits;
+} H225PrivatePartyNumber;
+
+EXTERN int asn1PE_H225PrivatePartyNumber (OOCTXT* pctxt, H225PrivatePartyNumber* pvalue);
+
+EXTERN int asn1PD_H225PrivatePartyNumber (OOCTXT* pctxt, H225PrivatePartyNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* PartyNumber */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225PartyNumber_e164Number 1
+#define T_H225PartyNumber_dataPartyNumber 2
+#define T_H225PartyNumber_telexPartyNumber 3
+#define T_H225PartyNumber_privateNumber 4
+#define T_H225PartyNumber_nationalStandardPartyNumber 5
+#define T_H225PartyNumber_extElem1 6
+
+typedef struct EXTERN H225PartyNumber {
+ int t;
+ union {
+ /* t = 1 */
+ H225PublicPartyNumber *e164Number;
+ /* t = 2 */
+ H225NumberDigits dataPartyNumber;
+ /* t = 3 */
+ H225NumberDigits telexPartyNumber;
+ /* t = 4 */
+ H225PrivatePartyNumber *privateNumber;
+ /* t = 5 */
+ H225NumberDigits nationalStandardPartyNumber;
+ /* t = 6 */
+ } u;
+} H225PartyNumber;
+
+EXTERN int asn1PE_H225PartyNumber (OOCTXT* pctxt, H225PartyNumber* pvalue);
+
+EXTERN int asn1PD_H225PartyNumber (OOCTXT* pctxt, H225PartyNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM_system_id */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225ANSI_41_UIM_system_id_sid 1
+#define T_H225ANSI_41_UIM_system_id_mid 2
+#define T_H225ANSI_41_UIM_system_id_extElem1 3
+
+typedef struct EXTERN H225ANSI_41_UIM_system_id {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1IA5String sid;
+ /* t = 2 */
+ ASN1IA5String mid;
+ /* t = 3 */
+ } u;
+} H225ANSI_41_UIM_system_id;
+
+EXTERN int asn1PE_H225ANSI_41_UIM_system_id (OOCTXT* pctxt, H225ANSI_41_UIM_system_id* pvalue);
+
+EXTERN int asn1PD_H225ANSI_41_UIM_system_id (OOCTXT* pctxt, H225ANSI_41_UIM_system_id* pvalue);
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM_systemMyTypeCode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ANSI_41_UIM_systemMyTypeCode {
+ ASN1UINT numocts;
+ ASN1OCTET data[1];
+} H225ANSI_41_UIM_systemMyTypeCode;
+
+EXTERN int asn1PE_H225ANSI_41_UIM_systemMyTypeCode (OOCTXT* pctxt, H225ANSI_41_UIM_systemMyTypeCode* pvalue);
+
+EXTERN int asn1PD_H225ANSI_41_UIM_systemMyTypeCode (OOCTXT* pctxt, H225ANSI_41_UIM_systemMyTypeCode* pvalue);
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM_systemAccessType */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ANSI_41_UIM_systemAccessType {
+ ASN1UINT numocts;
+ ASN1OCTET data[1];
+} H225ANSI_41_UIM_systemAccessType;
+
+EXTERN int asn1PE_H225ANSI_41_UIM_systemAccessType (OOCTXT* pctxt, H225ANSI_41_UIM_systemAccessType* pvalue);
+
+EXTERN int asn1PD_H225ANSI_41_UIM_systemAccessType (OOCTXT* pctxt, H225ANSI_41_UIM_systemAccessType* pvalue);
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM_qualificationInformationCode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ANSI_41_UIM_qualificationInformationCode {
+ ASN1UINT numocts;
+ ASN1OCTET data[1];
+} H225ANSI_41_UIM_qualificationInformationCode;
+
+EXTERN int asn1PE_H225ANSI_41_UIM_qualificationInformationCode (OOCTXT* pctxt, H225ANSI_41_UIM_qualificationInformationCode* pvalue);
+
+EXTERN int asn1PD_H225ANSI_41_UIM_qualificationInformationCode (OOCTXT* pctxt, H225ANSI_41_UIM_qualificationInformationCode* pvalue);
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ANSI_41_UIM {
+ struct {
+ unsigned imsiPresent : 1;
+ unsigned minPresent : 1;
+ unsigned mdnPresent : 1;
+ unsigned msisdnPresent : 1;
+ unsigned esnPresent : 1;
+ unsigned mscidPresent : 1;
+ unsigned systemMyTypeCodePresent : 1;
+ unsigned systemAccessTypePresent : 1;
+ unsigned qualificationInformationCodePresent : 1;
+ unsigned sesnPresent : 1;
+ unsigned socPresent : 1;
+ } m;
+ ASN1IA5String imsi;
+ ASN1IA5String min;
+ ASN1IA5String mdn;
+ ASN1IA5String msisdn;
+ ASN1IA5String esn;
+ ASN1IA5String mscid;
+ H225ANSI_41_UIM_system_id system_id;
+ H225ANSI_41_UIM_systemMyTypeCode systemMyTypeCode;
+ H225ANSI_41_UIM_systemAccessType systemAccessType;
+ H225ANSI_41_UIM_qualificationInformationCode qualificationInformationCode;
+ ASN1IA5String sesn;
+ ASN1IA5String soc;
+} H225ANSI_41_UIM;
+
+EXTERN int asn1PE_H225ANSI_41_UIM (OOCTXT* pctxt, H225ANSI_41_UIM* pvalue);
+
+EXTERN int asn1PD_H225ANSI_41_UIM (OOCTXT* pctxt, H225ANSI_41_UIM* pvalue);
+
+/**************************************************************/
+/* */
+/* GSM_UIM_tmsi */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GSM_UIM_tmsi {
+ ASN1UINT numocts;
+ ASN1OCTET data[4];
+} H225GSM_UIM_tmsi;
+
+EXTERN int asn1PE_H225GSM_UIM_tmsi (OOCTXT* pctxt, H225GSM_UIM_tmsi* pvalue);
+
+EXTERN int asn1PD_H225GSM_UIM_tmsi (OOCTXT* pctxt, H225GSM_UIM_tmsi* pvalue);
+
+/**************************************************************/
+/* */
+/* GSM_UIM */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GSM_UIM {
+ struct {
+ unsigned imsiPresent : 1;
+ unsigned tmsiPresent : 1;
+ unsigned msisdnPresent : 1;
+ unsigned imeiPresent : 1;
+ unsigned hplmnPresent : 1;
+ unsigned vplmnPresent : 1;
+ } m;
+ ASN1IA5String imsi;
+ H225GSM_UIM_tmsi tmsi;
+ ASN1IA5String msisdn;
+ ASN1IA5String imei;
+ ASN1IA5String hplmn;
+ ASN1IA5String vplmn;
+} H225GSM_UIM;
+
+EXTERN int asn1PE_H225GSM_UIM (OOCTXT* pctxt, H225GSM_UIM* pvalue);
+
+EXTERN int asn1PD_H225GSM_UIM (OOCTXT* pctxt, H225GSM_UIM* pvalue);
+
+/**************************************************************/
+/* */
+/* MobileUIM */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225MobileUIM_ansi_41_uim 1
+#define T_H225MobileUIM_gsm_uim 2
+#define T_H225MobileUIM_extElem1 3
+
+typedef struct EXTERN H225MobileUIM {
+ int t;
+ union {
+ /* t = 1 */
+ H225ANSI_41_UIM *ansi_41_uim;
+ /* t = 2 */
+ H225GSM_UIM *gsm_uim;
+ /* t = 3 */
+ } u;
+} H225MobileUIM;
+
+EXTERN int asn1PE_H225MobileUIM (OOCTXT* pctxt, H225MobileUIM* pvalue);
+
+EXTERN int asn1PD_H225MobileUIM (OOCTXT* pctxt, H225MobileUIM* pvalue);
+
+/**************************************************************/
+/* */
+/* AliasAddress */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225AliasAddress_dialedDigits 1
+#define T_H225AliasAddress_h323_ID 2
+#define T_H225AliasAddress_url_ID 3
+#define T_H225AliasAddress_transportID 4
+#define T_H225AliasAddress_email_ID 5
+#define T_H225AliasAddress_partyNumber 6
+#define T_H225AliasAddress_mobileUIM 7
+#define T_H225AliasAddress_extElem1 8
+
+typedef struct EXTERN H225AliasAddress {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1IA5String dialedDigits;
+ /* t = 2 */
+ ASN1BMPString h323_ID;
+ /* t = 3 */
+ ASN1IA5String url_ID;
+ /* t = 4 */
+ H225TransportAddress *transportID;
+ /* t = 5 */
+ ASN1IA5String email_ID;
+ /* t = 6 */
+ H225PartyNumber *partyNumber;
+ /* t = 7 */
+ H225MobileUIM *mobileUIM;
+ /* t = 8 */
+ } u;
+} H225AliasAddress;
+
+EXTERN int asn1PE_H225AliasAddress (OOCTXT* pctxt, H225AliasAddress* pvalue);
+
+EXTERN int asn1PD_H225AliasAddress (OOCTXT* pctxt, H225AliasAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* Content_compound */
+/* */
+/**************************************************************/
+
+/* List of H225EnumeratedParameter */
+typedef DList H225Content_compound;
+
+EXTERN int asn1PE_H225Content_compound (OOCTXT* pctxt, H225Content_compound* pvalue);
+
+EXTERN int asn1PD_H225Content_compound (OOCTXT* pctxt, H225Content_compound* pvalue);
+
+/**************************************************************/
+/* */
+/* Content_nested */
+/* */
+/**************************************************************/
+
+/* List of H225GenericData */
+typedef DList H225Content_nested;
+
+EXTERN int asn1PE_H225Content_nested (OOCTXT* pctxt, H225Content_nested* pvalue);
+
+EXTERN int asn1PD_H225Content_nested (OOCTXT* pctxt, H225Content_nested* pvalue);
+
+/**************************************************************/
+/* */
+/* Content */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225Content_raw 1
+#define T_H225Content_text 2
+#define T_H225Content_unicode 3
+#define T_H225Content_bool_ 4
+#define T_H225Content_number8 5
+#define T_H225Content_number16 6
+#define T_H225Content_number32 7
+#define T_H225Content_id 8
+#define T_H225Content_alias 9
+#define T_H225Content_transport 10
+#define T_H225Content_compound 11
+#define T_H225Content_nested 12
+#define T_H225Content_extElem1 13
+
+typedef struct EXTERN H225Content {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1DynOctStr *raw;
+ /* t = 2 */
+ ASN1IA5String text;
+ /* t = 3 */
+ ASN1BMPString unicode;
+ /* t = 4 */
+ ASN1BOOL bool_;
+ /* t = 5 */
+ ASN1UINT8 number8;
+ /* t = 6 */
+ ASN1USINT number16;
+ /* t = 7 */
+ ASN1UINT number32;
+ /* t = 8 */
+ H225GenericIdentifier *id;
+ /* t = 9 */
+ H225AliasAddress *alias;
+ /* t = 10 */
+ H225TransportAddress *transport;
+ /* t = 11 */
+ H225Content_compound *compound;
+ /* t = 12 */
+ H225Content_nested *nested;
+ /* t = 13 */
+ } u;
+} H225Content;
+
+EXTERN int asn1PE_H225Content (OOCTXT* pctxt, H225Content* pvalue);
+
+EXTERN int asn1PD_H225Content (OOCTXT* pctxt, H225Content* pvalue);
+
+/**************************************************************/
+/* */
+/* EnumeratedParameter */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225EnumeratedParameter {
+ struct {
+ unsigned contentPresent : 1;
+ } m;
+ H225GenericIdentifier id;
+ H225Content content;
+} H225EnumeratedParameter;
+
+EXTERN int asn1PE_H225EnumeratedParameter (OOCTXT* pctxt, H225EnumeratedParameter* pvalue);
+
+EXTERN int asn1PD_H225EnumeratedParameter (OOCTXT* pctxt, H225EnumeratedParameter* pvalue);
+
+/**************************************************************/
+/* */
+/* GenericData_parameters */
+/* */
+/**************************************************************/
+
+/* List of H225EnumeratedParameter */
+typedef DList H225GenericData_parameters;
+
+EXTERN int asn1PE_H225GenericData_parameters (OOCTXT* pctxt, H225GenericData_parameters* pvalue);
+
+EXTERN int asn1PD_H225GenericData_parameters (OOCTXT* pctxt, H225GenericData_parameters* pvalue);
+
+/**************************************************************/
+/* */
+/* GenericData */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GenericData {
+ struct {
+ unsigned parametersPresent : 1;
+ } m;
+ H225GenericIdentifier id;
+ H225GenericData_parameters parameters;
+} H225GenericData;
+
+EXTERN int asn1PE_H225GenericData (OOCTXT* pctxt, H225GenericData* pvalue);
+
+EXTERN int asn1PD_H225GenericData (OOCTXT* pctxt, H225GenericData* pvalue);
+
+/**************************************************************/
+/* */
+/* FeatureDescriptor */
+/* */
+/**************************************************************/
+
+typedef H225GenericData H225FeatureDescriptor;
+
+EXTERN int asn1PE_H225FeatureDescriptor (OOCTXT* pctxt, H225FeatureDescriptor* pvalue);
+
+EXTERN int asn1PD_H225FeatureDescriptor (OOCTXT* pctxt, H225FeatureDescriptor* pvalue);
+
+/**************************************************************/
+/* */
+/* FastStartToken */
+/* */
+/**************************************************************/
+
+typedef H235ClearToken H225FastStartToken;
+
+EXTERN int asn1PE_H225FastStartToken (OOCTXT* pctxt, H225FastStartToken* pvalue);
+
+EXTERN int asn1PD_H225FastStartToken (OOCTXT* pctxt, H225FastStartToken* pvalue);
+
+/**************************************************************/
+/* */
+/* EncodedFastStartToken */
+/* */
+/**************************************************************/
+
+typedef ASN1OpenType H225EncodedFastStartToken;
+
+EXTERN int asn1PE_H225EncodedFastStartToken (OOCTXT* pctxt, H225EncodedFastStartToken value);
+
+EXTERN int asn1PD_H225EncodedFastStartToken (OOCTXT* pctxt, H225EncodedFastStartToken* pvalue);
+
+/**************************************************************/
+/* */
+/* H323_UserInformation_user_data_user_information */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H323_UserInformation_user_data_user_information {
+ ASN1UINT numocts;
+ ASN1OCTET data[131];
+} H225H323_UserInformation_user_data_user_information;
+
+EXTERN int asn1PE_H225H323_UserInformation_user_data_user_information (OOCTXT* pctxt, H225H323_UserInformation_user_data_user_information* pvalue);
+
+EXTERN int asn1PD_H225H323_UserInformation_user_data_user_information (OOCTXT* pctxt, H225H323_UserInformation_user_data_user_information* pvalue);
+
+/**************************************************************/
+/* */
+/* EndpointType_set */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225EndpointType_set {
+ ASN1UINT numbits;
+ ASN1OCTET data[4];
+} H225EndpointType_set;
+
+EXTERN int asn1PE_H225EndpointType_set (OOCTXT* pctxt, H225EndpointType_set* pvalue);
+
+EXTERN int asn1PD_H225EndpointType_set (OOCTXT* pctxt, H225EndpointType_set* pvalue);
+
+/**************************************************************/
+/* */
+/* VendorIdentifier_productId */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225VendorIdentifier_productId {
+ ASN1UINT numocts;
+ ASN1OCTET data[256];
+} H225VendorIdentifier_productId;
+
+EXTERN int asn1PE_H225VendorIdentifier_productId (OOCTXT* pctxt, H225VendorIdentifier_productId* pvalue);
+
+EXTERN int asn1PD_H225VendorIdentifier_productId (OOCTXT* pctxt, H225VendorIdentifier_productId* pvalue);
+
+/**************************************************************/
+/* */
+/* VendorIdentifier_versionId */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225VendorIdentifier_versionId {
+ ASN1UINT numocts;
+ ASN1OCTET data[256];
+} H225VendorIdentifier_versionId;
+
+EXTERN int asn1PE_H225VendorIdentifier_versionId (OOCTXT* pctxt, H225VendorIdentifier_versionId* pvalue);
+
+EXTERN int asn1PD_H225VendorIdentifier_versionId (OOCTXT* pctxt, H225VendorIdentifier_versionId* pvalue);
+
+/**************************************************************/
+/* */
+/* CicInfo_cic_element */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CicInfo_cic_element {
+ ASN1UINT numocts;
+ ASN1OCTET data[4];
+} H225CicInfo_cic_element;
+
+EXTERN int asn1PE_H225CicInfo_cic_element (OOCTXT* pctxt, H225CicInfo_cic_element* pvalue);
+
+EXTERN int asn1PD_H225CicInfo_cic_element (OOCTXT* pctxt, H225CicInfo_cic_element* pvalue);
+
+/**************************************************************/
+/* */
+/* CicInfo_pointCode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CicInfo_pointCode {
+ ASN1UINT numocts;
+ ASN1OCTET data[5];
+} H225CicInfo_pointCode;
+
+EXTERN int asn1PE_H225CicInfo_pointCode (OOCTXT* pctxt, H225CicInfo_pointCode* pvalue);
+
+EXTERN int asn1PD_H225CicInfo_pointCode (OOCTXT* pctxt, H225CicInfo_pointCode* pvalue);
+
+/**************************************************************/
+/* */
+/* CarrierInfo_carrierIdentificationCode */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CarrierInfo_carrierIdentificationCode {
+ ASN1UINT numocts;
+ ASN1OCTET data[4];
+} H225CarrierInfo_carrierIdentificationCode;
+
+EXTERN int asn1PE_H225CarrierInfo_carrierIdentificationCode (OOCTXT* pctxt, H225CarrierInfo_carrierIdentificationCode* pvalue);
+
+EXTERN int asn1PD_H225CarrierInfo_carrierIdentificationCode (OOCTXT* pctxt, H225CarrierInfo_carrierIdentificationCode* pvalue);
+
+/**************************************************************/
+/* */
+/* CallTerminationCause_releaseCompleteCauseIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CallTerminationCause_releaseCompleteCauseIE {
+ ASN1UINT numocts;
+ ASN1OCTET data[32];
+} H225CallTerminationCause_releaseCompleteCauseIE;
+
+EXTERN int asn1PE_H225CallTerminationCause_releaseCompleteCauseIE (OOCTXT* pctxt, H225CallTerminationCause_releaseCompleteCauseIE* pvalue);
+
+EXTERN int asn1PD_H225CallTerminationCause_releaseCompleteCauseIE (OOCTXT* pctxt, H225CallTerminationCause_releaseCompleteCauseIE* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225AliasAddress */
+/* */
+/**************************************************************/
+
+/* List of H225AliasAddress */
+typedef DList H225_SeqOfH225AliasAddress;
+
+EXTERN int asn1PE_H225_SeqOfH225AliasAddress (OOCTXT* pctxt, H225_SeqOfH225AliasAddress* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225AliasAddress (OOCTXT* pctxt, H225_SeqOfH225AliasAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* VendorIdentifier */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225VendorIdentifier {
+ struct {
+ unsigned productIdPresent : 1;
+ unsigned versionIdPresent : 1;
+ unsigned enterpriseNumberPresent : 1;
+ } m;
+ H225H221NonStandard vendor;
+ H225VendorIdentifier_productId productId;
+ H225VendorIdentifier_versionId versionId;
+ ASN1OBJID enterpriseNumber;
+} H225VendorIdentifier;
+
+EXTERN int asn1PE_H225VendorIdentifier (OOCTXT* pctxt, H225VendorIdentifier* pvalue);
+
+EXTERN int asn1PD_H225VendorIdentifier (OOCTXT* pctxt, H225VendorIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* GatekeeperInfo */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GatekeeperInfo {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+} H225GatekeeperInfo;
+
+EXTERN int asn1PE_H225GatekeeperInfo (OOCTXT* pctxt, H225GatekeeperInfo* pvalue);
+
+EXTERN int asn1PD_H225GatekeeperInfo (OOCTXT* pctxt, H225GatekeeperInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* DataRate */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225DataRate {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned channelMultiplierPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225BandWidth channelRate;
+ ASN1USINT channelMultiplier;
+} H225DataRate;
+
+EXTERN int asn1PE_H225DataRate (OOCTXT* pctxt, H225DataRate* pvalue);
+
+EXTERN int asn1PD_H225DataRate (OOCTXT* pctxt, H225DataRate* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225DataRate */
+/* */
+/**************************************************************/
+
+/* List of H225DataRate */
+typedef DList H225_SeqOfH225DataRate;
+
+EXTERN int asn1PE_H225_SeqOfH225DataRate (OOCTXT* pctxt, H225_SeqOfH225DataRate* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225DataRate (OOCTXT* pctxt, H225_SeqOfH225DataRate* pvalue);
+
+/**************************************************************/
+/* */
+/* SupportedPrefix */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225SupportedPrefix {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225AliasAddress prefix;
+} H225SupportedPrefix;
+
+EXTERN int asn1PE_H225SupportedPrefix (OOCTXT* pctxt, H225SupportedPrefix* pvalue);
+
+EXTERN int asn1PD_H225SupportedPrefix (OOCTXT* pctxt, H225SupportedPrefix* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225SupportedPrefix */
+/* */
+/**************************************************************/
+
+/* List of H225SupportedPrefix */
+typedef DList H225_SeqOfH225SupportedPrefix;
+
+EXTERN int asn1PE_H225_SeqOfH225SupportedPrefix (OOCTXT* pctxt, H225_SeqOfH225SupportedPrefix* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225SupportedPrefix (OOCTXT* pctxt, H225_SeqOfH225SupportedPrefix* pvalue);
+
+/**************************************************************/
+/* */
+/* H310Caps */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H310Caps {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned dataRatesSupportedPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225DataRate dataRatesSupported;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+} H225H310Caps;
+
+EXTERN int asn1PE_H225H310Caps (OOCTXT* pctxt, H225H310Caps* pvalue);
+
+EXTERN int asn1PD_H225H310Caps (OOCTXT* pctxt, H225H310Caps* pvalue);
+
+/**************************************************************/
+/* */
+/* H320Caps */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H320Caps {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned dataRatesSupportedPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225DataRate dataRatesSupported;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+} H225H320Caps;
+
+EXTERN int asn1PE_H225H320Caps (OOCTXT* pctxt, H225H320Caps* pvalue);
+
+EXTERN int asn1PD_H225H320Caps (OOCTXT* pctxt, H225H320Caps* pvalue);
+
+/**************************************************************/
+/* */
+/* H321Caps */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H321Caps {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned dataRatesSupportedPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225DataRate dataRatesSupported;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+} H225H321Caps;
+
+EXTERN int asn1PE_H225H321Caps (OOCTXT* pctxt, H225H321Caps* pvalue);
+
+EXTERN int asn1PD_H225H321Caps (OOCTXT* pctxt, H225H321Caps* pvalue);
+
+/**************************************************************/
+/* */
+/* H322Caps */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H322Caps {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned dataRatesSupportedPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225DataRate dataRatesSupported;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+} H225H322Caps;
+
+EXTERN int asn1PE_H225H322Caps (OOCTXT* pctxt, H225H322Caps* pvalue);
+
+EXTERN int asn1PD_H225H322Caps (OOCTXT* pctxt, H225H322Caps* pvalue);
+
+/**************************************************************/
+/* */
+/* H323Caps */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H323Caps {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned dataRatesSupportedPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225DataRate dataRatesSupported;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+} H225H323Caps;
+
+EXTERN int asn1PE_H225H323Caps (OOCTXT* pctxt, H225H323Caps* pvalue);
+
+EXTERN int asn1PD_H225H323Caps (OOCTXT* pctxt, H225H323Caps* pvalue);
+
+/**************************************************************/
+/* */
+/* H324Caps */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H324Caps {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned dataRatesSupportedPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225DataRate dataRatesSupported;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+} H225H324Caps;
+
+EXTERN int asn1PE_H225H324Caps (OOCTXT* pctxt, H225H324Caps* pvalue);
+
+EXTERN int asn1PD_H225H324Caps (OOCTXT* pctxt, H225H324Caps* pvalue);
+
+/**************************************************************/
+/* */
+/* VoiceCaps */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225VoiceCaps {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned dataRatesSupportedPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225DataRate dataRatesSupported;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+} H225VoiceCaps;
+
+EXTERN int asn1PE_H225VoiceCaps (OOCTXT* pctxt, H225VoiceCaps* pvalue);
+
+EXTERN int asn1PD_H225VoiceCaps (OOCTXT* pctxt, H225VoiceCaps* pvalue);
+
+/**************************************************************/
+/* */
+/* T120OnlyCaps */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225T120OnlyCaps {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned dataRatesSupportedPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225DataRate dataRatesSupported;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+} H225T120OnlyCaps;
+
+EXTERN int asn1PE_H225T120OnlyCaps (OOCTXT* pctxt, H225T120OnlyCaps* pvalue);
+
+EXTERN int asn1PD_H225T120OnlyCaps (OOCTXT* pctxt, H225T120OnlyCaps* pvalue);
+
+/**************************************************************/
+/* */
+/* NonStandardProtocol */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225NonStandardProtocol {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned dataRatesSupportedPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225DataRate dataRatesSupported;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+} H225NonStandardProtocol;
+
+EXTERN int asn1PE_H225NonStandardProtocol (OOCTXT* pctxt, H225NonStandardProtocol* pvalue);
+
+EXTERN int asn1PD_H225NonStandardProtocol (OOCTXT* pctxt, H225NonStandardProtocol* pvalue);
+
+/**************************************************************/
+/* */
+/* T38FaxAnnexbOnlyCaps */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225T38FaxAnnexbOnlyCaps {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned dataRatesSupportedPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225DataRate dataRatesSupported;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+ H245DataProtocolCapability t38FaxProtocol;
+ H245T38FaxProfile t38FaxProfile;
+} H225T38FaxAnnexbOnlyCaps;
+
+EXTERN int asn1PE_H225T38FaxAnnexbOnlyCaps (OOCTXT* pctxt, H225T38FaxAnnexbOnlyCaps* pvalue);
+
+EXTERN int asn1PD_H225T38FaxAnnexbOnlyCaps (OOCTXT* pctxt, H225T38FaxAnnexbOnlyCaps* pvalue);
+
+/**************************************************************/
+/* */
+/* SIPCaps */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225SIPCaps {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned dataRatesSupportedPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225DataRate dataRatesSupported;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+} H225SIPCaps;
+
+EXTERN int asn1PE_H225SIPCaps (OOCTXT* pctxt, H225SIPCaps* pvalue);
+
+EXTERN int asn1PD_H225SIPCaps (OOCTXT* pctxt, H225SIPCaps* pvalue);
+
+/**************************************************************/
+/* */
+/* SupportedProtocols */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225SupportedProtocols_nonStandardData 1
+#define T_H225SupportedProtocols_h310 2
+#define T_H225SupportedProtocols_h320 3
+#define T_H225SupportedProtocols_h321 4
+#define T_H225SupportedProtocols_h322 5
+#define T_H225SupportedProtocols_h323 6
+#define T_H225SupportedProtocols_h324 7
+#define T_H225SupportedProtocols_voice 8
+#define T_H225SupportedProtocols_t120_only 9
+#define T_H225SupportedProtocols_nonStandardProtocol 10
+#define T_H225SupportedProtocols_t38FaxAnnexbOnly 11
+#define T_H225SupportedProtocols_sip 12
+#define T_H225SupportedProtocols_extElem1 13
+
+typedef struct EXTERN H225SupportedProtocols {
+ int t;
+ union {
+ /* t = 1 */
+ H225NonStandardParameter *nonStandardData;
+ /* t = 2 */
+ H225H310Caps *h310;
+ /* t = 3 */
+ H225H320Caps *h320;
+ /* t = 4 */
+ H225H321Caps *h321;
+ /* t = 5 */
+ H225H322Caps *h322;
+ /* t = 6 */
+ H225H323Caps *h323;
+ /* t = 7 */
+ H225H324Caps *h324;
+ /* t = 8 */
+ H225VoiceCaps *voice;
+ /* t = 9 */
+ H225T120OnlyCaps *t120_only;
+ /* t = 10 */
+ H225NonStandardProtocol *nonStandardProtocol;
+ /* t = 11 */
+ H225T38FaxAnnexbOnlyCaps *t38FaxAnnexbOnly;
+ /* t = 12 */
+ H225SIPCaps *sip;
+ /* t = 13 */
+ } u;
+} H225SupportedProtocols;
+
+EXTERN int asn1PE_H225SupportedProtocols (OOCTXT* pctxt, H225SupportedProtocols* pvalue);
+
+EXTERN int asn1PD_H225SupportedProtocols (OOCTXT* pctxt, H225SupportedProtocols* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225SupportedProtocols */
+/* */
+/**************************************************************/
+
+/* List of H225SupportedProtocols */
+typedef DList H225_SeqOfH225SupportedProtocols;
+
+EXTERN int asn1PE_H225_SeqOfH225SupportedProtocols (OOCTXT* pctxt, H225_SeqOfH225SupportedProtocols* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225SupportedProtocols (OOCTXT* pctxt, H225_SeqOfH225SupportedProtocols* pvalue);
+
+/**************************************************************/
+/* */
+/* GatewayInfo */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GatewayInfo {
+ struct {
+ unsigned protocolPresent : 1;
+ unsigned nonStandardDataPresent : 1;
+ } m;
+ H225_SeqOfH225SupportedProtocols protocol;
+ H225NonStandardParameter nonStandardData;
+} H225GatewayInfo;
+
+EXTERN int asn1PE_H225GatewayInfo (OOCTXT* pctxt, H225GatewayInfo* pvalue);
+
+EXTERN int asn1PD_H225GatewayInfo (OOCTXT* pctxt, H225GatewayInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* McuInfo */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225McuInfo {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned protocolPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225SupportedProtocols protocol;
+} H225McuInfo;
+
+EXTERN int asn1PE_H225McuInfo (OOCTXT* pctxt, H225McuInfo* pvalue);
+
+EXTERN int asn1PD_H225McuInfo (OOCTXT* pctxt, H225McuInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* TerminalInfo */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TerminalInfo {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+} H225TerminalInfo;
+
+EXTERN int asn1PE_H225TerminalInfo (OOCTXT* pctxt, H225TerminalInfo* pvalue);
+
+EXTERN int asn1PD_H225TerminalInfo (OOCTXT* pctxt, H225TerminalInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* TunnelledProtocolAlternateIdentifier */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TunnelledProtocolAlternateIdentifier {
+ struct {
+ unsigned protocolVariantPresent : 1;
+ } m;
+ ASN1IA5String protocolType;
+ ASN1IA5String protocolVariant;
+} H225TunnelledProtocolAlternateIdentifier;
+
+EXTERN int asn1PE_H225TunnelledProtocolAlternateIdentifier (OOCTXT* pctxt, H225TunnelledProtocolAlternateIdentifier* pvalue);
+
+EXTERN int asn1PD_H225TunnelledProtocolAlternateIdentifier (OOCTXT* pctxt, H225TunnelledProtocolAlternateIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* TunnelledProtocol_id */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225TunnelledProtocol_id_tunnelledProtocolObjectID 1
+#define T_H225TunnelledProtocol_id_tunnelledProtocolAlternateID 2
+#define T_H225TunnelledProtocol_id_extElem1 3
+
+typedef struct EXTERN H225TunnelledProtocol_id {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1OBJID *tunnelledProtocolObjectID;
+ /* t = 2 */
+ H225TunnelledProtocolAlternateIdentifier *tunnelledProtocolAlternateID;
+ /* t = 3 */
+ } u;
+} H225TunnelledProtocol_id;
+
+EXTERN int asn1PE_H225TunnelledProtocol_id (OOCTXT* pctxt, H225TunnelledProtocol_id* pvalue);
+
+EXTERN int asn1PD_H225TunnelledProtocol_id (OOCTXT* pctxt, H225TunnelledProtocol_id* pvalue);
+
+/**************************************************************/
+/* */
+/* TunnelledProtocol */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TunnelledProtocol {
+ struct {
+ unsigned subIdentifierPresent : 1;
+ } m;
+ H225TunnelledProtocol_id id;
+ ASN1IA5String subIdentifier;
+} H225TunnelledProtocol;
+
+EXTERN int asn1PE_H225TunnelledProtocol (OOCTXT* pctxt, H225TunnelledProtocol* pvalue);
+
+EXTERN int asn1PD_H225TunnelledProtocol (OOCTXT* pctxt, H225TunnelledProtocol* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225TunnelledProtocol */
+/* */
+/**************************************************************/
+
+/* List of H225TunnelledProtocol */
+typedef DList H225_SeqOfH225TunnelledProtocol;
+
+EXTERN int asn1PE_H225_SeqOfH225TunnelledProtocol (OOCTXT* pctxt, H225_SeqOfH225TunnelledProtocol* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225TunnelledProtocol (OOCTXT* pctxt, H225_SeqOfH225TunnelledProtocol* pvalue);
+
+/**************************************************************/
+/* */
+/* EndpointType */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225EndpointType {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned vendorPresent : 1;
+ unsigned gatekeeperPresent : 1;
+ unsigned gatewayPresent : 1;
+ unsigned mcuPresent : 1;
+ unsigned terminalPresent : 1;
+ unsigned setPresent : 1;
+ unsigned supportedTunnelledProtocolsPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225VendorIdentifier vendor;
+ H225GatekeeperInfo gatekeeper;
+ H225GatewayInfo gateway;
+ H225McuInfo mcu;
+ H225TerminalInfo terminal;
+ ASN1BOOL mc;
+ ASN1BOOL undefinedNode;
+ H225EndpointType_set set;
+ H225_SeqOfH225TunnelledProtocol supportedTunnelledProtocols;
+} H225EndpointType;
+
+EXTERN int asn1PE_H225EndpointType (OOCTXT* pctxt, H225EndpointType* pvalue);
+
+EXTERN int asn1PD_H225EndpointType (OOCTXT* pctxt, H225EndpointType* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225CallReferenceValue */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225_SeqOfH225CallReferenceValue {
+ ASN1UINT n;
+ H225CallReferenceValue *elem;
+} H225_SeqOfH225CallReferenceValue;
+
+EXTERN int asn1PE_H225_SeqOfH225CallReferenceValue (OOCTXT* pctxt, H225_SeqOfH225CallReferenceValue* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225CallReferenceValue (OOCTXT* pctxt, H225_SeqOfH225CallReferenceValue* pvalue);
+
+/**************************************************************/
+/* */
+/* Setup_UUIE_conferenceGoal */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225Setup_UUIE_conferenceGoal_create 1
+#define T_H225Setup_UUIE_conferenceGoal_join 2
+#define T_H225Setup_UUIE_conferenceGoal_invite 3
+#define T_H225Setup_UUIE_conferenceGoal_capability_negotiation 4
+#define T_H225Setup_UUIE_conferenceGoal_callIndependentSupplementaryService 5
+#define T_H225Setup_UUIE_conferenceGoal_extElem1 6
+
+typedef struct EXTERN H225Setup_UUIE_conferenceGoal {
+ int t;
+} H225Setup_UUIE_conferenceGoal;
+
+EXTERN int asn1PE_H225Setup_UUIE_conferenceGoal (OOCTXT* pctxt, H225Setup_UUIE_conferenceGoal* pvalue);
+
+EXTERN int asn1PD_H225Setup_UUIE_conferenceGoal (OOCTXT* pctxt, H225Setup_UUIE_conferenceGoal* pvalue);
+
+/**************************************************************/
+/* */
+/* Q954Details */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Q954Details {
+ ASN1BOOL conferenceCalling;
+ ASN1BOOL threePartyService;
+} H225Q954Details;
+
+EXTERN int asn1PE_H225Q954Details (OOCTXT* pctxt, H225Q954Details* pvalue);
+
+EXTERN int asn1PD_H225Q954Details (OOCTXT* pctxt, H225Q954Details* pvalue);
+
+/**************************************************************/
+/* */
+/* QseriesOptions */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225QseriesOptions {
+ ASN1BOOL q932Full;
+ ASN1BOOL q951Full;
+ ASN1BOOL q952Full;
+ ASN1BOOL q953Full;
+ ASN1BOOL q955Full;
+ ASN1BOOL q956Full;
+ ASN1BOOL q957Full;
+ H225Q954Details q954Info;
+} H225QseriesOptions;
+
+EXTERN int asn1PE_H225QseriesOptions (OOCTXT* pctxt, H225QseriesOptions* pvalue);
+
+EXTERN int asn1PD_H225QseriesOptions (OOCTXT* pctxt, H225QseriesOptions* pvalue);
+
+/**************************************************************/
+/* */
+/* CallType */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225CallType_pointToPoint 1
+#define T_H225CallType_oneToN 2
+#define T_H225CallType_nToOne 3
+#define T_H225CallType_nToN 4
+#define T_H225CallType_extElem1 5
+
+typedef struct EXTERN H225CallType {
+ int t;
+} H225CallType;
+
+EXTERN int asn1PE_H225CallType (OOCTXT* pctxt, H225CallType* pvalue);
+
+EXTERN int asn1PD_H225CallType (OOCTXT* pctxt, H225CallType* pvalue);
+
+/**************************************************************/
+/* */
+/* CallIdentifier */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CallIdentifier {
+ H225GloballyUniqueID guid;
+} H225CallIdentifier;
+
+EXTERN int asn1PE_H225CallIdentifier (OOCTXT* pctxt, H225CallIdentifier* pvalue);
+
+EXTERN int asn1PD_H225CallIdentifier (OOCTXT* pctxt, H225CallIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* SecurityServiceMode */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225SecurityServiceMode_nonStandard 1
+#define T_H225SecurityServiceMode_none 2
+#define T_H225SecurityServiceMode_default_ 3
+#define T_H225SecurityServiceMode_extElem1 4
+
+typedef struct EXTERN H225SecurityServiceMode {
+ int t;
+ union {
+ /* t = 1 */
+ H225NonStandardParameter *nonStandard;
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ } u;
+} H225SecurityServiceMode;
+
+EXTERN int asn1PE_H225SecurityServiceMode (OOCTXT* pctxt, H225SecurityServiceMode* pvalue);
+
+EXTERN int asn1PD_H225SecurityServiceMode (OOCTXT* pctxt, H225SecurityServiceMode* pvalue);
+
+/**************************************************************/
+/* */
+/* SecurityCapabilities */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225SecurityCapabilities {
+ struct {
+ unsigned nonStandardPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandard;
+ H225SecurityServiceMode encryption;
+ H225SecurityServiceMode authenticaton;
+ H225SecurityServiceMode integrity;
+} H225SecurityCapabilities;
+
+EXTERN int asn1PE_H225SecurityCapabilities (OOCTXT* pctxt, H225SecurityCapabilities* pvalue);
+
+EXTERN int asn1PD_H225SecurityCapabilities (OOCTXT* pctxt, H225SecurityCapabilities* pvalue);
+
+/**************************************************************/
+/* */
+/* H245Security */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225H245Security_nonStandard 1
+#define T_H225H245Security_noSecurity 2
+#define T_H225H245Security_tls 3
+#define T_H225H245Security_ipsec 4
+#define T_H225H245Security_extElem1 5
+
+typedef struct EXTERN H225H245Security {
+ int t;
+ union {
+ /* t = 1 */
+ H225NonStandardParameter *nonStandard;
+ /* t = 2 */
+ /* t = 3 */
+ H225SecurityCapabilities *tls;
+ /* t = 4 */
+ H225SecurityCapabilities *ipsec;
+ /* t = 5 */
+ } u;
+} H225H245Security;
+
+EXTERN int asn1PE_H225H245Security (OOCTXT* pctxt, H225H245Security* pvalue);
+
+EXTERN int asn1PD_H225H245Security (OOCTXT* pctxt, H225H245Security* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225H245Security */
+/* */
+/**************************************************************/
+
+/* List of H225H245Security */
+typedef DList H225_SeqOfH225H245Security;
+
+EXTERN int asn1PE_H225_SeqOfH225H245Security (OOCTXT* pctxt, H225_SeqOfH225H245Security* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225H245Security (OOCTXT* pctxt, H225_SeqOfH225H245Security* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225ClearToken */
+/* */
+/**************************************************************/
+
+/* List of H235ClearToken */
+typedef DList H225_SeqOfH225ClearToken;
+
+EXTERN int asn1PE_H225_SeqOfH225ClearToken (OOCTXT* pctxt, H225_SeqOfH225ClearToken* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225ClearToken (OOCTXT* pctxt, H225_SeqOfH225ClearToken* pvalue);
+
+/**************************************************************/
+/* */
+/* CryptoH323Token_cryptoEPPwdHash */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CryptoH323Token_cryptoEPPwdHash {
+ H225AliasAddress alias;
+ H235TimeStamp timeStamp;
+ H235HASHED token;
+} H225CryptoH323Token_cryptoEPPwdHash;
+
+EXTERN int asn1PE_H225CryptoH323Token_cryptoEPPwdHash (OOCTXT* pctxt, H225CryptoH323Token_cryptoEPPwdHash* pvalue);
+
+EXTERN int asn1PD_H225CryptoH323Token_cryptoEPPwdHash (OOCTXT* pctxt, H225CryptoH323Token_cryptoEPPwdHash* pvalue);
+
+/**************************************************************/
+/* */
+/* CryptoH323Token_cryptoGKPwdHash */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CryptoH323Token_cryptoGKPwdHash {
+ H225GatekeeperIdentifier gatekeeperId;
+ H235TimeStamp timeStamp;
+ H235HASHED token;
+} H225CryptoH323Token_cryptoGKPwdHash;
+
+EXTERN int asn1PE_H225CryptoH323Token_cryptoGKPwdHash (OOCTXT* pctxt, H225CryptoH323Token_cryptoGKPwdHash* pvalue);
+
+EXTERN int asn1PD_H225CryptoH323Token_cryptoGKPwdHash (OOCTXT* pctxt, H225CryptoH323Token_cryptoGKPwdHash* pvalue);
+
+/**************************************************************/
+/* */
+/* CryptoH323Token_cryptoEPCert */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CryptoH323Token_cryptoEPCert {
+ H235EncodedPwdCertToken toBeSigned;
+ ASN1OBJID algorithmOID;
+ H235Params paramS;
+ ASN1DynBitStr signature;
+} H225CryptoH323Token_cryptoEPCert;
+
+EXTERN int asn1PE_H225CryptoH323Token_cryptoEPCert (OOCTXT* pctxt, H225CryptoH323Token_cryptoEPCert* pvalue);
+
+EXTERN int asn1PD_H225CryptoH323Token_cryptoEPCert (OOCTXT* pctxt, H225CryptoH323Token_cryptoEPCert* pvalue);
+
+/**************************************************************/
+/* */
+/* CryptoH323Token_cryptoGKCert */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CryptoH323Token_cryptoGKCert {
+ H235EncodedPwdCertToken toBeSigned;
+ ASN1OBJID algorithmOID;
+ H235Params paramS;
+ ASN1DynBitStr signature;
+} H225CryptoH323Token_cryptoGKCert;
+
+EXTERN int asn1PE_H225CryptoH323Token_cryptoGKCert (OOCTXT* pctxt, H225CryptoH323Token_cryptoGKCert* pvalue);
+
+EXTERN int asn1PD_H225CryptoH323Token_cryptoGKCert (OOCTXT* pctxt, H225CryptoH323Token_cryptoGKCert* pvalue);
+
+/**************************************************************/
+/* */
+/* CryptoH323Token_cryptoFastStart */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CryptoH323Token_cryptoFastStart {
+ H225EncodedFastStartToken toBeSigned;
+ ASN1OBJID algorithmOID;
+ H235Params paramS;
+ ASN1DynBitStr signature;
+} H225CryptoH323Token_cryptoFastStart;
+
+EXTERN int asn1PE_H225CryptoH323Token_cryptoFastStart (OOCTXT* pctxt, H225CryptoH323Token_cryptoFastStart* pvalue);
+
+EXTERN int asn1PD_H225CryptoH323Token_cryptoFastStart (OOCTXT* pctxt, H225CryptoH323Token_cryptoFastStart* pvalue);
+
+/**************************************************************/
+/* */
+/* CryptoH323Token */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225CryptoH323Token_cryptoEPPwdHash 1
+#define T_H225CryptoH323Token_cryptoGKPwdHash 2
+#define T_H225CryptoH323Token_cryptoEPPwdEncr 3
+#define T_H225CryptoH323Token_cryptoGKPwdEncr 4
+#define T_H225CryptoH323Token_cryptoEPCert 5
+#define T_H225CryptoH323Token_cryptoGKCert 6
+#define T_H225CryptoH323Token_cryptoFastStart 7
+#define T_H225CryptoH323Token_nestedcryptoToken 8
+#define T_H225CryptoH323Token_extElem1 9
+
+typedef struct EXTERN H225CryptoH323Token {
+ int t;
+ union {
+ /* t = 1 */
+ H225CryptoH323Token_cryptoEPPwdHash *cryptoEPPwdHash;
+ /* t = 2 */
+ H225CryptoH323Token_cryptoGKPwdHash *cryptoGKPwdHash;
+ /* t = 3 */
+ H235ENCRYPTED *cryptoEPPwdEncr;
+ /* t = 4 */
+ H235ENCRYPTED *cryptoGKPwdEncr;
+ /* t = 5 */
+ H225CryptoH323Token_cryptoEPCert *cryptoEPCert;
+ /* t = 6 */
+ H225CryptoH323Token_cryptoGKCert *cryptoGKCert;
+ /* t = 7 */
+ H225CryptoH323Token_cryptoFastStart *cryptoFastStart;
+ /* t = 8 */
+ H235CryptoToken *nestedcryptoToken;
+ /* t = 9 */
+ } u;
+} H225CryptoH323Token;
+
+EXTERN int asn1PE_H225CryptoH323Token (OOCTXT* pctxt, H225CryptoH323Token* pvalue);
+
+EXTERN int asn1PD_H225CryptoH323Token (OOCTXT* pctxt, H225CryptoH323Token* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225CryptoH323Token */
+/* */
+/**************************************************************/
+
+/* List of H225CryptoH323Token */
+typedef DList H225_SeqOfH225CryptoH323Token;
+
+EXTERN int asn1PE_H225_SeqOfH225CryptoH323Token (OOCTXT* pctxt, H225_SeqOfH225CryptoH323Token* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225CryptoH323Token (OOCTXT* pctxt, H225_SeqOfH225CryptoH323Token* pvalue);
+
+/**************************************************************/
+/* */
+/* Setup_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Setup_UUIE_fastStart {
+ ASN1UINT n;
+ ASN1DynOctStr *elem;
+} H225Setup_UUIE_fastStart;
+
+EXTERN int asn1PE_H225Setup_UUIE_fastStart (OOCTXT* pctxt, H225Setup_UUIE_fastStart* pvalue);
+
+EXTERN int asn1PD_H225Setup_UUIE_fastStart (OOCTXT* pctxt, H225Setup_UUIE_fastStart* pvalue);
+
+/**************************************************************/
+/* */
+/* ScnConnectionType */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225ScnConnectionType_unknown 1
+#define T_H225ScnConnectionType_bChannel 2
+#define T_H225ScnConnectionType_hybrid2x64 3
+#define T_H225ScnConnectionType_hybrid384 4
+#define T_H225ScnConnectionType_hybrid1536 5
+#define T_H225ScnConnectionType_hybrid1920 6
+#define T_H225ScnConnectionType_multirate 7
+#define T_H225ScnConnectionType_extElem1 8
+
+typedef struct EXTERN H225ScnConnectionType {
+ int t;
+} H225ScnConnectionType;
+
+EXTERN int asn1PE_H225ScnConnectionType (OOCTXT* pctxt, H225ScnConnectionType* pvalue);
+
+EXTERN int asn1PD_H225ScnConnectionType (OOCTXT* pctxt, H225ScnConnectionType* pvalue);
+
+/**************************************************************/
+/* */
+/* ScnConnectionAggregation */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225ScnConnectionAggregation_auto_ 1
+#define T_H225ScnConnectionAggregation_none 2
+#define T_H225ScnConnectionAggregation_h221 3
+#define T_H225ScnConnectionAggregation_bonded_mode1 4
+#define T_H225ScnConnectionAggregation_bonded_mode2 5
+#define T_H225ScnConnectionAggregation_bonded_mode3 6
+#define T_H225ScnConnectionAggregation_extElem1 7
+
+typedef struct EXTERN H225ScnConnectionAggregation {
+ int t;
+} H225ScnConnectionAggregation;
+
+EXTERN int asn1PE_H225ScnConnectionAggregation (OOCTXT* pctxt, H225ScnConnectionAggregation* pvalue);
+
+EXTERN int asn1PD_H225ScnConnectionAggregation (OOCTXT* pctxt, H225ScnConnectionAggregation* pvalue);
+
+/**************************************************************/
+/* */
+/* Setup_UUIE_connectionParameters */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Setup_UUIE_connectionParameters {
+ H225ScnConnectionType connectionType;
+ ASN1USINT numberOfScnConnections;
+ H225ScnConnectionAggregation connectionAggregation;
+} H225Setup_UUIE_connectionParameters;
+
+EXTERN int asn1PE_H225Setup_UUIE_connectionParameters (OOCTXT* pctxt, H225Setup_UUIE_connectionParameters* pvalue);
+
+EXTERN int asn1PD_H225Setup_UUIE_connectionParameters (OOCTXT* pctxt, H225Setup_UUIE_connectionParameters* pvalue);
+
+/**************************************************************/
+/* */
+/* Setup_UUIE_language */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Setup_UUIE_language {
+ ASN1UINT n;
+ ASN1IA5String *elem;
+} H225Setup_UUIE_language;
+
+EXTERN int asn1PE_H225Setup_UUIE_language (OOCTXT* pctxt, H225Setup_UUIE_language* pvalue);
+
+EXTERN int asn1PD_H225Setup_UUIE_language (OOCTXT* pctxt, H225Setup_UUIE_language* pvalue);
+
+/**************************************************************/
+/* */
+/* PresentationIndicator */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225PresentationIndicator_presentationAllowed 1
+#define T_H225PresentationIndicator_presentationRestricted 2
+#define T_H225PresentationIndicator_addressNotAvailable 3
+#define T_H225PresentationIndicator_extElem1 4
+
+typedef struct EXTERN H225PresentationIndicator {
+ int t;
+} H225PresentationIndicator;
+
+EXTERN int asn1PE_H225PresentationIndicator (OOCTXT* pctxt, H225PresentationIndicator* pvalue);
+
+EXTERN int asn1PD_H225PresentationIndicator (OOCTXT* pctxt, H225PresentationIndicator* pvalue);
+
+/**************************************************************/
+/* */
+/* CallCreditServiceControl_billingMode */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225CallCreditServiceControl_billingMode_credit 1
+#define T_H225CallCreditServiceControl_billingMode_debit 2
+#define T_H225CallCreditServiceControl_billingMode_extElem1 3
+
+typedef struct EXTERN H225CallCreditServiceControl_billingMode {
+ int t;
+} H225CallCreditServiceControl_billingMode;
+
+EXTERN int asn1PE_H225CallCreditServiceControl_billingMode (OOCTXT* pctxt, H225CallCreditServiceControl_billingMode* pvalue);
+
+EXTERN int asn1PD_H225CallCreditServiceControl_billingMode (OOCTXT* pctxt, H225CallCreditServiceControl_billingMode* pvalue);
+
+/**************************************************************/
+/* */
+/* CallCreditServiceControl_callStartingPoint */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225CallCreditServiceControl_callStartingPoint_alerting 1
+#define T_H225CallCreditServiceControl_callStartingPoint_connect 2
+#define T_H225CallCreditServiceControl_callStartingPoint_extElem1 3
+
+typedef struct EXTERN H225CallCreditServiceControl_callStartingPoint {
+ int t;
+} H225CallCreditServiceControl_callStartingPoint;
+
+EXTERN int asn1PE_H225CallCreditServiceControl_callStartingPoint (OOCTXT* pctxt, H225CallCreditServiceControl_callStartingPoint* pvalue);
+
+EXTERN int asn1PD_H225CallCreditServiceControl_callStartingPoint (OOCTXT* pctxt, H225CallCreditServiceControl_callStartingPoint* pvalue);
+
+/**************************************************************/
+/* */
+/* CallCreditServiceControl */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CallCreditServiceControl {
+ struct {
+ unsigned amountStringPresent : 1;
+ unsigned billingModePresent : 1;
+ unsigned callDurationLimitPresent : 1;
+ unsigned enforceCallDurationLimitPresent : 1;
+ unsigned callStartingPointPresent : 1;
+ } m;
+ ASN1BMPString amountString;
+ H225CallCreditServiceControl_billingMode billingMode;
+ ASN1UINT callDurationLimit;
+ ASN1BOOL enforceCallDurationLimit;
+ H225CallCreditServiceControl_callStartingPoint callStartingPoint;
+} H225CallCreditServiceControl;
+
+EXTERN int asn1PE_H225CallCreditServiceControl (OOCTXT* pctxt, H225CallCreditServiceControl* pvalue);
+
+EXTERN int asn1PD_H225CallCreditServiceControl (OOCTXT* pctxt, H225CallCreditServiceControl* pvalue);
+
+/**************************************************************/
+/* */
+/* ServiceControlDescriptor */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225ServiceControlDescriptor_url 1
+#define T_H225ServiceControlDescriptor_signal 2
+#define T_H225ServiceControlDescriptor_nonStandard 3
+#define T_H225ServiceControlDescriptor_callCreditServiceControl 4
+#define T_H225ServiceControlDescriptor_extElem1 5
+
+typedef struct EXTERN H225ServiceControlDescriptor {
+ int t;
+ union {
+ /* t = 1 */
+ ASN1IA5String url;
+ /* t = 2 */
+ H225H248SignalsDescriptor *signal;
+ /* t = 3 */
+ H225NonStandardParameter *nonStandard;
+ /* t = 4 */
+ H225CallCreditServiceControl *callCreditServiceControl;
+ /* t = 5 */
+ } u;
+} H225ServiceControlDescriptor;
+
+EXTERN int asn1PE_H225ServiceControlDescriptor (OOCTXT* pctxt, H225ServiceControlDescriptor* pvalue);
+
+EXTERN int asn1PD_H225ServiceControlDescriptor (OOCTXT* pctxt, H225ServiceControlDescriptor* pvalue);
+
+/**************************************************************/
+/* */
+/* ServiceControlSession_reason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225ServiceControlSession_reason_open 1
+#define T_H225ServiceControlSession_reason_refresh 2
+#define T_H225ServiceControlSession_reason_close 3
+#define T_H225ServiceControlSession_reason_extElem1 4
+
+typedef struct EXTERN H225ServiceControlSession_reason {
+ int t;
+} H225ServiceControlSession_reason;
+
+EXTERN int asn1PE_H225ServiceControlSession_reason (OOCTXT* pctxt, H225ServiceControlSession_reason* pvalue);
+
+EXTERN int asn1PD_H225ServiceControlSession_reason (OOCTXT* pctxt, H225ServiceControlSession_reason* pvalue);
+
+/**************************************************************/
+/* */
+/* ServiceControlSession */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ServiceControlSession {
+ struct {
+ unsigned contentsPresent : 1;
+ } m;
+ ASN1UINT8 sessionId;
+ H225ServiceControlDescriptor contents;
+ H225ServiceControlSession_reason reason;
+} H225ServiceControlSession;
+
+EXTERN int asn1PE_H225ServiceControlSession (OOCTXT* pctxt, H225ServiceControlSession* pvalue);
+
+EXTERN int asn1PD_H225ServiceControlSession (OOCTXT* pctxt, H225ServiceControlSession* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225ServiceControlSession */
+/* */
+/**************************************************************/
+
+/* List of H225ServiceControlSession */
+typedef DList H225_SeqOfH225ServiceControlSession;
+
+EXTERN int asn1PE_H225_SeqOfH225ServiceControlSession (OOCTXT* pctxt, H225_SeqOfH225ServiceControlSession* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225ServiceControlSession (OOCTXT* pctxt, H225_SeqOfH225ServiceControlSession* pvalue);
+
+/**************************************************************/
+/* */
+/* CarrierInfo */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CarrierInfo {
+ struct {
+ unsigned carrierIdentificationCodePresent : 1;
+ unsigned carrierNamePresent : 1;
+ } m;
+ H225CarrierInfo_carrierIdentificationCode carrierIdentificationCode;
+ ASN1IA5String carrierName;
+} H225CarrierInfo;
+
+EXTERN int asn1PE_H225CarrierInfo (OOCTXT* pctxt, H225CarrierInfo* pvalue);
+
+EXTERN int asn1PD_H225CarrierInfo (OOCTXT* pctxt, H225CarrierInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* CallsAvailable */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CallsAvailable {
+ struct {
+ unsigned groupPresent : 1;
+ unsigned carrierPresent : 1;
+ } m;
+ ASN1UINT calls;
+ ASN1IA5String group;
+ H225CarrierInfo carrier;
+} H225CallsAvailable;
+
+EXTERN int asn1PE_H225CallsAvailable (OOCTXT* pctxt, H225CallsAvailable* pvalue);
+
+EXTERN int asn1PD_H225CallsAvailable (OOCTXT* pctxt, H225CallsAvailable* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225CallsAvailable */
+/* */
+/**************************************************************/
+
+/* List of H225CallsAvailable */
+typedef DList H225_SeqOfH225CallsAvailable;
+
+EXTERN int asn1PE_H225_SeqOfH225CallsAvailable (OOCTXT* pctxt, H225_SeqOfH225CallsAvailable* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225CallsAvailable (OOCTXT* pctxt, H225_SeqOfH225CallsAvailable* pvalue);
+
+/**************************************************************/
+/* */
+/* CallCapacityInfo */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CallCapacityInfo {
+ struct {
+ unsigned voiceGwCallsAvailablePresent : 1;
+ unsigned h310GwCallsAvailablePresent : 1;
+ unsigned h320GwCallsAvailablePresent : 1;
+ unsigned h321GwCallsAvailablePresent : 1;
+ unsigned h322GwCallsAvailablePresent : 1;
+ unsigned h323GwCallsAvailablePresent : 1;
+ unsigned h324GwCallsAvailablePresent : 1;
+ unsigned t120OnlyGwCallsAvailablePresent : 1;
+ unsigned t38FaxAnnexbOnlyGwCallsAvailablePresent : 1;
+ unsigned terminalCallsAvailablePresent : 1;
+ unsigned mcuCallsAvailablePresent : 1;
+ unsigned sipGwCallsAvailablePresent : 1;
+ } m;
+ H225_SeqOfH225CallsAvailable voiceGwCallsAvailable;
+ H225_SeqOfH225CallsAvailable h310GwCallsAvailable;
+ H225_SeqOfH225CallsAvailable h320GwCallsAvailable;
+ H225_SeqOfH225CallsAvailable h321GwCallsAvailable;
+ H225_SeqOfH225CallsAvailable h322GwCallsAvailable;
+ H225_SeqOfH225CallsAvailable h323GwCallsAvailable;
+ H225_SeqOfH225CallsAvailable h324GwCallsAvailable;
+ H225_SeqOfH225CallsAvailable t120OnlyGwCallsAvailable;
+ H225_SeqOfH225CallsAvailable t38FaxAnnexbOnlyGwCallsAvailable;
+ H225_SeqOfH225CallsAvailable terminalCallsAvailable;
+ H225_SeqOfH225CallsAvailable mcuCallsAvailable;
+ H225_SeqOfH225CallsAvailable sipGwCallsAvailable;
+} H225CallCapacityInfo;
+
+EXTERN int asn1PE_H225CallCapacityInfo (OOCTXT* pctxt, H225CallCapacityInfo* pvalue);
+
+EXTERN int asn1PD_H225CallCapacityInfo (OOCTXT* pctxt, H225CallCapacityInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* CallCapacity */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CallCapacity {
+ struct {
+ unsigned maximumCallCapacityPresent : 1;
+ unsigned currentCallCapacityPresent : 1;
+ } m;
+ H225CallCapacityInfo maximumCallCapacity;
+ H225CallCapacityInfo currentCallCapacity;
+} H225CallCapacity;
+
+EXTERN int asn1PE_H225CallCapacity (OOCTXT* pctxt, H225CallCapacity* pvalue);
+
+EXTERN int asn1PD_H225CallCapacity (OOCTXT* pctxt, H225CallCapacity* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225CicInfo_cic_element */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225_SeqOfH225CicInfo_cic_element {
+ ASN1UINT n;
+ H225CicInfo_cic_element *elem;
+} H225_SeqOfH225CicInfo_cic_element;
+
+EXTERN int asn1PE_H225_SeqOfH225CicInfo_cic_element (OOCTXT* pctxt, H225_SeqOfH225CicInfo_cic_element* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225CicInfo_cic_element (OOCTXT* pctxt, H225_SeqOfH225CicInfo_cic_element* pvalue);
+
+/**************************************************************/
+/* */
+/* CicInfo */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CicInfo {
+ H225_SeqOfH225CicInfo_cic_element cic;
+ H225CicInfo_pointCode pointCode;
+} H225CicInfo;
+
+EXTERN int asn1PE_H225CicInfo (OOCTXT* pctxt, H225CicInfo* pvalue);
+
+EXTERN int asn1PD_H225CicInfo (OOCTXT* pctxt, H225CicInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* GroupID_member */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GroupID_member {
+ ASN1UINT n;
+ ASN1USINT *elem;
+} H225GroupID_member;
+
+EXTERN int asn1PE_H225GroupID_member (OOCTXT* pctxt, H225GroupID_member* pvalue);
+
+EXTERN int asn1PD_H225GroupID_member (OOCTXT* pctxt, H225GroupID_member* pvalue);
+
+/**************************************************************/
+/* */
+/* GroupID */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GroupID {
+ struct {
+ unsigned memberPresent : 1;
+ } m;
+ H225GroupID_member member;
+ ASN1IA5String group;
+} H225GroupID;
+
+EXTERN int asn1PE_H225GroupID (OOCTXT* pctxt, H225GroupID* pvalue);
+
+EXTERN int asn1PD_H225GroupID (OOCTXT* pctxt, H225GroupID* pvalue);
+
+/**************************************************************/
+/* */
+/* CircuitIdentifier */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CircuitIdentifier {
+ struct {
+ unsigned cicPresent : 1;
+ unsigned groupPresent : 1;
+ unsigned carrierPresent : 1;
+ } m;
+ H225CicInfo cic;
+ H225GroupID group;
+ H225CarrierInfo carrier;
+} H225CircuitIdentifier;
+
+EXTERN int asn1PE_H225CircuitIdentifier (OOCTXT* pctxt, H225CircuitIdentifier* pvalue);
+
+EXTERN int asn1PD_H225CircuitIdentifier (OOCTXT* pctxt, H225CircuitIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225GenericData */
+/* */
+/**************************************************************/
+
+/* List of H225GenericData */
+typedef DList H225_SeqOfH225GenericData;
+
+EXTERN int asn1PE_H225_SeqOfH225GenericData (OOCTXT* pctxt, H225_SeqOfH225GenericData* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225GenericData (OOCTXT* pctxt, H225_SeqOfH225GenericData* pvalue);
+
+/**************************************************************/
+/* */
+/* CircuitInfo */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CircuitInfo {
+ struct {
+ unsigned sourceCircuitIDPresent : 1;
+ unsigned destinationCircuitIDPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225CircuitIdentifier sourceCircuitID;
+ H225CircuitIdentifier destinationCircuitID;
+ H225_SeqOfH225GenericData genericData;
+} H225CircuitInfo;
+
+EXTERN int asn1PE_H225CircuitInfo (OOCTXT* pctxt, H225CircuitInfo* pvalue);
+
+EXTERN int asn1PD_H225CircuitInfo (OOCTXT* pctxt, H225CircuitInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225FeatureDescriptor */
+/* */
+/**************************************************************/
+
+/* List of H225FeatureDescriptor */
+typedef DList H225_SeqOfH225FeatureDescriptor;
+
+EXTERN int asn1PE_H225_SeqOfH225FeatureDescriptor (OOCTXT* pctxt, H225_SeqOfH225FeatureDescriptor* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225FeatureDescriptor (OOCTXT* pctxt, H225_SeqOfH225FeatureDescriptor* pvalue);
+
+/**************************************************************/
+/* */
+/* Setup_UUIE_parallelH245Control */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Setup_UUIE_parallelH245Control {
+ ASN1UINT n;
+ ASN1DynOctStr *elem;
+} H225Setup_UUIE_parallelH245Control;
+
+EXTERN int asn1PE_H225Setup_UUIE_parallelH245Control (OOCTXT* pctxt, H225Setup_UUIE_parallelH245Control* pvalue);
+
+EXTERN int asn1PD_H225Setup_UUIE_parallelH245Control (OOCTXT* pctxt, H225Setup_UUIE_parallelH245Control* pvalue);
+
+/**************************************************************/
+/* */
+/* ExtendedAliasAddress */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ExtendedAliasAddress {
+ struct {
+ unsigned presentationIndicatorPresent : 1;
+ unsigned screeningIndicatorPresent : 1;
+ } m;
+ H225AliasAddress address;
+ H225PresentationIndicator presentationIndicator;
+ H225ScreeningIndicator screeningIndicator;
+} H225ExtendedAliasAddress;
+
+EXTERN int asn1PE_H225ExtendedAliasAddress (OOCTXT* pctxt, H225ExtendedAliasAddress* pvalue);
+
+EXTERN int asn1PD_H225ExtendedAliasAddress (OOCTXT* pctxt, H225ExtendedAliasAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225ExtendedAliasAddress */
+/* */
+/**************************************************************/
+
+/* List of H225ExtendedAliasAddress */
+typedef DList H225_SeqOfH225ExtendedAliasAddress;
+
+EXTERN int asn1PE_H225_SeqOfH225ExtendedAliasAddress (OOCTXT* pctxt, H225_SeqOfH225ExtendedAliasAddress* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225ExtendedAliasAddress (OOCTXT* pctxt, H225_SeqOfH225ExtendedAliasAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* Setup_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Setup_UUIE {
+ struct {
+ unsigned h245AddressPresent : 1;
+ unsigned sourceAddressPresent : 1;
+ unsigned destinationAddressPresent : 1;
+ unsigned destCallSignalAddressPresent : 1;
+ unsigned destExtraCallInfoPresent : 1;
+ unsigned destExtraCRVPresent : 1;
+ unsigned callServicesPresent : 1;
+ unsigned sourceCallSignalAddressPresent : 1;
+ unsigned remoteExtensionAddressPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned h245SecurityCapabilityPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned fastStartPresent : 1;
+ unsigned mediaWaitForConnectPresent : 1;
+ unsigned canOverlapSendPresent : 1;
+ unsigned endpointIdentifierPresent : 1;
+ unsigned multipleCallsPresent : 1;
+ unsigned maintainConnectionPresent : 1;
+ unsigned connectionParametersPresent : 1;
+ unsigned languagePresent : 1;
+ unsigned presentationIndicatorPresent : 1;
+ unsigned screeningIndicatorPresent : 1;
+ unsigned serviceControlPresent : 1;
+ unsigned symmetricOperationRequiredPresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned circuitInfoPresent : 1;
+ unsigned desiredProtocolsPresent : 1;
+ unsigned neededFeaturesPresent : 1;
+ unsigned desiredFeaturesPresent : 1;
+ unsigned supportedFeaturesPresent : 1;
+ unsigned parallelH245ControlPresent : 1;
+ unsigned additionalSourceAddressesPresent : 1;
+ unsigned hopCountPresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225TransportAddress h245Address;
+ H225_SeqOfH225AliasAddress sourceAddress;
+ H225EndpointType sourceInfo;
+ H225_SeqOfH225AliasAddress destinationAddress;
+ H225TransportAddress destCallSignalAddress;
+ H225_SeqOfH225AliasAddress destExtraCallInfo;
+ H225_SeqOfH225CallReferenceValue destExtraCRV;
+ ASN1BOOL activeMC;
+ H225ConferenceIdentifier conferenceID;
+ H225Setup_UUIE_conferenceGoal conferenceGoal;
+ H225QseriesOptions callServices;
+ H225CallType callType;
+ H225TransportAddress sourceCallSignalAddress;
+ H225AliasAddress remoteExtensionAddress;
+ H225CallIdentifier callIdentifier;
+ H225_SeqOfH225H245Security h245SecurityCapability;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225Setup_UUIE_fastStart fastStart;
+ ASN1BOOL mediaWaitForConnect;
+ ASN1BOOL canOverlapSend;
+ H225EndpointIdentifier endpointIdentifier;
+ ASN1BOOL multipleCalls;
+ ASN1BOOL maintainConnection;
+ H225Setup_UUIE_connectionParameters connectionParameters;
+ H225Setup_UUIE_language language;
+ H225PresentationIndicator presentationIndicator;
+ H225ScreeningIndicator screeningIndicator;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+ H225CallCapacity capacity;
+ H225CircuitInfo circuitInfo;
+ H225_SeqOfH225SupportedProtocols desiredProtocols;
+ H225_SeqOfH225FeatureDescriptor neededFeatures;
+ H225_SeqOfH225FeatureDescriptor desiredFeatures;
+ H225_SeqOfH225FeatureDescriptor supportedFeatures;
+ H225Setup_UUIE_parallelH245Control parallelH245Control;
+ H225_SeqOfH225ExtendedAliasAddress additionalSourceAddresses;
+ ASN1UINT8 hopCount;
+} H225Setup_UUIE;
+
+EXTERN int asn1PE_H225Setup_UUIE (OOCTXT* pctxt, H225Setup_UUIE* pvalue);
+
+EXTERN int asn1PD_H225Setup_UUIE (OOCTXT* pctxt, H225Setup_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* CallProceeding_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CallProceeding_UUIE_fastStart {
+ ASN1UINT n;
+ ASN1DynOctStr *elem;
+} H225CallProceeding_UUIE_fastStart;
+
+EXTERN int asn1PE_H225CallProceeding_UUIE_fastStart (OOCTXT* pctxt, H225CallProceeding_UUIE_fastStart* pvalue);
+
+EXTERN int asn1PD_H225CallProceeding_UUIE_fastStart (OOCTXT* pctxt, H225CallProceeding_UUIE_fastStart* pvalue);
+
+/**************************************************************/
+/* */
+/* FeatureSet */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225FeatureSet {
+ struct {
+ unsigned neededFeaturesPresent : 1;
+ unsigned desiredFeaturesPresent : 1;
+ unsigned supportedFeaturesPresent : 1;
+ } m;
+ ASN1BOOL replacementFeatureSet;
+ H225_SeqOfH225FeatureDescriptor neededFeatures;
+ H225_SeqOfH225FeatureDescriptor desiredFeatures;
+ H225_SeqOfH225FeatureDescriptor supportedFeatures;
+} H225FeatureSet;
+
+EXTERN int asn1PE_H225FeatureSet (OOCTXT* pctxt, H225FeatureSet* pvalue);
+
+EXTERN int asn1PD_H225FeatureSet (OOCTXT* pctxt, H225FeatureSet* pvalue);
+
+/**************************************************************/
+/* */
+/* CallProceeding_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CallProceeding_UUIE {
+ struct {
+ unsigned h245AddressPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned h245SecurityModePresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned fastStartPresent : 1;
+ unsigned multipleCallsPresent : 1;
+ unsigned maintainConnectionPresent : 1;
+ unsigned fastConnectRefusedPresent : 1;
+ unsigned featureSetPresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225EndpointType destinationInfo;
+ H225TransportAddress h245Address;
+ H225CallIdentifier callIdentifier;
+ H225H245Security h245SecurityMode;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225CallProceeding_UUIE_fastStart fastStart;
+ ASN1BOOL multipleCalls;
+ ASN1BOOL maintainConnection;
+ H225FeatureSet featureSet;
+} H225CallProceeding_UUIE;
+
+EXTERN int asn1PE_H225CallProceeding_UUIE (OOCTXT* pctxt, H225CallProceeding_UUIE* pvalue);
+
+EXTERN int asn1PD_H225CallProceeding_UUIE (OOCTXT* pctxt, H225CallProceeding_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* Connect_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Connect_UUIE_fastStart {
+ ASN1UINT n;
+ ASN1DynOctStr *elem;
+} H225Connect_UUIE_fastStart;
+
+EXTERN int asn1PE_H225Connect_UUIE_fastStart (OOCTXT* pctxt, H225Connect_UUIE_fastStart* pvalue);
+
+EXTERN int asn1PD_H225Connect_UUIE_fastStart (OOCTXT* pctxt, H225Connect_UUIE_fastStart* pvalue);
+
+/**************************************************************/
+/* */
+/* Connect_UUIE_language */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Connect_UUIE_language {
+ ASN1UINT n;
+ ASN1IA5String *elem;
+} H225Connect_UUIE_language;
+
+EXTERN int asn1PE_H225Connect_UUIE_language (OOCTXT* pctxt, H225Connect_UUIE_language* pvalue);
+
+EXTERN int asn1PD_H225Connect_UUIE_language (OOCTXT* pctxt, H225Connect_UUIE_language* pvalue);
+
+/**************************************************************/
+/* */
+/* Connect_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Connect_UUIE {
+ struct {
+ unsigned h245AddressPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned h245SecurityModePresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned fastStartPresent : 1;
+ unsigned multipleCallsPresent : 1;
+ unsigned maintainConnectionPresent : 1;
+ unsigned languagePresent : 1;
+ unsigned connectedAddressPresent : 1;
+ unsigned presentationIndicatorPresent : 1;
+ unsigned screeningIndicatorPresent : 1;
+ unsigned fastConnectRefusedPresent : 1;
+ unsigned serviceControlPresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned featureSetPresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225TransportAddress h245Address;
+ H225EndpointType destinationInfo;
+ H225ConferenceIdentifier conferenceID;
+ H225CallIdentifier callIdentifier;
+ H225H245Security h245SecurityMode;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225Connect_UUIE_fastStart fastStart;
+ ASN1BOOL multipleCalls;
+ ASN1BOOL maintainConnection;
+ H225Connect_UUIE_language language;
+ H225_SeqOfH225AliasAddress connectedAddress;
+ H225PresentationIndicator presentationIndicator;
+ H225ScreeningIndicator screeningIndicator;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+ H225CallCapacity capacity;
+ H225FeatureSet featureSet;
+} H225Connect_UUIE;
+
+EXTERN int asn1PE_H225Connect_UUIE (OOCTXT* pctxt, H225Connect_UUIE* pvalue);
+
+EXTERN int asn1PD_H225Connect_UUIE (OOCTXT* pctxt, H225Connect_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* Alerting_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Alerting_UUIE_fastStart {
+ ASN1UINT n;
+ ASN1DynOctStr *elem;
+} H225Alerting_UUIE_fastStart;
+
+EXTERN int asn1PE_H225Alerting_UUIE_fastStart (OOCTXT* pctxt, H225Alerting_UUIE_fastStart* pvalue);
+
+EXTERN int asn1PD_H225Alerting_UUIE_fastStart (OOCTXT* pctxt, H225Alerting_UUIE_fastStart* pvalue);
+
+/**************************************************************/
+/* */
+/* Alerting_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Alerting_UUIE {
+ struct {
+ unsigned h245AddressPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned h245SecurityModePresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned fastStartPresent : 1;
+ unsigned multipleCallsPresent : 1;
+ unsigned maintainConnectionPresent : 1;
+ unsigned alertingAddressPresent : 1;
+ unsigned presentationIndicatorPresent : 1;
+ unsigned screeningIndicatorPresent : 1;
+ unsigned fastConnectRefusedPresent : 1;
+ unsigned serviceControlPresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned featureSetPresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225EndpointType destinationInfo;
+ H225TransportAddress h245Address;
+ H225CallIdentifier callIdentifier;
+ H225H245Security h245SecurityMode;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225Alerting_UUIE_fastStart fastStart;
+ ASN1BOOL multipleCalls;
+ ASN1BOOL maintainConnection;
+ H225_SeqOfH225AliasAddress alertingAddress;
+ H225PresentationIndicator presentationIndicator;
+ H225ScreeningIndicator screeningIndicator;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+ H225CallCapacity capacity;
+ H225FeatureSet featureSet;
+} H225Alerting_UUIE;
+
+EXTERN int asn1PE_H225Alerting_UUIE (OOCTXT* pctxt, H225Alerting_UUIE* pvalue);
+
+EXTERN int asn1PD_H225Alerting_UUIE (OOCTXT* pctxt, H225Alerting_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* Information_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Information_UUIE_fastStart {
+ ASN1UINT n;
+ ASN1DynOctStr *elem;
+} H225Information_UUIE_fastStart;
+
+EXTERN int asn1PE_H225Information_UUIE_fastStart (OOCTXT* pctxt, H225Information_UUIE_fastStart* pvalue);
+
+EXTERN int asn1PD_H225Information_UUIE_fastStart (OOCTXT* pctxt, H225Information_UUIE_fastStart* pvalue);
+
+/**************************************************************/
+/* */
+/* Information_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Information_UUIE {
+ struct {
+ unsigned callIdentifierPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned fastStartPresent : 1;
+ unsigned fastConnectRefusedPresent : 1;
+ unsigned circuitInfoPresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225CallIdentifier callIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225Information_UUIE_fastStart fastStart;
+ H225CircuitInfo circuitInfo;
+} H225Information_UUIE;
+
+EXTERN int asn1PE_H225Information_UUIE (OOCTXT* pctxt, H225Information_UUIE* pvalue);
+
+EXTERN int asn1PD_H225Information_UUIE (OOCTXT* pctxt, H225Information_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* SecurityErrors */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225SecurityErrors_securityWrongSyncTime 1
+#define T_H225SecurityErrors_securityReplay 2
+#define T_H225SecurityErrors_securityWrongGeneralID 3
+#define T_H225SecurityErrors_securityWrongSendersID 4
+#define T_H225SecurityErrors_securityIntegrityFailed 5
+#define T_H225SecurityErrors_securityWrongOID 6
+#define T_H225SecurityErrors_securityDHmismatch 7
+#define T_H225SecurityErrors_securityCertificateExpired 8
+#define T_H225SecurityErrors_securityCertificateDateInvalid 9
+#define T_H225SecurityErrors_securityCertificateRevoked 10
+#define T_H225SecurityErrors_securityCertificateNotReadable 11
+#define T_H225SecurityErrors_securityCertificateSignatureInvalid 12
+#define T_H225SecurityErrors_securityCertificateMissing 13
+#define T_H225SecurityErrors_securityCertificateIncomplete 14
+#define T_H225SecurityErrors_securityUnsupportedCertificateAlgOID 15
+#define T_H225SecurityErrors_securityUnknownCA 16
+#define T_H225SecurityErrors_extElem1 17
+
+typedef struct EXTERN H225SecurityErrors {
+ int t;
+} H225SecurityErrors;
+
+EXTERN int asn1PE_H225SecurityErrors (OOCTXT* pctxt, H225SecurityErrors* pvalue);
+
+EXTERN int asn1PD_H225SecurityErrors (OOCTXT* pctxt, H225SecurityErrors* pvalue);
+
+/**************************************************************/
+/* */
+/* ReleaseCompleteReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225ReleaseCompleteReason_noBandwidth 1
+#define T_H225ReleaseCompleteReason_gatekeeperResources 2
+#define T_H225ReleaseCompleteReason_unreachableDestination 3
+#define T_H225ReleaseCompleteReason_destinationRejection 4
+#define T_H225ReleaseCompleteReason_invalidRevision 5
+#define T_H225ReleaseCompleteReason_noPermission 6
+#define T_H225ReleaseCompleteReason_unreachableGatekeeper 7
+#define T_H225ReleaseCompleteReason_gatewayResources 8
+#define T_H225ReleaseCompleteReason_badFormatAddress 9
+#define T_H225ReleaseCompleteReason_adaptiveBusy 10
+#define T_H225ReleaseCompleteReason_inConf 11
+#define T_H225ReleaseCompleteReason_undefinedReason 12
+#define T_H225ReleaseCompleteReason_facilityCallDeflection 13
+#define T_H225ReleaseCompleteReason_securityDenied 14
+#define T_H225ReleaseCompleteReason_calledPartyNotRegistered 15
+#define T_H225ReleaseCompleteReason_callerNotRegistered 16
+#define T_H225ReleaseCompleteReason_newConnectionNeeded 17
+#define T_H225ReleaseCompleteReason_nonStandardReason 18
+#define T_H225ReleaseCompleteReason_replaceWithConferenceInvite 19
+#define T_H225ReleaseCompleteReason_genericDataReason 20
+#define T_H225ReleaseCompleteReason_neededFeatureNotSupported 21
+#define T_H225ReleaseCompleteReason_tunnelledSignallingRejected 22
+#define T_H225ReleaseCompleteReason_invalidCID 23
+#define T_H225ReleaseCompleteReason_securityError 24
+#define T_H225ReleaseCompleteReason_hopCountExceeded 25
+#define T_H225ReleaseCompleteReason_extElem1 26
+
+typedef struct EXTERN H225ReleaseCompleteReason {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ /* t = 7 */
+ /* t = 8 */
+ /* t = 9 */
+ /* t = 10 */
+ /* t = 11 */
+ /* t = 12 */
+ /* t = 13 */
+ /* t = 14 */
+ /* t = 15 */
+ /* t = 16 */
+ /* t = 17 */
+ /* t = 18 */
+ H225NonStandardParameter *nonStandardReason;
+ /* t = 19 */
+ H225ConferenceIdentifier *replaceWithConferenceInvite;
+ /* t = 20 */
+ /* t = 21 */
+ /* t = 22 */
+ /* t = 23 */
+ /* t = 24 */
+ H225SecurityErrors *securityError;
+ /* t = 25 */
+ /* t = 26 */
+ } u;
+} H225ReleaseCompleteReason;
+
+EXTERN int asn1PE_H225ReleaseCompleteReason (OOCTXT* pctxt, H225ReleaseCompleteReason* pvalue);
+
+EXTERN int asn1PD_H225ReleaseCompleteReason (OOCTXT* pctxt, H225ReleaseCompleteReason* pvalue);
+
+/**************************************************************/
+/* */
+/* ReleaseComplete_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ReleaseComplete_UUIE {
+ struct {
+ unsigned reasonPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned busyAddressPresent : 1;
+ unsigned presentationIndicatorPresent : 1;
+ unsigned screeningIndicatorPresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned serviceControlPresent : 1;
+ unsigned featureSetPresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225ReleaseCompleteReason reason;
+ H225CallIdentifier callIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225_SeqOfH225AliasAddress busyAddress;
+ H225PresentationIndicator presentationIndicator;
+ H225ScreeningIndicator screeningIndicator;
+ H225CallCapacity capacity;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+ H225FeatureSet featureSet;
+} H225ReleaseComplete_UUIE;
+
+EXTERN int asn1PE_H225ReleaseComplete_UUIE (OOCTXT* pctxt, H225ReleaseComplete_UUIE* pvalue);
+
+EXTERN int asn1PD_H225ReleaseComplete_UUIE (OOCTXT* pctxt, H225ReleaseComplete_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* FacilityReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225FacilityReason_routeCallToGatekeeper 1
+#define T_H225FacilityReason_callForwarded 2
+#define T_H225FacilityReason_routeCallToMC 3
+#define T_H225FacilityReason_undefinedReason 4
+#define T_H225FacilityReason_conferenceListChoice 5
+#define T_H225FacilityReason_startH245 6
+#define T_H225FacilityReason_noH245 7
+#define T_H225FacilityReason_newTokens 8
+#define T_H225FacilityReason_featureSetUpdate 9
+#define T_H225FacilityReason_forwardedElements 10
+#define T_H225FacilityReason_transportedInformation 11
+#define T_H225FacilityReason_extElem1 12
+
+typedef struct EXTERN H225FacilityReason {
+ int t;
+} H225FacilityReason;
+
+EXTERN int asn1PE_H225FacilityReason (OOCTXT* pctxt, H225FacilityReason* pvalue);
+
+EXTERN int asn1PD_H225FacilityReason (OOCTXT* pctxt, H225FacilityReason* pvalue);
+
+/**************************************************************/
+/* */
+/* ConferenceList */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ConferenceList {
+ struct {
+ unsigned conferenceIDPresent : 1;
+ unsigned conferenceAliasPresent : 1;
+ unsigned nonStandardDataPresent : 1;
+ } m;
+ H225ConferenceIdentifier conferenceID;
+ H225AliasAddress conferenceAlias;
+ H225NonStandardParameter nonStandardData;
+} H225ConferenceList;
+
+EXTERN int asn1PE_H225ConferenceList (OOCTXT* pctxt, H225ConferenceList* pvalue);
+
+EXTERN int asn1PD_H225ConferenceList (OOCTXT* pctxt, H225ConferenceList* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225ConferenceList */
+/* */
+/**************************************************************/
+
+/* List of H225ConferenceList */
+typedef DList H225_SeqOfH225ConferenceList;
+
+EXTERN int asn1PE_H225_SeqOfH225ConferenceList (OOCTXT* pctxt, H225_SeqOfH225ConferenceList* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225ConferenceList (OOCTXT* pctxt, H225_SeqOfH225ConferenceList* pvalue);
+
+/**************************************************************/
+/* */
+/* Facility_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Facility_UUIE_fastStart {
+ ASN1UINT n;
+ ASN1DynOctStr *elem;
+} H225Facility_UUIE_fastStart;
+
+EXTERN int asn1PE_H225Facility_UUIE_fastStart (OOCTXT* pctxt, H225Facility_UUIE_fastStart* pvalue);
+
+EXTERN int asn1PD_H225Facility_UUIE_fastStart (OOCTXT* pctxt, H225Facility_UUIE_fastStart* pvalue);
+
+/**************************************************************/
+/* */
+/* Facility_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Facility_UUIE {
+ struct {
+ unsigned alternativeAddressPresent : 1;
+ unsigned alternativeAliasAddressPresent : 1;
+ unsigned conferenceIDPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned destExtraCallInfoPresent : 1;
+ unsigned remoteExtensionAddressPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned conferencesPresent : 1;
+ unsigned h245AddressPresent : 1;
+ unsigned fastStartPresent : 1;
+ unsigned multipleCallsPresent : 1;
+ unsigned maintainConnectionPresent : 1;
+ unsigned fastConnectRefusedPresent : 1;
+ unsigned serviceControlPresent : 1;
+ unsigned circuitInfoPresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned destinationInfoPresent : 1;
+ unsigned h245SecurityModePresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225TransportAddress alternativeAddress;
+ H225_SeqOfH225AliasAddress alternativeAliasAddress;
+ H225ConferenceIdentifier conferenceID;
+ H225FacilityReason reason;
+ H225CallIdentifier callIdentifier;
+ H225_SeqOfH225AliasAddress destExtraCallInfo;
+ H225AliasAddress remoteExtensionAddress;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225_SeqOfH225ConferenceList conferences;
+ H225TransportAddress h245Address;
+ H225Facility_UUIE_fastStart fastStart;
+ ASN1BOOL multipleCalls;
+ ASN1BOOL maintainConnection;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+ H225CircuitInfo circuitInfo;
+ H225FeatureSet featureSet;
+ H225EndpointType destinationInfo;
+ H225H245Security h245SecurityMode;
+} H225Facility_UUIE;
+
+EXTERN int asn1PE_H225Facility_UUIE (OOCTXT* pctxt, H225Facility_UUIE* pvalue);
+
+EXTERN int asn1PD_H225Facility_UUIE (OOCTXT* pctxt, H225Facility_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* Progress_UUIE_fastStart */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Progress_UUIE_fastStart {
+ ASN1UINT n;
+ ASN1DynOctStr *elem;
+} H225Progress_UUIE_fastStart;
+
+EXTERN int asn1PE_H225Progress_UUIE_fastStart (OOCTXT* pctxt, H225Progress_UUIE_fastStart* pvalue);
+
+EXTERN int asn1PD_H225Progress_UUIE_fastStart (OOCTXT* pctxt, H225Progress_UUIE_fastStart* pvalue);
+
+/**************************************************************/
+/* */
+/* Progress_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Progress_UUIE {
+ struct {
+ unsigned h245AddressPresent : 1;
+ unsigned h245SecurityModePresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned fastStartPresent : 1;
+ unsigned multipleCallsPresent : 1;
+ unsigned maintainConnectionPresent : 1;
+ unsigned fastConnectRefusedPresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225EndpointType destinationInfo;
+ H225TransportAddress h245Address;
+ H225CallIdentifier callIdentifier;
+ H225H245Security h245SecurityMode;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225Progress_UUIE_fastStart fastStart;
+ ASN1BOOL multipleCalls;
+ ASN1BOOL maintainConnection;
+} H225Progress_UUIE;
+
+EXTERN int asn1PE_H225Progress_UUIE (OOCTXT* pctxt, H225Progress_UUIE* pvalue);
+
+EXTERN int asn1PD_H225Progress_UUIE (OOCTXT* pctxt, H225Progress_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* Status_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Status_UUIE {
+ struct {
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225CallIdentifier callIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+} H225Status_UUIE;
+
+EXTERN int asn1PE_H225Status_UUIE (OOCTXT* pctxt, H225Status_UUIE* pvalue);
+
+EXTERN int asn1PD_H225Status_UUIE (OOCTXT* pctxt, H225Status_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* StatusInquiry_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225StatusInquiry_UUIE {
+ struct {
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225CallIdentifier callIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+} H225StatusInquiry_UUIE;
+
+EXTERN int asn1PE_H225StatusInquiry_UUIE (OOCTXT* pctxt, H225StatusInquiry_UUIE* pvalue);
+
+EXTERN int asn1PD_H225StatusInquiry_UUIE (OOCTXT* pctxt, H225StatusInquiry_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* SetupAcknowledge_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225SetupAcknowledge_UUIE {
+ struct {
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225CallIdentifier callIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+} H225SetupAcknowledge_UUIE;
+
+EXTERN int asn1PE_H225SetupAcknowledge_UUIE (OOCTXT* pctxt, H225SetupAcknowledge_UUIE* pvalue);
+
+EXTERN int asn1PD_H225SetupAcknowledge_UUIE (OOCTXT* pctxt, H225SetupAcknowledge_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* Notify_UUIE */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Notify_UUIE {
+ struct {
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ } m;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225CallIdentifier callIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+} H225Notify_UUIE;
+
+EXTERN int asn1PE_H225Notify_UUIE (OOCTXT* pctxt, H225Notify_UUIE* pvalue);
+
+EXTERN int asn1PD_H225Notify_UUIE (OOCTXT* pctxt, H225Notify_UUIE* pvalue);
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU_h323_message_body */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225H323_UU_PDU_h323_message_body_setup 1
+#define T_H225H323_UU_PDU_h323_message_body_callProceeding 2
+#define T_H225H323_UU_PDU_h323_message_body_connect 3
+#define T_H225H323_UU_PDU_h323_message_body_alerting 4
+#define T_H225H323_UU_PDU_h323_message_body_information 5
+#define T_H225H323_UU_PDU_h323_message_body_releaseComplete 6
+#define T_H225H323_UU_PDU_h323_message_body_facility 7
+#define T_H225H323_UU_PDU_h323_message_body_progress 8
+#define T_H225H323_UU_PDU_h323_message_body_empty 9
+#define T_H225H323_UU_PDU_h323_message_body_status 10
+#define T_H225H323_UU_PDU_h323_message_body_statusInquiry 11
+#define T_H225H323_UU_PDU_h323_message_body_setupAcknowledge 12
+#define T_H225H323_UU_PDU_h323_message_body_notify 13
+#define T_H225H323_UU_PDU_h323_message_body_extElem1 14
+
+typedef struct EXTERN H225H323_UU_PDU_h323_message_body {
+ int t;
+ union {
+ /* t = 1 */
+ H225Setup_UUIE *setup;
+ /* t = 2 */
+ H225CallProceeding_UUIE *callProceeding;
+ /* t = 3 */
+ H225Connect_UUIE *connect;
+ /* t = 4 */
+ H225Alerting_UUIE *alerting;
+ /* t = 5 */
+ H225Information_UUIE *information;
+ /* t = 6 */
+ H225ReleaseComplete_UUIE *releaseComplete;
+ /* t = 7 */
+ H225Facility_UUIE *facility;
+ /* t = 8 */
+ H225Progress_UUIE *progress;
+ /* t = 9 */
+ /* t = 10 */
+ H225Status_UUIE *status;
+ /* t = 11 */
+ H225StatusInquiry_UUIE *statusInquiry;
+ /* t = 12 */
+ H225SetupAcknowledge_UUIE *setupAcknowledge;
+ /* t = 13 */
+ H225Notify_UUIE *notify;
+ /* t = 14 */
+ } u;
+} H225H323_UU_PDU_h323_message_body;
+
+EXTERN int asn1PE_H225H323_UU_PDU_h323_message_body (OOCTXT* pctxt, H225H323_UU_PDU_h323_message_body* pvalue);
+
+EXTERN int asn1PD_H225H323_UU_PDU_h323_message_body (OOCTXT* pctxt, H225H323_UU_PDU_h323_message_body* pvalue);
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU_h4501SupplementaryService */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H323_UU_PDU_h4501SupplementaryService {
+ ASN1UINT n;
+ ASN1DynOctStr *elem;
+} H225H323_UU_PDU_h4501SupplementaryService;
+
+EXTERN int asn1PE_H225H323_UU_PDU_h4501SupplementaryService (OOCTXT* pctxt, H225H323_UU_PDU_h4501SupplementaryService* pvalue);
+
+EXTERN int asn1PD_H225H323_UU_PDU_h4501SupplementaryService (OOCTXT* pctxt, H225H323_UU_PDU_h4501SupplementaryService* pvalue);
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU_h245Control */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H323_UU_PDU_h245Control {
+ ASN1UINT n;
+ ASN1DynOctStr *elem;
+} H225H323_UU_PDU_h245Control;
+
+EXTERN int asn1PE_H225H323_UU_PDU_h245Control (OOCTXT* pctxt, H225H323_UU_PDU_h245Control* pvalue);
+
+EXTERN int asn1PD_H225H323_UU_PDU_h245Control (OOCTXT* pctxt, H225H323_UU_PDU_h245Control* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225NonStandardParameter */
+/* */
+/**************************************************************/
+
+/* List of H225NonStandardParameter */
+typedef DList H225_SeqOfH225NonStandardParameter;
+
+EXTERN int asn1PE_H225_SeqOfH225NonStandardParameter (OOCTXT* pctxt, H225_SeqOfH225NonStandardParameter* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225NonStandardParameter (OOCTXT* pctxt, H225_SeqOfH225NonStandardParameter* pvalue);
+
+/**************************************************************/
+/* */
+/* CallLinkage */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CallLinkage {
+ struct {
+ unsigned globalCallIdPresent : 1;
+ unsigned threadIdPresent : 1;
+ } m;
+ H225GloballyUniqueID globalCallId;
+ H225GloballyUniqueID threadId;
+} H225CallLinkage;
+
+EXTERN int asn1PE_H225CallLinkage (OOCTXT* pctxt, H225CallLinkage* pvalue);
+
+EXTERN int asn1PD_H225CallLinkage (OOCTXT* pctxt, H225CallLinkage* pvalue);
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU_tunnelledSignallingMessage_messageContent */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H323_UU_PDU_tunnelledSignallingMessage_messageContent {
+ ASN1UINT n;
+ ASN1DynOctStr *elem;
+} H225H323_UU_PDU_tunnelledSignallingMessage_messageContent;
+
+EXTERN int asn1PE_H225H323_UU_PDU_tunnelledSignallingMessage_messageContent (OOCTXT* pctxt, H225H323_UU_PDU_tunnelledSignallingMessage_messageContent* pvalue);
+
+EXTERN int asn1PD_H225H323_UU_PDU_tunnelledSignallingMessage_messageContent (OOCTXT* pctxt, H225H323_UU_PDU_tunnelledSignallingMessage_messageContent* pvalue);
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU_tunnelledSignallingMessage */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H323_UU_PDU_tunnelledSignallingMessage {
+ struct {
+ unsigned tunnellingRequiredPresent : 1;
+ unsigned nonStandardDataPresent : 1;
+ } m;
+ H225TunnelledProtocol tunnelledProtocolID;
+ H225H323_UU_PDU_tunnelledSignallingMessage_messageContent messageContent;
+ H225NonStandardParameter nonStandardData;
+} H225H323_UU_PDU_tunnelledSignallingMessage;
+
+EXTERN int asn1PE_H225H323_UU_PDU_tunnelledSignallingMessage (OOCTXT* pctxt, H225H323_UU_PDU_tunnelledSignallingMessage* pvalue);
+
+EXTERN int asn1PD_H225H323_UU_PDU_tunnelledSignallingMessage (OOCTXT* pctxt, H225H323_UU_PDU_tunnelledSignallingMessage* pvalue);
+
+/**************************************************************/
+/* */
+/* StimulusControl */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225StimulusControl {
+ struct {
+ unsigned nonStandardPresent : 1;
+ unsigned isTextPresent : 1;
+ unsigned h248MessagePresent : 1;
+ } m;
+ H225NonStandardParameter nonStandard;
+ ASN1DynOctStr h248Message;
+} H225StimulusControl;
+
+EXTERN int asn1PE_H225StimulusControl (OOCTXT* pctxt, H225StimulusControl* pvalue);
+
+EXTERN int asn1PD_H225StimulusControl (OOCTXT* pctxt, H225StimulusControl* pvalue);
+
+/**************************************************************/
+/* */
+/* H323_UU_PDU */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H323_UU_PDU {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned h4501SupplementaryServicePresent : 1;
+ unsigned h245TunnelingPresent : 1;
+ unsigned h245ControlPresent : 1;
+ unsigned nonStandardControlPresent : 1;
+ unsigned callLinkagePresent : 1;
+ unsigned tunnelledSignallingMessagePresent : 1;
+ unsigned provisionalRespToH245TunnelingPresent : 1;
+ unsigned stimulusControlPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225H323_UU_PDU_h323_message_body h323_message_body;
+ H225NonStandardParameter nonStandardData;
+ H225H323_UU_PDU_h4501SupplementaryService h4501SupplementaryService;
+ ASN1BOOL h245Tunneling;
+ H225H323_UU_PDU_h245Control h245Control;
+ H225_SeqOfH225NonStandardParameter nonStandardControl;
+ H225CallLinkage callLinkage;
+ H225H323_UU_PDU_tunnelledSignallingMessage tunnelledSignallingMessage;
+ H225StimulusControl stimulusControl;
+ H225_SeqOfH225GenericData genericData;
+} H225H323_UU_PDU;
+
+EXTERN int asn1PE_H225H323_UU_PDU (OOCTXT* pctxt, H225H323_UU_PDU* pvalue);
+
+EXTERN int asn1PD_H225H323_UU_PDU (OOCTXT* pctxt, H225H323_UU_PDU* pvalue);
+
+/**************************************************************/
+/* */
+/* H323_UserInformation_user_data */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H323_UserInformation_user_data {
+ ASN1UINT8 protocol_discriminator;
+ H225H323_UserInformation_user_data_user_information user_information;
+} H225H323_UserInformation_user_data;
+
+EXTERN int asn1PE_H225H323_UserInformation_user_data (OOCTXT* pctxt, H225H323_UserInformation_user_data* pvalue);
+
+EXTERN int asn1PD_H225H323_UserInformation_user_data (OOCTXT* pctxt, H225H323_UserInformation_user_data* pvalue);
+
+/**************************************************************/
+/* */
+/* H323_UserInformation */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225H323_UserInformation {
+ struct {
+ unsigned user_dataPresent : 1;
+ } m;
+ H225H323_UU_PDU h323_uu_pdu;
+ H225H323_UserInformation_user_data user_data;
+} H225H323_UserInformation;
+
+EXTERN int asn1PE_H225H323_UserInformation (OOCTXT* pctxt, H225H323_UserInformation* pvalue);
+
+EXTERN int asn1PD_H225H323_UserInformation (OOCTXT* pctxt, H225H323_UserInformation* pvalue);
+
+/**************************************************************/
+/* */
+/* AddressPattern_range */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225AddressPattern_range {
+ H225PartyNumber startOfRange;
+ H225PartyNumber endOfRange;
+} H225AddressPattern_range;
+
+EXTERN int asn1PE_H225AddressPattern_range (OOCTXT* pctxt, H225AddressPattern_range* pvalue);
+
+EXTERN int asn1PD_H225AddressPattern_range (OOCTXT* pctxt, H225AddressPattern_range* pvalue);
+
+/**************************************************************/
+/* */
+/* AddressPattern */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225AddressPattern_wildcard 1
+#define T_H225AddressPattern_range 2
+#define T_H225AddressPattern_extElem1 3
+
+typedef struct EXTERN H225AddressPattern {
+ int t;
+ union {
+ /* t = 1 */
+ H225AliasAddress *wildcard;
+ /* t = 2 */
+ H225AddressPattern_range *range;
+ /* t = 3 */
+ } u;
+} H225AddressPattern;
+
+EXTERN int asn1PE_H225AddressPattern (OOCTXT* pctxt, H225AddressPattern* pvalue);
+
+EXTERN int asn1PD_H225AddressPattern (OOCTXT* pctxt, H225AddressPattern* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225TransportAddress */
+/* */
+/**************************************************************/
+
+/* List of H225TransportAddress */
+typedef DList H225_SeqOfH225TransportAddress;
+
+EXTERN int asn1PE_H225_SeqOfH225TransportAddress (OOCTXT* pctxt, H225_SeqOfH225TransportAddress* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225TransportAddress (OOCTXT* pctxt, H225_SeqOfH225TransportAddress* pvalue);
+
+/**************************************************************/
+/* */
+/* AlternateTransportAddresses */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225AlternateTransportAddresses {
+ struct {
+ unsigned annexEPresent : 1;
+ unsigned sctpPresent : 1;
+ } m;
+ H225_SeqOfH225TransportAddress annexE;
+ H225_SeqOfH225TransportAddress sctp;
+} H225AlternateTransportAddresses;
+
+EXTERN int asn1PE_H225AlternateTransportAddresses (OOCTXT* pctxt, H225AlternateTransportAddresses* pvalue);
+
+EXTERN int asn1PD_H225AlternateTransportAddresses (OOCTXT* pctxt, H225AlternateTransportAddresses* pvalue);
+
+/**************************************************************/
+/* */
+/* Endpoint */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225Endpoint {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned aliasAddressPresent : 1;
+ unsigned callSignalAddressPresent : 1;
+ unsigned rasAddressPresent : 1;
+ unsigned endpointTypePresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned priorityPresent : 1;
+ unsigned remoteExtensionAddressPresent : 1;
+ unsigned destExtraCallInfoPresent : 1;
+ unsigned alternateTransportAddressesPresent : 1;
+ unsigned circuitInfoPresent : 1;
+ unsigned featureSetPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225AliasAddress aliasAddress;
+ H225_SeqOfH225TransportAddress callSignalAddress;
+ H225_SeqOfH225TransportAddress rasAddress;
+ H225EndpointType endpointType;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ ASN1UINT8 priority;
+ H225_SeqOfH225AliasAddress remoteExtensionAddress;
+ H225_SeqOfH225AliasAddress destExtraCallInfo;
+ H225AlternateTransportAddresses alternateTransportAddresses;
+ H225CircuitInfo circuitInfo;
+ H225FeatureSet featureSet;
+} H225Endpoint;
+
+EXTERN int asn1PE_H225Endpoint (OOCTXT* pctxt, H225Endpoint* pvalue);
+
+EXTERN int asn1PD_H225Endpoint (OOCTXT* pctxt, H225Endpoint* pvalue);
+
+/**************************************************************/
+/* */
+/* UseSpecifiedTransport */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225UseSpecifiedTransport_tcp 1
+#define T_H225UseSpecifiedTransport_annexE 2
+#define T_H225UseSpecifiedTransport_sctp 3
+#define T_H225UseSpecifiedTransport_extElem1 4
+
+typedef struct EXTERN H225UseSpecifiedTransport {
+ int t;
+} H225UseSpecifiedTransport;
+
+EXTERN int asn1PE_H225UseSpecifiedTransport (OOCTXT* pctxt, H225UseSpecifiedTransport* pvalue);
+
+EXTERN int asn1PD_H225UseSpecifiedTransport (OOCTXT* pctxt, H225UseSpecifiedTransport* pvalue);
+
+/**************************************************************/
+/* */
+/* AlternateGK */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225AlternateGK {
+ struct {
+ unsigned gatekeeperIdentifierPresent : 1;
+ } m;
+ H225TransportAddress rasAddress;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ ASN1BOOL needToRegister;
+ ASN1UINT8 priority;
+} H225AlternateGK;
+
+EXTERN int asn1PE_H225AlternateGK (OOCTXT* pctxt, H225AlternateGK* pvalue);
+
+EXTERN int asn1PD_H225AlternateGK (OOCTXT* pctxt, H225AlternateGK* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225AlternateGK */
+/* */
+/**************************************************************/
+
+/* List of H225AlternateGK */
+typedef DList H225_SeqOfH225AlternateGK;
+
+EXTERN int asn1PE_H225_SeqOfH225AlternateGK (OOCTXT* pctxt, H225_SeqOfH225AlternateGK* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225AlternateGK (OOCTXT* pctxt, H225_SeqOfH225AlternateGK* pvalue);
+
+/**************************************************************/
+/* */
+/* AltGKInfo */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225AltGKInfo {
+ H225_SeqOfH225AlternateGK alternateGatekeeper;
+ ASN1BOOL altGKisPermanent;
+} H225AltGKInfo;
+
+EXTERN int asn1PE_H225AltGKInfo (OOCTXT* pctxt, H225AltGKInfo* pvalue);
+
+EXTERN int asn1PD_H225AltGKInfo (OOCTXT* pctxt, H225AltGKInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* SecurityErrors2 */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225SecurityErrors2_securityWrongSyncTime 1
+#define T_H225SecurityErrors2_securityReplay 2
+#define T_H225SecurityErrors2_securityWrongGeneralID 3
+#define T_H225SecurityErrors2_securityWrongSendersID 4
+#define T_H225SecurityErrors2_securityIntegrityFailed 5
+#define T_H225SecurityErrors2_securityWrongOID 6
+#define T_H225SecurityErrors2_extElem1 7
+
+typedef struct EXTERN H225SecurityErrors2 {
+ int t;
+} H225SecurityErrors2;
+
+EXTERN int asn1PE_H225SecurityErrors2 (OOCTXT* pctxt, H225SecurityErrors2* pvalue);
+
+EXTERN int asn1PD_H225SecurityErrors2 (OOCTXT* pctxt, H225SecurityErrors2* pvalue);
+
+/**************************************************************/
+/* */
+/* EncryptIntAlg */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225EncryptIntAlg_nonStandard 1
+#define T_H225EncryptIntAlg_isoAlgorithm 2
+#define T_H225EncryptIntAlg_extElem1 3
+
+typedef struct EXTERN H225EncryptIntAlg {
+ int t;
+ union {
+ /* t = 1 */
+ H225NonStandardParameter *nonStandard;
+ /* t = 2 */
+ ASN1OBJID *isoAlgorithm;
+ /* t = 3 */
+ } u;
+} H225EncryptIntAlg;
+
+EXTERN int asn1PE_H225EncryptIntAlg (OOCTXT* pctxt, H225EncryptIntAlg* pvalue);
+
+EXTERN int asn1PD_H225EncryptIntAlg (OOCTXT* pctxt, H225EncryptIntAlg* pvalue);
+
+/**************************************************************/
+/* */
+/* NonIsoIntegrityMechanism */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225NonIsoIntegrityMechanism_hMAC_MD5 1
+#define T_H225NonIsoIntegrityMechanism_hMAC_iso10118_2_s 2
+#define T_H225NonIsoIntegrityMechanism_hMAC_iso10118_2_l 3
+#define T_H225NonIsoIntegrityMechanism_hMAC_iso10118_3 4
+#define T_H225NonIsoIntegrityMechanism_extElem1 5
+
+typedef struct EXTERN H225NonIsoIntegrityMechanism {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ H225EncryptIntAlg *hMAC_iso10118_2_s;
+ /* t = 3 */
+ H225EncryptIntAlg *hMAC_iso10118_2_l;
+ /* t = 4 */
+ ASN1OBJID *hMAC_iso10118_3;
+ /* t = 5 */
+ } u;
+} H225NonIsoIntegrityMechanism;
+
+EXTERN int asn1PE_H225NonIsoIntegrityMechanism (OOCTXT* pctxt, H225NonIsoIntegrityMechanism* pvalue);
+
+EXTERN int asn1PD_H225NonIsoIntegrityMechanism (OOCTXT* pctxt, H225NonIsoIntegrityMechanism* pvalue);
+
+/**************************************************************/
+/* */
+/* IntegrityMechanism */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225IntegrityMechanism_nonStandard 1
+#define T_H225IntegrityMechanism_digSig 2
+#define T_H225IntegrityMechanism_iso9797 3
+#define T_H225IntegrityMechanism_nonIsoIM 4
+#define T_H225IntegrityMechanism_extElem1 5
+
+typedef struct EXTERN H225IntegrityMechanism {
+ int t;
+ union {
+ /* t = 1 */
+ H225NonStandardParameter *nonStandard;
+ /* t = 2 */
+ /* t = 3 */
+ ASN1OBJID *iso9797;
+ /* t = 4 */
+ H225NonIsoIntegrityMechanism *nonIsoIM;
+ /* t = 5 */
+ } u;
+} H225IntegrityMechanism;
+
+EXTERN int asn1PE_H225IntegrityMechanism (OOCTXT* pctxt, H225IntegrityMechanism* pvalue);
+
+EXTERN int asn1PD_H225IntegrityMechanism (OOCTXT* pctxt, H225IntegrityMechanism* pvalue);
+
+/**************************************************************/
+/* */
+/* ICV */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ICV {
+ ASN1OBJID algorithmOID;
+ ASN1DynBitStr icv;
+} H225ICV;
+
+EXTERN int asn1PE_H225ICV (OOCTXT* pctxt, H225ICV* pvalue);
+
+EXTERN int asn1PD_H225ICV (OOCTXT* pctxt, H225ICV* pvalue);
+
+/**************************************************************/
+/* */
+/* CapacityReportingCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CapacityReportingCapability {
+ ASN1BOOL canReportCallCapacity;
+} H225CapacityReportingCapability;
+
+EXTERN int asn1PE_H225CapacityReportingCapability (OOCTXT* pctxt, H225CapacityReportingCapability* pvalue);
+
+EXTERN int asn1PD_H225CapacityReportingCapability (OOCTXT* pctxt, H225CapacityReportingCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* CapacityReportingSpecification_when */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CapacityReportingSpecification_when {
+ struct {
+ unsigned callStartPresent : 1;
+ unsigned callEndPresent : 1;
+ } m;
+ ASN1OCTET __dummy__;
+} H225CapacityReportingSpecification_when;
+
+EXTERN int asn1PE_H225CapacityReportingSpecification_when (OOCTXT* pctxt, H225CapacityReportingSpecification_when* pvalue);
+
+EXTERN int asn1PD_H225CapacityReportingSpecification_when (OOCTXT* pctxt, H225CapacityReportingSpecification_when* pvalue);
+
+/**************************************************************/
+/* */
+/* CapacityReportingSpecification */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CapacityReportingSpecification {
+ H225CapacityReportingSpecification_when when;
+} H225CapacityReportingSpecification;
+
+EXTERN int asn1PE_H225CapacityReportingSpecification (OOCTXT* pctxt, H225CapacityReportingSpecification* pvalue);
+
+EXTERN int asn1PD_H225CapacityReportingSpecification (OOCTXT* pctxt, H225CapacityReportingSpecification* pvalue);
+
+/**************************************************************/
+/* */
+/* RasUsageInfoTypes */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RasUsageInfoTypes {
+ struct {
+ unsigned startTimePresent : 1;
+ unsigned endTimePresent : 1;
+ unsigned terminationCausePresent : 1;
+ } m;
+ H225_SeqOfH225NonStandardParameter nonStandardUsageTypes;
+} H225RasUsageInfoTypes;
+
+EXTERN int asn1PE_H225RasUsageInfoTypes (OOCTXT* pctxt, H225RasUsageInfoTypes* pvalue);
+
+EXTERN int asn1PD_H225RasUsageInfoTypes (OOCTXT* pctxt, H225RasUsageInfoTypes* pvalue);
+
+/**************************************************************/
+/* */
+/* RasUsageSpecification_when */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RasUsageSpecification_when {
+ struct {
+ unsigned startPresent : 1;
+ unsigned endPresent : 1;
+ unsigned inIrrPresent : 1;
+ } m;
+ ASN1OCTET __dummy__;
+} H225RasUsageSpecification_when;
+
+EXTERN int asn1PE_H225RasUsageSpecification_when (OOCTXT* pctxt, H225RasUsageSpecification_when* pvalue);
+
+EXTERN int asn1PD_H225RasUsageSpecification_when (OOCTXT* pctxt, H225RasUsageSpecification_when* pvalue);
+
+/**************************************************************/
+/* */
+/* RasUsageSpecification_callStartingPoint */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RasUsageSpecification_callStartingPoint {
+ struct {
+ unsigned alertingPresent : 1;
+ unsigned connectPresent : 1;
+ } m;
+ ASN1OCTET __dummy__;
+} H225RasUsageSpecification_callStartingPoint;
+
+EXTERN int asn1PE_H225RasUsageSpecification_callStartingPoint (OOCTXT* pctxt, H225RasUsageSpecification_callStartingPoint* pvalue);
+
+EXTERN int asn1PD_H225RasUsageSpecification_callStartingPoint (OOCTXT* pctxt, H225RasUsageSpecification_callStartingPoint* pvalue);
+
+/**************************************************************/
+/* */
+/* RasUsageSpecification */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RasUsageSpecification {
+ struct {
+ unsigned callStartingPointPresent : 1;
+ } m;
+ H225RasUsageSpecification_when when;
+ H225RasUsageSpecification_callStartingPoint callStartingPoint;
+ H225RasUsageInfoTypes required;
+} H225RasUsageSpecification;
+
+EXTERN int asn1PE_H225RasUsageSpecification (OOCTXT* pctxt, H225RasUsageSpecification* pvalue);
+
+EXTERN int asn1PD_H225RasUsageSpecification (OOCTXT* pctxt, H225RasUsageSpecification* pvalue);
+
+/**************************************************************/
+/* */
+/* RasUsageInformation */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RasUsageInformation {
+ struct {
+ unsigned alertingTimePresent : 1;
+ unsigned connectTimePresent : 1;
+ unsigned endTimePresent : 1;
+ } m;
+ H225_SeqOfH225NonStandardParameter nonStandardUsageFields;
+ H235TimeStamp alertingTime;
+ H235TimeStamp connectTime;
+ H235TimeStamp endTime;
+} H225RasUsageInformation;
+
+EXTERN int asn1PE_H225RasUsageInformation (OOCTXT* pctxt, H225RasUsageInformation* pvalue);
+
+EXTERN int asn1PD_H225RasUsageInformation (OOCTXT* pctxt, H225RasUsageInformation* pvalue);
+
+/**************************************************************/
+/* */
+/* CallTerminationCause */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225CallTerminationCause_releaseCompleteReason 1
+#define T_H225CallTerminationCause_releaseCompleteCauseIE 2
+#define T_H225CallTerminationCause_extElem1 3
+
+typedef struct EXTERN H225CallTerminationCause {
+ int t;
+ union {
+ /* t = 1 */
+ H225ReleaseCompleteReason *releaseCompleteReason;
+ /* t = 2 */
+ H225CallTerminationCause_releaseCompleteCauseIE *releaseCompleteCauseIE;
+ /* t = 3 */
+ } u;
+} H225CallTerminationCause;
+
+EXTERN int asn1PE_H225CallTerminationCause (OOCTXT* pctxt, H225CallTerminationCause* pvalue);
+
+EXTERN int asn1PD_H225CallTerminationCause (OOCTXT* pctxt, H225CallTerminationCause* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportChannelInfo */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225TransportChannelInfo {
+ struct {
+ unsigned sendAddressPresent : 1;
+ unsigned recvAddressPresent : 1;
+ } m;
+ H225TransportAddress sendAddress;
+ H225TransportAddress recvAddress;
+} H225TransportChannelInfo;
+
+EXTERN int asn1PE_H225TransportChannelInfo (OOCTXT* pctxt, H225TransportChannelInfo* pvalue);
+
+EXTERN int asn1PD_H225TransportChannelInfo (OOCTXT* pctxt, H225TransportChannelInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* BandwidthDetails */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225BandwidthDetails {
+ ASN1BOOL sender;
+ ASN1BOOL multicast;
+ H225BandWidth bandwidth;
+ H225TransportChannelInfo rtcpAddresses;
+} H225BandwidthDetails;
+
+EXTERN int asn1PE_H225BandwidthDetails (OOCTXT* pctxt, H225BandwidthDetails* pvalue);
+
+EXTERN int asn1PD_H225BandwidthDetails (OOCTXT* pctxt, H225BandwidthDetails* pvalue);
+
+/**************************************************************/
+/* */
+/* CallCreditCapability */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225CallCreditCapability {
+ struct {
+ unsigned canDisplayAmountStringPresent : 1;
+ unsigned canEnforceDurationLimitPresent : 1;
+ } m;
+ ASN1BOOL canDisplayAmountString;
+ ASN1BOOL canEnforceDurationLimit;
+} H225CallCreditCapability;
+
+EXTERN int asn1PE_H225CallCreditCapability (OOCTXT* pctxt, H225CallCreditCapability* pvalue);
+
+EXTERN int asn1PD_H225CallCreditCapability (OOCTXT* pctxt, H225CallCreditCapability* pvalue);
+
+/**************************************************************/
+/* */
+/* RTPSession_associatedSessionIds */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RTPSession_associatedSessionIds {
+ ASN1UINT n;
+ ASN1UINT8 *elem;
+} H225RTPSession_associatedSessionIds;
+
+EXTERN int asn1PE_H225RTPSession_associatedSessionIds (OOCTXT* pctxt, H225RTPSession_associatedSessionIds* pvalue);
+
+EXTERN int asn1PD_H225RTPSession_associatedSessionIds (OOCTXT* pctxt, H225RTPSession_associatedSessionIds* pvalue);
+
+/**************************************************************/
+/* */
+/* RTPSession */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RTPSession {
+ struct {
+ unsigned multicastPresent : 1;
+ unsigned bandwidthPresent : 1;
+ } m;
+ H225TransportChannelInfo rtpAddress;
+ H225TransportChannelInfo rtcpAddress;
+ ASN1PrintableString cname;
+ ASN1UINT ssrc;
+ ASN1UINT8 sessionId;
+ H225RTPSession_associatedSessionIds associatedSessionIds;
+ H225BandWidth bandwidth;
+} H225RTPSession;
+
+EXTERN int asn1PE_H225RTPSession (OOCTXT* pctxt, H225RTPSession* pvalue);
+
+EXTERN int asn1PD_H225RTPSession (OOCTXT* pctxt, H225RTPSession* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225Endpoint */
+/* */
+/**************************************************************/
+
+/* List of H225Endpoint */
+typedef DList H225_SeqOfH225Endpoint;
+
+EXTERN int asn1PE_H225_SeqOfH225Endpoint (OOCTXT* pctxt, H225_SeqOfH225Endpoint* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225Endpoint (OOCTXT* pctxt, H225_SeqOfH225Endpoint* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225AuthenticationMechanism */
+/* */
+/**************************************************************/
+
+/* List of H235AuthenticationMechanism */
+typedef DList H225_SeqOfH225AuthenticationMechanism;
+
+EXTERN int asn1PE_H225_SeqOfH225AuthenticationMechanism (OOCTXT* pctxt, H225_SeqOfH225AuthenticationMechanism* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225AuthenticationMechanism (OOCTXT* pctxt, H225_SeqOfH225AuthenticationMechanism* pvalue);
+
+/**************************************************************/
+/* */
+/* GatekeeperRequest_algorithmOIDs */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GatekeeperRequest_algorithmOIDs {
+ ASN1UINT n;
+ ASN1OBJID *elem;
+} H225GatekeeperRequest_algorithmOIDs;
+
+EXTERN int asn1PE_H225GatekeeperRequest_algorithmOIDs (OOCTXT* pctxt, H225GatekeeperRequest_algorithmOIDs* pvalue);
+
+EXTERN int asn1PD_H225GatekeeperRequest_algorithmOIDs (OOCTXT* pctxt, H225GatekeeperRequest_algorithmOIDs* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225IntegrityMechanism */
+/* */
+/**************************************************************/
+
+/* List of H225IntegrityMechanism */
+typedef DList H225_SeqOfH225IntegrityMechanism;
+
+EXTERN int asn1PE_H225_SeqOfH225IntegrityMechanism (OOCTXT* pctxt, H225_SeqOfH225IntegrityMechanism* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225IntegrityMechanism (OOCTXT* pctxt, H225_SeqOfH225IntegrityMechanism* pvalue);
+
+/**************************************************************/
+/* */
+/* GatekeeperRequest */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GatekeeperRequest {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned gatekeeperIdentifierPresent : 1;
+ unsigned callServicesPresent : 1;
+ unsigned endpointAliasPresent : 1;
+ unsigned alternateEndpointsPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned authenticationCapabilityPresent : 1;
+ unsigned algorithmOIDsPresent : 1;
+ unsigned integrityPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned supportsAltGKPresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225NonStandardParameter nonStandardData;
+ H225TransportAddress rasAddress;
+ H225EndpointType endpointType;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ H225QseriesOptions callServices;
+ H225_SeqOfH225AliasAddress endpointAlias;
+ H225_SeqOfH225Endpoint alternateEndpoints;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225_SeqOfH225AuthenticationMechanism authenticationCapability;
+ H225GatekeeperRequest_algorithmOIDs algorithmOIDs;
+ H225_SeqOfH225IntegrityMechanism integrity;
+ H225ICV integrityCheckValue;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+} H225GatekeeperRequest;
+
+EXTERN int asn1PE_H225GatekeeperRequest (OOCTXT* pctxt, H225GatekeeperRequest* pvalue);
+
+EXTERN int asn1PD_H225GatekeeperRequest (OOCTXT* pctxt, H225GatekeeperRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* GatekeeperConfirm */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GatekeeperConfirm {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned gatekeeperIdentifierPresent : 1;
+ unsigned alternateGatekeeperPresent : 1;
+ unsigned authenticationModePresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned algorithmOIDPresent : 1;
+ unsigned integrityPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225NonStandardParameter nonStandardData;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ H225TransportAddress rasAddress;
+ H225_SeqOfH225AlternateGK alternateGatekeeper;
+ H235AuthenticationMechanism authenticationMode;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ ASN1OBJID algorithmOID;
+ H225_SeqOfH225IntegrityMechanism integrity;
+ H225ICV integrityCheckValue;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+} H225GatekeeperConfirm;
+
+EXTERN int asn1PE_H225GatekeeperConfirm (OOCTXT* pctxt, H225GatekeeperConfirm* pvalue);
+
+EXTERN int asn1PD_H225GatekeeperConfirm (OOCTXT* pctxt, H225GatekeeperConfirm* pvalue);
+
+/**************************************************************/
+/* */
+/* GatekeeperRejectReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225GatekeeperRejectReason_resourceUnavailable 1
+#define T_H225GatekeeperRejectReason_terminalExcluded 2
+#define T_H225GatekeeperRejectReason_invalidRevision 3
+#define T_H225GatekeeperRejectReason_undefinedReason 4
+#define T_H225GatekeeperRejectReason_securityDenial 5
+#define T_H225GatekeeperRejectReason_genericDataReason 6
+#define T_H225GatekeeperRejectReason_neededFeatureNotSupported 7
+#define T_H225GatekeeperRejectReason_securityError 8
+#define T_H225GatekeeperRejectReason_extElem1 9
+
+typedef struct EXTERN H225GatekeeperRejectReason {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ /* t = 7 */
+ /* t = 8 */
+ H225SecurityErrors *securityError;
+ /* t = 9 */
+ } u;
+} H225GatekeeperRejectReason;
+
+EXTERN int asn1PE_H225GatekeeperRejectReason (OOCTXT* pctxt, H225GatekeeperRejectReason* pvalue);
+
+EXTERN int asn1PD_H225GatekeeperRejectReason (OOCTXT* pctxt, H225GatekeeperRejectReason* pvalue);
+
+/**************************************************************/
+/* */
+/* GatekeeperReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225GatekeeperReject {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned gatekeeperIdentifierPresent : 1;
+ unsigned altGKInfoPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225NonStandardParameter nonStandardData;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ H225GatekeeperRejectReason rejectReason;
+ H225AltGKInfo altGKInfo;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+} H225GatekeeperReject;
+
+EXTERN int asn1PE_H225GatekeeperReject (OOCTXT* pctxt, H225GatekeeperReject* pvalue);
+
+EXTERN int asn1PD_H225GatekeeperReject (OOCTXT* pctxt, H225GatekeeperReject* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225AddressPattern */
+/* */
+/**************************************************************/
+
+/* List of H225AddressPattern */
+typedef DList H225_SeqOfH225AddressPattern;
+
+EXTERN int asn1PE_H225_SeqOfH225AddressPattern (OOCTXT* pctxt, H225_SeqOfH225AddressPattern* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225AddressPattern (OOCTXT* pctxt, H225_SeqOfH225AddressPattern* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225H248PackagesDescriptor */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225_SeqOfH225H248PackagesDescriptor {
+ ASN1UINT n;
+ H225H248PackagesDescriptor *elem;
+} H225_SeqOfH225H248PackagesDescriptor;
+
+EXTERN int asn1PE_H225_SeqOfH225H248PackagesDescriptor (OOCTXT* pctxt, H225_SeqOfH225H248PackagesDescriptor* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225H248PackagesDescriptor (OOCTXT* pctxt, H225_SeqOfH225H248PackagesDescriptor* pvalue);
+
+/**************************************************************/
+/* */
+/* RegistrationRequest */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RegistrationRequest {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned terminalAliasPresent : 1;
+ unsigned gatekeeperIdentifierPresent : 1;
+ unsigned alternateEndpointsPresent : 1;
+ unsigned timeToLivePresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned keepAlivePresent : 1;
+ unsigned endpointIdentifierPresent : 1;
+ unsigned willSupplyUUIEsPresent : 1;
+ unsigned maintainConnectionPresent : 1;
+ unsigned alternateTransportAddressesPresent : 1;
+ unsigned additiveRegistrationPresent : 1;
+ unsigned terminalAliasPatternPresent : 1;
+ unsigned supportsAltGKPresent : 1;
+ unsigned usageReportingCapabilityPresent : 1;
+ unsigned multipleCallsPresent : 1;
+ unsigned supportedH248PackagesPresent : 1;
+ unsigned callCreditCapabilityPresent : 1;
+ unsigned capacityReportingCapabilityPresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ unsigned restartPresent : 1;
+ unsigned supportsACFSequencesPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225NonStandardParameter nonStandardData;
+ ASN1BOOL discoveryComplete;
+ H225_SeqOfH225TransportAddress callSignalAddress;
+ H225_SeqOfH225TransportAddress rasAddress;
+ H225EndpointType terminalType;
+ H225_SeqOfH225AliasAddress terminalAlias;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ H225VendorIdentifier endpointVendor;
+ H225_SeqOfH225Endpoint alternateEndpoints;
+ H225TimeToLive timeToLive;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ ASN1BOOL keepAlive;
+ H225EndpointIdentifier endpointIdentifier;
+ ASN1BOOL willSupplyUUIEs;
+ ASN1BOOL maintainConnection;
+ H225AlternateTransportAddresses alternateTransportAddresses;
+ H225_SeqOfH225AddressPattern terminalAliasPattern;
+ H225RasUsageInfoTypes usageReportingCapability;
+ ASN1BOOL multipleCalls;
+ H225_SeqOfH225H248PackagesDescriptor supportedH248Packages;
+ H225CallCreditCapability callCreditCapability;
+ H225CapacityReportingCapability capacityReportingCapability;
+ H225CallCapacity capacity;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+} H225RegistrationRequest;
+
+EXTERN int asn1PE_H225RegistrationRequest (OOCTXT* pctxt, H225RegistrationRequest* pvalue);
+
+EXTERN int asn1PD_H225RegistrationRequest (OOCTXT* pctxt, H225RegistrationRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* RegistrationConfirm_preGrantedARQ */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RegistrationConfirm_preGrantedARQ {
+ struct {
+ unsigned irrFrequencyInCallPresent : 1;
+ unsigned totalBandwidthRestrictionPresent : 1;
+ unsigned alternateTransportAddressesPresent : 1;
+ unsigned useSpecifiedTransportPresent : 1;
+ } m;
+ ASN1BOOL makeCall;
+ ASN1BOOL useGKCallSignalAddressToMakeCall;
+ ASN1BOOL answerCall;
+ ASN1BOOL useGKCallSignalAddressToAnswer;
+ ASN1USINT irrFrequencyInCall;
+ H225BandWidth totalBandwidthRestriction;
+ H225AlternateTransportAddresses alternateTransportAddresses;
+ H225UseSpecifiedTransport useSpecifiedTransport;
+} H225RegistrationConfirm_preGrantedARQ;
+
+EXTERN int asn1PE_H225RegistrationConfirm_preGrantedARQ (OOCTXT* pctxt, H225RegistrationConfirm_preGrantedARQ* pvalue);
+
+EXTERN int asn1PD_H225RegistrationConfirm_preGrantedARQ (OOCTXT* pctxt, H225RegistrationConfirm_preGrantedARQ* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225RasUsageSpecification */
+/* */
+/**************************************************************/
+
+/* List of H225RasUsageSpecification */
+typedef DList H225_SeqOfH225RasUsageSpecification;
+
+EXTERN int asn1PE_H225_SeqOfH225RasUsageSpecification (OOCTXT* pctxt, H225_SeqOfH225RasUsageSpecification* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225RasUsageSpecification (OOCTXT* pctxt, H225_SeqOfH225RasUsageSpecification* pvalue);
+
+/**************************************************************/
+/* */
+/* RegistrationConfirm */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RegistrationConfirm {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned terminalAliasPresent : 1;
+ unsigned gatekeeperIdentifierPresent : 1;
+ unsigned alternateGatekeeperPresent : 1;
+ unsigned timeToLivePresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned willRespondToIRRPresent : 1;
+ unsigned preGrantedARQPresent : 1;
+ unsigned maintainConnectionPresent : 1;
+ unsigned serviceControlPresent : 1;
+ unsigned supportsAdditiveRegistrationPresent : 1;
+ unsigned terminalAliasPatternPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ unsigned usageSpecPresent : 1;
+ unsigned featureServerAliasPresent : 1;
+ unsigned capacityReportingSpecPresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225TransportAddress callSignalAddress;
+ H225_SeqOfH225AliasAddress terminalAlias;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ H225EndpointIdentifier endpointIdentifier;
+ H225_SeqOfH225AlternateGK alternateGatekeeper;
+ H225TimeToLive timeToLive;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ ASN1BOOL willRespondToIRR;
+ H225RegistrationConfirm_preGrantedARQ preGrantedARQ;
+ ASN1BOOL maintainConnection;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+ H225_SeqOfH225AddressPattern terminalAliasPattern;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+ H225_SeqOfH225RasUsageSpecification usageSpec;
+ H225AliasAddress featureServerAlias;
+ H225CapacityReportingSpecification capacityReportingSpec;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+} H225RegistrationConfirm;
+
+EXTERN int asn1PE_H225RegistrationConfirm (OOCTXT* pctxt, H225RegistrationConfirm* pvalue);
+
+EXTERN int asn1PD_H225RegistrationConfirm (OOCTXT* pctxt, H225RegistrationConfirm* pvalue);
+
+/**************************************************************/
+/* */
+/* RegistrationRejectReason_invalidTerminalAliases */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RegistrationRejectReason_invalidTerminalAliases {
+ struct {
+ unsigned terminalAliasPresent : 1;
+ unsigned terminalAliasPatternPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ } m;
+ H225_SeqOfH225AliasAddress terminalAlias;
+ H225_SeqOfH225AddressPattern terminalAliasPattern;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+} H225RegistrationRejectReason_invalidTerminalAliases;
+
+EXTERN int asn1PE_H225RegistrationRejectReason_invalidTerminalAliases (OOCTXT* pctxt, H225RegistrationRejectReason_invalidTerminalAliases* pvalue);
+
+EXTERN int asn1PD_H225RegistrationRejectReason_invalidTerminalAliases (OOCTXT* pctxt, H225RegistrationRejectReason_invalidTerminalAliases* pvalue);
+
+/**************************************************************/
+/* */
+/* RegistrationRejectReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225RegistrationRejectReason_discoveryRequired 1
+#define T_H225RegistrationRejectReason_invalidRevision 2
+#define T_H225RegistrationRejectReason_invalidCallSignalAddress 3
+#define T_H225RegistrationRejectReason_invalidRASAddress 4
+#define T_H225RegistrationRejectReason_duplicateAlias 5
+#define T_H225RegistrationRejectReason_invalidTerminalType 6
+#define T_H225RegistrationRejectReason_undefinedReason 7
+#define T_H225RegistrationRejectReason_transportNotSupported 8
+#define T_H225RegistrationRejectReason_transportQOSNotSupported 9
+#define T_H225RegistrationRejectReason_resourceUnavailable 10
+#define T_H225RegistrationRejectReason_invalidAlias 11
+#define T_H225RegistrationRejectReason_securityDenial 12
+#define T_H225RegistrationRejectReason_fullRegistrationRequired 13
+#define T_H225RegistrationRejectReason_additiveRegistrationNotSupported 14
+#define T_H225RegistrationRejectReason_invalidTerminalAliases 15
+#define T_H225RegistrationRejectReason_genericDataReason 16
+#define T_H225RegistrationRejectReason_neededFeatureNotSupported 17
+#define T_H225RegistrationRejectReason_securityError 18
+#define T_H225RegistrationRejectReason_extElem1 19
+
+typedef struct EXTERN H225RegistrationRejectReason {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ H225_SeqOfH225AliasAddress *duplicateAlias;
+ /* t = 6 */
+ /* t = 7 */
+ /* t = 8 */
+ /* t = 9 */
+ /* t = 10 */
+ /* t = 11 */
+ /* t = 12 */
+ /* t = 13 */
+ /* t = 14 */
+ /* t = 15 */
+ H225RegistrationRejectReason_invalidTerminalAliases *invalidTerminalAliases;
+ /* t = 16 */
+ /* t = 17 */
+ /* t = 18 */
+ H225SecurityErrors *securityError;
+ /* t = 19 */
+ } u;
+} H225RegistrationRejectReason;
+
+EXTERN int asn1PE_H225RegistrationRejectReason (OOCTXT* pctxt, H225RegistrationRejectReason* pvalue);
+
+EXTERN int asn1PD_H225RegistrationRejectReason (OOCTXT* pctxt, H225RegistrationRejectReason* pvalue);
+
+/**************************************************************/
+/* */
+/* RegistrationReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RegistrationReject {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned gatekeeperIdentifierPresent : 1;
+ unsigned altGKInfoPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225NonStandardParameter nonStandardData;
+ H225RegistrationRejectReason rejectReason;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ H225AltGKInfo altGKInfo;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+} H225RegistrationReject;
+
+EXTERN int asn1PE_H225RegistrationReject (OOCTXT* pctxt, H225RegistrationReject* pvalue);
+
+EXTERN int asn1PD_H225RegistrationReject (OOCTXT* pctxt, H225RegistrationReject* pvalue);
+
+/**************************************************************/
+/* */
+/* UnregRequestReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225UnregRequestReason_reregistrationRequired 1
+#define T_H225UnregRequestReason_ttlExpired 2
+#define T_H225UnregRequestReason_securityDenial 3
+#define T_H225UnregRequestReason_undefinedReason 4
+#define T_H225UnregRequestReason_maintenance 5
+#define T_H225UnregRequestReason_securityError 6
+#define T_H225UnregRequestReason_extElem1 7
+
+typedef struct EXTERN H225UnregRequestReason {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ H225SecurityErrors2 *securityError;
+ /* t = 7 */
+ } u;
+} H225UnregRequestReason;
+
+EXTERN int asn1PE_H225UnregRequestReason (OOCTXT* pctxt, H225UnregRequestReason* pvalue);
+
+EXTERN int asn1PD_H225UnregRequestReason (OOCTXT* pctxt, H225UnregRequestReason* pvalue);
+
+/**************************************************************/
+/* */
+/* UnregistrationRequest */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225UnregistrationRequest {
+ struct {
+ unsigned endpointAliasPresent : 1;
+ unsigned nonStandardDataPresent : 1;
+ unsigned endpointIdentifierPresent : 1;
+ unsigned alternateEndpointsPresent : 1;
+ unsigned gatekeeperIdentifierPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned reasonPresent : 1;
+ unsigned endpointAliasPatternPresent : 1;
+ unsigned supportedPrefixesPresent : 1;
+ unsigned alternateGatekeeperPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225_SeqOfH225TransportAddress callSignalAddress;
+ H225_SeqOfH225AliasAddress endpointAlias;
+ H225NonStandardParameter nonStandardData;
+ H225EndpointIdentifier endpointIdentifier;
+ H225_SeqOfH225Endpoint alternateEndpoints;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225UnregRequestReason reason;
+ H225_SeqOfH225AddressPattern endpointAliasPattern;
+ H225_SeqOfH225SupportedPrefix supportedPrefixes;
+ H225_SeqOfH225AlternateGK alternateGatekeeper;
+ H225_SeqOfH225GenericData genericData;
+} H225UnregistrationRequest;
+
+EXTERN int asn1PE_H225UnregistrationRequest (OOCTXT* pctxt, H225UnregistrationRequest* pvalue);
+
+EXTERN int asn1PD_H225UnregistrationRequest (OOCTXT* pctxt, H225UnregistrationRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* UnregistrationConfirm */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225UnregistrationConfirm {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225_SeqOfH225GenericData genericData;
+} H225UnregistrationConfirm;
+
+EXTERN int asn1PE_H225UnregistrationConfirm (OOCTXT* pctxt, H225UnregistrationConfirm* pvalue);
+
+EXTERN int asn1PD_H225UnregistrationConfirm (OOCTXT* pctxt, H225UnregistrationConfirm* pvalue);
+
+/**************************************************************/
+/* */
+/* UnregRejectReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225UnregRejectReason_notCurrentlyRegistered 1
+#define T_H225UnregRejectReason_callInProgress 2
+#define T_H225UnregRejectReason_undefinedReason 3
+#define T_H225UnregRejectReason_permissionDenied 4
+#define T_H225UnregRejectReason_securityDenial 5
+#define T_H225UnregRejectReason_securityError 6
+#define T_H225UnregRejectReason_extElem1 7
+
+typedef struct EXTERN H225UnregRejectReason {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ H225SecurityErrors2 *securityError;
+ /* t = 7 */
+ } u;
+} H225UnregRejectReason;
+
+EXTERN int asn1PE_H225UnregRejectReason (OOCTXT* pctxt, H225UnregRejectReason* pvalue);
+
+EXTERN int asn1PD_H225UnregRejectReason (OOCTXT* pctxt, H225UnregRejectReason* pvalue);
+
+/**************************************************************/
+/* */
+/* UnregistrationReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225UnregistrationReject {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned altGKInfoPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225UnregRejectReason rejectReason;
+ H225NonStandardParameter nonStandardData;
+ H225AltGKInfo altGKInfo;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225_SeqOfH225GenericData genericData;
+} H225UnregistrationReject;
+
+EXTERN int asn1PE_H225UnregistrationReject (OOCTXT* pctxt, H225UnregistrationReject* pvalue);
+
+EXTERN int asn1PD_H225UnregistrationReject (OOCTXT* pctxt, H225UnregistrationReject* pvalue);
+
+/**************************************************************/
+/* */
+/* CallModel */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225CallModel_direct 1
+#define T_H225CallModel_gatekeeperRouted 2
+#define T_H225CallModel_extElem1 3
+
+typedef struct EXTERN H225CallModel {
+ int t;
+} H225CallModel;
+
+EXTERN int asn1PE_H225CallModel (OOCTXT* pctxt, H225CallModel* pvalue);
+
+EXTERN int asn1PD_H225CallModel (OOCTXT* pctxt, H225CallModel* pvalue);
+
+/**************************************************************/
+/* */
+/* TransportQOS */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225TransportQOS_endpointControlled 1
+#define T_H225TransportQOS_gatekeeperControlled 2
+#define T_H225TransportQOS_noControl 3
+#define T_H225TransportQOS_extElem1 4
+
+typedef struct EXTERN H225TransportQOS {
+ int t;
+} H225TransportQOS;
+
+EXTERN int asn1PE_H225TransportQOS (OOCTXT* pctxt, H225TransportQOS* pvalue);
+
+EXTERN int asn1PD_H225TransportQOS (OOCTXT* pctxt, H225TransportQOS* pvalue);
+
+/**************************************************************/
+/* */
+/* AdmissionRequest */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225AdmissionRequest {
+ struct {
+ unsigned callModelPresent : 1;
+ unsigned destinationInfoPresent : 1;
+ unsigned destCallSignalAddressPresent : 1;
+ unsigned destExtraCallInfoPresent : 1;
+ unsigned srcCallSignalAddressPresent : 1;
+ unsigned nonStandardDataPresent : 1;
+ unsigned callServicesPresent : 1;
+ unsigned canMapAliasPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned srcAlternativesPresent : 1;
+ unsigned destAlternativesPresent : 1;
+ unsigned gatekeeperIdentifierPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned transportQOSPresent : 1;
+ unsigned willSupplyUUIEsPresent : 1;
+ unsigned callLinkagePresent : 1;
+ unsigned gatewayDataRatePresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned circuitInfoPresent : 1;
+ unsigned desiredProtocolsPresent : 1;
+ unsigned desiredTunnelledProtocolPresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ unsigned canMapSrcAliasPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225CallType callType;
+ H225CallModel callModel;
+ H225EndpointIdentifier endpointIdentifier;
+ H225_SeqOfH225AliasAddress destinationInfo;
+ H225TransportAddress destCallSignalAddress;
+ H225_SeqOfH225AliasAddress destExtraCallInfo;
+ H225_SeqOfH225AliasAddress srcInfo;
+ H225TransportAddress srcCallSignalAddress;
+ H225BandWidth bandWidth;
+ H225CallReferenceValue callReferenceValue;
+ H225NonStandardParameter nonStandardData;
+ H225QseriesOptions callServices;
+ H225ConferenceIdentifier conferenceID;
+ ASN1BOOL activeMC;
+ ASN1BOOL answerCall;
+ ASN1BOOL canMapAlias;
+ H225CallIdentifier callIdentifier;
+ H225_SeqOfH225Endpoint srcAlternatives;
+ H225_SeqOfH225Endpoint destAlternatives;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225TransportQOS transportQOS;
+ ASN1BOOL willSupplyUUIEs;
+ H225CallLinkage callLinkage;
+ H225DataRate gatewayDataRate;
+ H225CallCapacity capacity;
+ H225CircuitInfo circuitInfo;
+ H225_SeqOfH225SupportedProtocols desiredProtocols;
+ H225TunnelledProtocol desiredTunnelledProtocol;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+ ASN1BOOL canMapSrcAlias;
+} H225AdmissionRequest;
+
+EXTERN int asn1PE_H225AdmissionRequest (OOCTXT* pctxt, H225AdmissionRequest* pvalue);
+
+EXTERN int asn1PD_H225AdmissionRequest (OOCTXT* pctxt, H225AdmissionRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* UUIEsRequested */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225UUIEsRequested {
+ struct {
+ unsigned statusPresent : 1;
+ unsigned statusInquiryPresent : 1;
+ unsigned setupAcknowledgePresent : 1;
+ unsigned notifyPresent : 1;
+ } m;
+ ASN1BOOL setup;
+ ASN1BOOL callProceeding;
+ ASN1BOOL connect;
+ ASN1BOOL alerting;
+ ASN1BOOL information;
+ ASN1BOOL releaseComplete;
+ ASN1BOOL facility;
+ ASN1BOOL progress;
+ ASN1BOOL empty;
+ ASN1BOOL status;
+ ASN1BOOL statusInquiry;
+ ASN1BOOL setupAcknowledge;
+ ASN1BOOL notify;
+} H225UUIEsRequested;
+
+EXTERN int asn1PE_H225UUIEsRequested (OOCTXT* pctxt, H225UUIEsRequested* pvalue);
+
+EXTERN int asn1PD_H225UUIEsRequested (OOCTXT* pctxt, H225UUIEsRequested* pvalue);
+
+/**************************************************************/
+/* */
+/* AdmissionConfirm_language */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225AdmissionConfirm_language {
+ ASN1UINT n;
+ ASN1IA5String *elem;
+} H225AdmissionConfirm_language;
+
+EXTERN int asn1PE_H225AdmissionConfirm_language (OOCTXT* pctxt, H225AdmissionConfirm_language* pvalue);
+
+EXTERN int asn1PD_H225AdmissionConfirm_language (OOCTXT* pctxt, H225AdmissionConfirm_language* pvalue);
+
+/**************************************************************/
+/* */
+/* AdmissionConfirm */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225AdmissionConfirm {
+ struct {
+ unsigned irrFrequencyPresent : 1;
+ unsigned nonStandardDataPresent : 1;
+ unsigned destinationInfoPresent : 1;
+ unsigned destExtraCallInfoPresent : 1;
+ unsigned destinationTypePresent : 1;
+ unsigned remoteExtensionAddressPresent : 1;
+ unsigned alternateEndpointsPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned transportQOSPresent : 1;
+ unsigned willRespondToIRRPresent : 1;
+ unsigned uuiesRequestedPresent : 1;
+ unsigned languagePresent : 1;
+ unsigned alternateTransportAddressesPresent : 1;
+ unsigned useSpecifiedTransportPresent : 1;
+ unsigned circuitInfoPresent : 1;
+ unsigned usageSpecPresent : 1;
+ unsigned supportedProtocolsPresent : 1;
+ unsigned serviceControlPresent : 1;
+ unsigned multipleCallsPresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ unsigned modifiedSrcInfoPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225BandWidth bandWidth;
+ H225CallModel callModel;
+ H225TransportAddress destCallSignalAddress;
+ ASN1USINT irrFrequency;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225AliasAddress destinationInfo;
+ H225_SeqOfH225AliasAddress destExtraCallInfo;
+ H225EndpointType destinationType;
+ H225_SeqOfH225AliasAddress remoteExtensionAddress;
+ H225_SeqOfH225Endpoint alternateEndpoints;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225TransportQOS transportQOS;
+ ASN1BOOL willRespondToIRR;
+ H225UUIEsRequested uuiesRequested;
+ H225AdmissionConfirm_language language;
+ H225AlternateTransportAddresses alternateTransportAddresses;
+ H225UseSpecifiedTransport useSpecifiedTransport;
+ H225CircuitInfo circuitInfo;
+ H225_SeqOfH225RasUsageSpecification usageSpec;
+ H225_SeqOfH225SupportedProtocols supportedProtocols;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+ ASN1BOOL multipleCalls;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+ H225_SeqOfH225AliasAddress modifiedSrcInfo;
+} H225AdmissionConfirm;
+
+EXTERN int asn1PE_H225AdmissionConfirm (OOCTXT* pctxt, H225AdmissionConfirm* pvalue);
+
+EXTERN int asn1PD_H225AdmissionConfirm (OOCTXT* pctxt, H225AdmissionConfirm* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225PartyNumber */
+/* */
+/**************************************************************/
+
+/* List of H225PartyNumber */
+typedef DList H225_SeqOfH225PartyNumber;
+
+EXTERN int asn1PE_H225_SeqOfH225PartyNumber (OOCTXT* pctxt, H225_SeqOfH225PartyNumber* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225PartyNumber (OOCTXT* pctxt, H225_SeqOfH225PartyNumber* pvalue);
+
+/**************************************************************/
+/* */
+/* AdmissionRejectReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225AdmissionRejectReason_calledPartyNotRegistered 1
+#define T_H225AdmissionRejectReason_invalidPermission 2
+#define T_H225AdmissionRejectReason_requestDenied 3
+#define T_H225AdmissionRejectReason_undefinedReason 4
+#define T_H225AdmissionRejectReason_callerNotRegistered 5
+#define T_H225AdmissionRejectReason_routeCallToGatekeeper 6
+#define T_H225AdmissionRejectReason_invalidEndpointIdentifier 7
+#define T_H225AdmissionRejectReason_resourceUnavailable 8
+#define T_H225AdmissionRejectReason_securityDenial 9
+#define T_H225AdmissionRejectReason_qosControlNotSupported 10
+#define T_H225AdmissionRejectReason_incompleteAddress 11
+#define T_H225AdmissionRejectReason_aliasesInconsistent 12
+#define T_H225AdmissionRejectReason_routeCallToSCN 13
+#define T_H225AdmissionRejectReason_exceedsCallCapacity 14
+#define T_H225AdmissionRejectReason_collectDestination 15
+#define T_H225AdmissionRejectReason_collectPIN 16
+#define T_H225AdmissionRejectReason_genericDataReason 17
+#define T_H225AdmissionRejectReason_neededFeatureNotSupported 18
+#define T_H225AdmissionRejectReason_securityErrors 19
+#define T_H225AdmissionRejectReason_securityDHmismatch 20
+#define T_H225AdmissionRejectReason_noRouteToDestination 21
+#define T_H225AdmissionRejectReason_unallocatedNumber 22
+#define T_H225AdmissionRejectReason_extElem1 23
+
+typedef struct EXTERN H225AdmissionRejectReason {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ /* t = 7 */
+ /* t = 8 */
+ /* t = 9 */
+ /* t = 10 */
+ /* t = 11 */
+ /* t = 12 */
+ /* t = 13 */
+ H225_SeqOfH225PartyNumber *routeCallToSCN;
+ /* t = 14 */
+ /* t = 15 */
+ /* t = 16 */
+ /* t = 17 */
+ /* t = 18 */
+ /* t = 19 */
+ H225SecurityErrors2 *securityErrors;
+ /* t = 20 */
+ /* t = 21 */
+ /* t = 22 */
+ /* t = 23 */
+ } u;
+} H225AdmissionRejectReason;
+
+EXTERN int asn1PE_H225AdmissionRejectReason (OOCTXT* pctxt, H225AdmissionRejectReason* pvalue);
+
+EXTERN int asn1PD_H225AdmissionRejectReason (OOCTXT* pctxt, H225AdmissionRejectReason* pvalue);
+
+/**************************************************************/
+/* */
+/* AdmissionReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225AdmissionReject {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned altGKInfoPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned callSignalAddressPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned serviceControlPresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225AdmissionRejectReason rejectReason;
+ H225NonStandardParameter nonStandardData;
+ H225AltGKInfo altGKInfo;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225_SeqOfH225TransportAddress callSignalAddress;
+ H225ICV integrityCheckValue;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+} H225AdmissionReject;
+
+EXTERN int asn1PE_H225AdmissionReject (OOCTXT* pctxt, H225AdmissionReject* pvalue);
+
+EXTERN int asn1PD_H225AdmissionReject (OOCTXT* pctxt, H225AdmissionReject* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225BandwidthDetails */
+/* */
+/**************************************************************/
+
+/* List of H225BandwidthDetails */
+typedef DList H225_SeqOfH225BandwidthDetails;
+
+EXTERN int asn1PE_H225_SeqOfH225BandwidthDetails (OOCTXT* pctxt, H225_SeqOfH225BandwidthDetails* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225BandwidthDetails (OOCTXT* pctxt, H225_SeqOfH225BandwidthDetails* pvalue);
+
+/**************************************************************/
+/* */
+/* BandwidthRequest */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225BandwidthRequest {
+ struct {
+ unsigned callTypePresent : 1;
+ unsigned nonStandardDataPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned gatekeeperIdentifierPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned answeredCallPresent : 1;
+ unsigned callLinkagePresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned usageInformationPresent : 1;
+ unsigned bandwidthDetailsPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225EndpointIdentifier endpointIdentifier;
+ H225ConferenceIdentifier conferenceID;
+ H225CallReferenceValue callReferenceValue;
+ H225CallType callType;
+ H225BandWidth bandWidth;
+ H225NonStandardParameter nonStandardData;
+ H225CallIdentifier callIdentifier;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ ASN1BOOL answeredCall;
+ H225CallLinkage callLinkage;
+ H225CallCapacity capacity;
+ H225RasUsageInformation usageInformation;
+ H225_SeqOfH225BandwidthDetails bandwidthDetails;
+ H225_SeqOfH225GenericData genericData;
+} H225BandwidthRequest;
+
+EXTERN int asn1PE_H225BandwidthRequest (OOCTXT* pctxt, H225BandwidthRequest* pvalue);
+
+EXTERN int asn1PD_H225BandwidthRequest (OOCTXT* pctxt, H225BandwidthRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* BandwidthConfirm */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225BandwidthConfirm {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225BandWidth bandWidth;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225CallCapacity capacity;
+ H225_SeqOfH225GenericData genericData;
+} H225BandwidthConfirm;
+
+EXTERN int asn1PE_H225BandwidthConfirm (OOCTXT* pctxt, H225BandwidthConfirm* pvalue);
+
+EXTERN int asn1PD_H225BandwidthConfirm (OOCTXT* pctxt, H225BandwidthConfirm* pvalue);
+
+/**************************************************************/
+/* */
+/* BandRejectReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225BandRejectReason_notBound 1
+#define T_H225BandRejectReason_invalidConferenceID 2
+#define T_H225BandRejectReason_invalidPermission 3
+#define T_H225BandRejectReason_insufficientResources 4
+#define T_H225BandRejectReason_invalidRevision 5
+#define T_H225BandRejectReason_undefinedReason 6
+#define T_H225BandRejectReason_securityDenial 7
+#define T_H225BandRejectReason_securityError 8
+#define T_H225BandRejectReason_extElem1 9
+
+typedef struct EXTERN H225BandRejectReason {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ /* t = 7 */
+ /* t = 8 */
+ H225SecurityErrors2 *securityError;
+ /* t = 9 */
+ } u;
+} H225BandRejectReason;
+
+EXTERN int asn1PE_H225BandRejectReason (OOCTXT* pctxt, H225BandRejectReason* pvalue);
+
+EXTERN int asn1PD_H225BandRejectReason (OOCTXT* pctxt, H225BandRejectReason* pvalue);
+
+/**************************************************************/
+/* */
+/* BandwidthReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225BandwidthReject {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned altGKInfoPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225BandRejectReason rejectReason;
+ H225BandWidth allowedBandWidth;
+ H225NonStandardParameter nonStandardData;
+ H225AltGKInfo altGKInfo;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225_SeqOfH225GenericData genericData;
+} H225BandwidthReject;
+
+EXTERN int asn1PE_H225BandwidthReject (OOCTXT* pctxt, H225BandwidthReject* pvalue);
+
+EXTERN int asn1PD_H225BandwidthReject (OOCTXT* pctxt, H225BandwidthReject* pvalue);
+
+/**************************************************************/
+/* */
+/* DisengageReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225DisengageReason_forcedDrop 1
+#define T_H225DisengageReason_normalDrop 2
+#define T_H225DisengageReason_undefinedReason 3
+#define T_H225DisengageReason_extElem1 4
+
+typedef struct EXTERN H225DisengageReason {
+ int t;
+} H225DisengageReason;
+
+EXTERN int asn1PE_H225DisengageReason (OOCTXT* pctxt, H225DisengageReason* pvalue);
+
+EXTERN int asn1PD_H225DisengageReason (OOCTXT* pctxt, H225DisengageReason* pvalue);
+
+/**************************************************************/
+/* */
+/* DisengageRequest */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225DisengageRequest {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned gatekeeperIdentifierPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned answeredCallPresent : 1;
+ unsigned callLinkagePresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned circuitInfoPresent : 1;
+ unsigned usageInformationPresent : 1;
+ unsigned terminationCausePresent : 1;
+ unsigned serviceControlPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225EndpointIdentifier endpointIdentifier;
+ H225ConferenceIdentifier conferenceID;
+ H225CallReferenceValue callReferenceValue;
+ H225DisengageReason disengageReason;
+ H225NonStandardParameter nonStandardData;
+ H225CallIdentifier callIdentifier;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ ASN1BOOL answeredCall;
+ H225CallLinkage callLinkage;
+ H225CallCapacity capacity;
+ H225CircuitInfo circuitInfo;
+ H225RasUsageInformation usageInformation;
+ H225CallTerminationCause terminationCause;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+ H225_SeqOfH225GenericData genericData;
+} H225DisengageRequest;
+
+EXTERN int asn1PE_H225DisengageRequest (OOCTXT* pctxt, H225DisengageRequest* pvalue);
+
+EXTERN int asn1PD_H225DisengageRequest (OOCTXT* pctxt, H225DisengageRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* DisengageConfirm */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225DisengageConfirm {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned circuitInfoPresent : 1;
+ unsigned usageInformationPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225CallCapacity capacity;
+ H225CircuitInfo circuitInfo;
+ H225RasUsageInformation usageInformation;
+ H225_SeqOfH225GenericData genericData;
+} H225DisengageConfirm;
+
+EXTERN int asn1PE_H225DisengageConfirm (OOCTXT* pctxt, H225DisengageConfirm* pvalue);
+
+EXTERN int asn1PD_H225DisengageConfirm (OOCTXT* pctxt, H225DisengageConfirm* pvalue);
+
+/**************************************************************/
+/* */
+/* DisengageRejectReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225DisengageRejectReason_notRegistered 1
+#define T_H225DisengageRejectReason_requestToDropOther 2
+#define T_H225DisengageRejectReason_securityDenial 3
+#define T_H225DisengageRejectReason_securityError 4
+#define T_H225DisengageRejectReason_extElem1 5
+
+typedef struct EXTERN H225DisengageRejectReason {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ H225SecurityErrors2 *securityError;
+ /* t = 5 */
+ } u;
+} H225DisengageRejectReason;
+
+EXTERN int asn1PE_H225DisengageRejectReason (OOCTXT* pctxt, H225DisengageRejectReason* pvalue);
+
+EXTERN int asn1PD_H225DisengageRejectReason (OOCTXT* pctxt, H225DisengageRejectReason* pvalue);
+
+/**************************************************************/
+/* */
+/* DisengageReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225DisengageReject {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned altGKInfoPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225DisengageRejectReason rejectReason;
+ H225NonStandardParameter nonStandardData;
+ H225AltGKInfo altGKInfo;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225_SeqOfH225GenericData genericData;
+} H225DisengageReject;
+
+EXTERN int asn1PE_H225DisengageReject (OOCTXT* pctxt, H225DisengageReject* pvalue);
+
+EXTERN int asn1PD_H225DisengageReject (OOCTXT* pctxt, H225DisengageReject* pvalue);
+
+/**************************************************************/
+/* */
+/* LocationRequest */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225LocationRequest {
+ struct {
+ unsigned endpointIdentifierPresent : 1;
+ unsigned nonStandardDataPresent : 1;
+ unsigned sourceInfoPresent : 1;
+ unsigned canMapAliasPresent : 1;
+ unsigned gatekeeperIdentifierPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned desiredProtocolsPresent : 1;
+ unsigned desiredTunnelledProtocolPresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ unsigned hopCountPresent : 1;
+ unsigned circuitInfoPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned bandWidthPresent : 1;
+ unsigned sourceEndpointInfoPresent : 1;
+ unsigned canMapSrcAliasPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225EndpointIdentifier endpointIdentifier;
+ H225_SeqOfH225AliasAddress destinationInfo;
+ H225NonStandardParameter nonStandardData;
+ H225TransportAddress replyAddress;
+ H225_SeqOfH225AliasAddress sourceInfo;
+ ASN1BOOL canMapAlias;
+ H225GatekeeperIdentifier gatekeeperIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225_SeqOfH225SupportedProtocols desiredProtocols;
+ H225TunnelledProtocol desiredTunnelledProtocol;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+ ASN1UINT8 hopCount;
+ H225CircuitInfo circuitInfo;
+ H225CallIdentifier callIdentifier;
+ H225BandWidth bandWidth;
+ H225_SeqOfH225AliasAddress sourceEndpointInfo;
+ ASN1BOOL canMapSrcAlias;
+} H225LocationRequest;
+
+EXTERN int asn1PE_H225LocationRequest (OOCTXT* pctxt, H225LocationRequest* pvalue);
+
+EXTERN int asn1PD_H225LocationRequest (OOCTXT* pctxt, H225LocationRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* LocationConfirm */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225LocationConfirm {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned destinationInfoPresent : 1;
+ unsigned destExtraCallInfoPresent : 1;
+ unsigned destinationTypePresent : 1;
+ unsigned remoteExtensionAddressPresent : 1;
+ unsigned alternateEndpointsPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned alternateTransportAddressesPresent : 1;
+ unsigned supportedProtocolsPresent : 1;
+ unsigned multipleCallsPresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ unsigned circuitInfoPresent : 1;
+ unsigned serviceControlPresent : 1;
+ unsigned modifiedSrcInfoPresent : 1;
+ unsigned bandWidthPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225TransportAddress callSignalAddress;
+ H225TransportAddress rasAddress;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225AliasAddress destinationInfo;
+ H225_SeqOfH225AliasAddress destExtraCallInfo;
+ H225EndpointType destinationType;
+ H225_SeqOfH225AliasAddress remoteExtensionAddress;
+ H225_SeqOfH225Endpoint alternateEndpoints;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225AlternateTransportAddresses alternateTransportAddresses;
+ H225_SeqOfH225SupportedProtocols supportedProtocols;
+ ASN1BOOL multipleCalls;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+ H225CircuitInfo circuitInfo;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+ H225_SeqOfH225AliasAddress modifiedSrcInfo;
+ H225BandWidth bandWidth;
+} H225LocationConfirm;
+
+EXTERN int asn1PE_H225LocationConfirm (OOCTXT* pctxt, H225LocationConfirm* pvalue);
+
+EXTERN int asn1PD_H225LocationConfirm (OOCTXT* pctxt, H225LocationConfirm* pvalue);
+
+/**************************************************************/
+/* */
+/* LocationRejectReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225LocationRejectReason_notRegistered 1
+#define T_H225LocationRejectReason_invalidPermission 2
+#define T_H225LocationRejectReason_requestDenied 3
+#define T_H225LocationRejectReason_undefinedReason 4
+#define T_H225LocationRejectReason_securityDenial 5
+#define T_H225LocationRejectReason_aliasesInconsistent 6
+#define T_H225LocationRejectReason_routeCalltoSCN 7
+#define T_H225LocationRejectReason_resourceUnavailable 8
+#define T_H225LocationRejectReason_genericDataReason 9
+#define T_H225LocationRejectReason_neededFeatureNotSupported 10
+#define T_H225LocationRejectReason_hopCountExceeded 11
+#define T_H225LocationRejectReason_incompleteAddress 12
+#define T_H225LocationRejectReason_securityError 13
+#define T_H225LocationRejectReason_securityDHmismatch 14
+#define T_H225LocationRejectReason_noRouteToDestination 15
+#define T_H225LocationRejectReason_unallocatedNumber 16
+#define T_H225LocationRejectReason_extElem1 17
+
+typedef struct EXTERN H225LocationRejectReason {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ /* t = 5 */
+ /* t = 6 */
+ /* t = 7 */
+ H225_SeqOfH225PartyNumber *routeCalltoSCN;
+ /* t = 8 */
+ /* t = 9 */
+ /* t = 10 */
+ /* t = 11 */
+ /* t = 12 */
+ /* t = 13 */
+ H225SecurityErrors2 *securityError;
+ /* t = 14 */
+ /* t = 15 */
+ /* t = 16 */
+ /* t = 17 */
+ } u;
+} H225LocationRejectReason;
+
+EXTERN int asn1PE_H225LocationRejectReason (OOCTXT* pctxt, H225LocationRejectReason* pvalue);
+
+EXTERN int asn1PD_H225LocationRejectReason (OOCTXT* pctxt, H225LocationRejectReason* pvalue);
+
+/**************************************************************/
+/* */
+/* LocationReject */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225LocationReject {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned altGKInfoPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ unsigned serviceControlPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225LocationRejectReason rejectReason;
+ H225NonStandardParameter nonStandardData;
+ H225AltGKInfo altGKInfo;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+} H225LocationReject;
+
+EXTERN int asn1PE_H225LocationReject (OOCTXT* pctxt, H225LocationReject* pvalue);
+
+EXTERN int asn1PD_H225LocationReject (OOCTXT* pctxt, H225LocationReject* pvalue);
+
+/**************************************************************/
+/* */
+/* InfoRequest */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225InfoRequest {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned replyAddressPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned uuiesRequestedPresent : 1;
+ unsigned callLinkagePresent : 1;
+ unsigned usageInfoRequestedPresent : 1;
+ unsigned segmentedResponseSupportedPresent : 1;
+ unsigned nextSegmentRequestedPresent : 1;
+ unsigned capacityInfoRequestedPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225CallReferenceValue callReferenceValue;
+ H225NonStandardParameter nonStandardData;
+ H225TransportAddress replyAddress;
+ H225CallIdentifier callIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225UUIEsRequested uuiesRequested;
+ H225CallLinkage callLinkage;
+ H225RasUsageInfoTypes usageInfoRequested;
+ ASN1USINT nextSegmentRequested;
+ H225_SeqOfH225GenericData genericData;
+} H225InfoRequest;
+
+EXTERN int asn1PE_H225InfoRequest (OOCTXT* pctxt, H225InfoRequest* pvalue);
+
+EXTERN int asn1PD_H225InfoRequest (OOCTXT* pctxt, H225InfoRequest* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225RTPSession */
+/* */
+/**************************************************************/
+
+/* List of H225RTPSession */
+typedef DList H225_SeqOfH225RTPSession;
+
+EXTERN int asn1PE_H225_SeqOfH225RTPSession (OOCTXT* pctxt, H225_SeqOfH225RTPSession* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225RTPSession (OOCTXT* pctxt, H225_SeqOfH225RTPSession* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225TransportChannelInfo */
+/* */
+/**************************************************************/
+
+/* List of H225TransportChannelInfo */
+typedef DList H225_SeqOfH225TransportChannelInfo;
+
+EXTERN int asn1PE_H225_SeqOfH225TransportChannelInfo (OOCTXT* pctxt, H225_SeqOfH225TransportChannelInfo* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225TransportChannelInfo (OOCTXT* pctxt, H225_SeqOfH225TransportChannelInfo* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225ConferenceIdentifier */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225_SeqOfH225ConferenceIdentifier {
+ ASN1UINT n;
+ H225ConferenceIdentifier *elem;
+} H225_SeqOfH225ConferenceIdentifier;
+
+EXTERN int asn1PE_H225_SeqOfH225ConferenceIdentifier (OOCTXT* pctxt, H225_SeqOfH225ConferenceIdentifier* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225ConferenceIdentifier (OOCTXT* pctxt, H225_SeqOfH225ConferenceIdentifier* pvalue);
+
+/**************************************************************/
+/* */
+/* InfoRequestResponse_perCallInfo_element_pdu_element */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225InfoRequestResponse_perCallInfo_element_pdu_element {
+ H225H323_UU_PDU h323pdu;
+ ASN1BOOL sent;
+} H225InfoRequestResponse_perCallInfo_element_pdu_element;
+
+EXTERN int asn1PE_H225InfoRequestResponse_perCallInfo_element_pdu_element (OOCTXT* pctxt, H225InfoRequestResponse_perCallInfo_element_pdu_element* pvalue);
+
+EXTERN int asn1PD_H225InfoRequestResponse_perCallInfo_element_pdu_element (OOCTXT* pctxt, H225InfoRequestResponse_perCallInfo_element_pdu_element* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_el */
+/* */
+/**************************************************************/
+
+/* List of H225InfoRequestResponse_perCallInfo_element_pdu_element */
+typedef DList H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element;
+
+EXTERN int asn1PE_H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element (OOCTXT* pctxt, H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element (OOCTXT* pctxt, H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element* pvalue);
+
+/**************************************************************/
+/* */
+/* InfoRequestResponse_perCallInfo_element */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225InfoRequestResponse_perCallInfo_element {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned originatorPresent : 1;
+ unsigned audioPresent : 1;
+ unsigned videoPresent : 1;
+ unsigned dataPresent : 1;
+ unsigned callIdentifierPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned substituteConfIDsPresent : 1;
+ unsigned pduPresent : 1;
+ unsigned callLinkagePresent : 1;
+ unsigned usageInformationPresent : 1;
+ unsigned circuitInfoPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225CallReferenceValue callReferenceValue;
+ H225ConferenceIdentifier conferenceID;
+ ASN1BOOL originator;
+ H225_SeqOfH225RTPSession audio;
+ H225_SeqOfH225RTPSession video;
+ H225_SeqOfH225TransportChannelInfo data;
+ H225TransportChannelInfo h245;
+ H225TransportChannelInfo callSignaling;
+ H225CallType callType;
+ H225BandWidth bandWidth;
+ H225CallModel callModel;
+ H225CallIdentifier callIdentifier;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225_SeqOfH225ConferenceIdentifier substituteConfIDs;
+ H225_SeqOfH225InfoRequestResponse_perCallInfo_element_pdu_element pdu;
+ H225CallLinkage callLinkage;
+ H225RasUsageInformation usageInformation;
+ H225CircuitInfo circuitInfo;
+} H225InfoRequestResponse_perCallInfo_element;
+
+EXTERN int asn1PE_H225InfoRequestResponse_perCallInfo_element (OOCTXT* pctxt, H225InfoRequestResponse_perCallInfo_element* pvalue);
+
+EXTERN int asn1PD_H225InfoRequestResponse_perCallInfo_element (OOCTXT* pctxt, H225InfoRequestResponse_perCallInfo_element* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225InfoRequestResponse_perCallInfo_element */
+/* */
+/**************************************************************/
+
+/* List of H225InfoRequestResponse_perCallInfo_element */
+typedef DList H225_SeqOfH225InfoRequestResponse_perCallInfo_element;
+
+EXTERN int asn1PE_H225_SeqOfH225InfoRequestResponse_perCallInfo_element (OOCTXT* pctxt, H225_SeqOfH225InfoRequestResponse_perCallInfo_element* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225InfoRequestResponse_perCallInfo_element (OOCTXT* pctxt, H225_SeqOfH225InfoRequestResponse_perCallInfo_element* pvalue);
+
+/**************************************************************/
+/* */
+/* InfoRequestResponseStatus */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225InfoRequestResponseStatus_complete 1
+#define T_H225InfoRequestResponseStatus_incomplete 2
+#define T_H225InfoRequestResponseStatus_segment 3
+#define T_H225InfoRequestResponseStatus_invalidCall 4
+#define T_H225InfoRequestResponseStatus_extElem1 5
+
+typedef struct EXTERN H225InfoRequestResponseStatus {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ ASN1USINT segment;
+ /* t = 4 */
+ /* t = 5 */
+ } u;
+} H225InfoRequestResponseStatus;
+
+EXTERN int asn1PE_H225InfoRequestResponseStatus (OOCTXT* pctxt, H225InfoRequestResponseStatus* pvalue);
+
+EXTERN int asn1PD_H225InfoRequestResponseStatus (OOCTXT* pctxt, H225InfoRequestResponseStatus* pvalue);
+
+/**************************************************************/
+/* */
+/* InfoRequestResponse */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225InfoRequestResponse {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned endpointAliasPresent : 1;
+ unsigned perCallInfoPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned needResponsePresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned irrStatusPresent : 1;
+ unsigned unsolicitedPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225NonStandardParameter nonStandardData;
+ H225RequestSeqNum requestSeqNum;
+ H225EndpointType endpointType;
+ H225EndpointIdentifier endpointIdentifier;
+ H225TransportAddress rasAddress;
+ H225_SeqOfH225TransportAddress callSignalAddress;
+ H225_SeqOfH225AliasAddress endpointAlias;
+ H225_SeqOfH225InfoRequestResponse_perCallInfo_element perCallInfo;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ ASN1BOOL needResponse;
+ H225CallCapacity capacity;
+ H225InfoRequestResponseStatus irrStatus;
+ ASN1BOOL unsolicited;
+ H225_SeqOfH225GenericData genericData;
+} H225InfoRequestResponse;
+
+EXTERN int asn1PE_H225InfoRequestResponse (OOCTXT* pctxt, H225InfoRequestResponse* pvalue);
+
+EXTERN int asn1PD_H225InfoRequestResponse (OOCTXT* pctxt, H225InfoRequestResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* NonStandardMessage */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225NonStandardMessage {
+ struct {
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+} H225NonStandardMessage;
+
+EXTERN int asn1PE_H225NonStandardMessage (OOCTXT* pctxt, H225NonStandardMessage* pvalue);
+
+EXTERN int asn1PD_H225NonStandardMessage (OOCTXT* pctxt, H225NonStandardMessage* pvalue);
+
+/**************************************************************/
+/* */
+/* UnknownMessageResponse */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225UnknownMessageResponse {
+ struct {
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned messageNotUnderstoodPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ ASN1DynOctStr messageNotUnderstood;
+} H225UnknownMessageResponse;
+
+EXTERN int asn1PE_H225UnknownMessageResponse (OOCTXT* pctxt, H225UnknownMessageResponse* pvalue);
+
+EXTERN int asn1PD_H225UnknownMessageResponse (OOCTXT* pctxt, H225UnknownMessageResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* RequestInProgress */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225RequestInProgress {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ ASN1USINT delay;
+} H225RequestInProgress;
+
+EXTERN int asn1PE_H225RequestInProgress (OOCTXT* pctxt, H225RequestInProgress* pvalue);
+
+EXTERN int asn1PD_H225RequestInProgress (OOCTXT* pctxt, H225RequestInProgress* pvalue);
+
+/**************************************************************/
+/* */
+/* ResourcesAvailableIndicate */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ResourcesAvailableIndicate {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned capacityPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225NonStandardParameter nonStandardData;
+ H225EndpointIdentifier endpointIdentifier;
+ H225_SeqOfH225SupportedProtocols protocols;
+ ASN1BOOL almostOutOfResources;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225CallCapacity capacity;
+ H225_SeqOfH225GenericData genericData;
+} H225ResourcesAvailableIndicate;
+
+EXTERN int asn1PE_H225ResourcesAvailableIndicate (OOCTXT* pctxt, H225ResourcesAvailableIndicate* pvalue);
+
+EXTERN int asn1PD_H225ResourcesAvailableIndicate (OOCTXT* pctxt, H225ResourcesAvailableIndicate* pvalue);
+
+/**************************************************************/
+/* */
+/* ResourcesAvailableConfirm */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ResourcesAvailableConfirm {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225ProtocolIdentifier protocolIdentifier;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225_SeqOfH225GenericData genericData;
+} H225ResourcesAvailableConfirm;
+
+EXTERN int asn1PE_H225ResourcesAvailableConfirm (OOCTXT* pctxt, H225ResourcesAvailableConfirm* pvalue);
+
+EXTERN int asn1PD_H225ResourcesAvailableConfirm (OOCTXT* pctxt, H225ResourcesAvailableConfirm* pvalue);
+
+/**************************************************************/
+/* */
+/* InfoRequestAck */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225InfoRequestAck {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+} H225InfoRequestAck;
+
+EXTERN int asn1PE_H225InfoRequestAck (OOCTXT* pctxt, H225InfoRequestAck* pvalue);
+
+EXTERN int asn1PD_H225InfoRequestAck (OOCTXT* pctxt, H225InfoRequestAck* pvalue);
+
+/**************************************************************/
+/* */
+/* InfoRequestNakReason */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225InfoRequestNakReason_notRegistered 1
+#define T_H225InfoRequestNakReason_securityDenial 2
+#define T_H225InfoRequestNakReason_undefinedReason 3
+#define T_H225InfoRequestNakReason_securityError 4
+#define T_H225InfoRequestNakReason_extElem1 5
+
+typedef struct EXTERN H225InfoRequestNakReason {
+ int t;
+ union {
+ /* t = 1 */
+ /* t = 2 */
+ /* t = 3 */
+ /* t = 4 */
+ H225SecurityErrors2 *securityError;
+ /* t = 5 */
+ } u;
+} H225InfoRequestNakReason;
+
+EXTERN int asn1PE_H225InfoRequestNakReason (OOCTXT* pctxt, H225InfoRequestNakReason* pvalue);
+
+EXTERN int asn1PD_H225InfoRequestNakReason (OOCTXT* pctxt, H225InfoRequestNakReason* pvalue);
+
+/**************************************************************/
+/* */
+/* InfoRequestNak */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225InfoRequestNak {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned altGKInfoPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225NonStandardParameter nonStandardData;
+ H225InfoRequestNakReason nakReason;
+ H225AltGKInfo altGKInfo;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+} H225InfoRequestNak;
+
+EXTERN int asn1PE_H225InfoRequestNak (OOCTXT* pctxt, H225InfoRequestNak* pvalue);
+
+EXTERN int asn1PD_H225InfoRequestNak (OOCTXT* pctxt, H225InfoRequestNak* pvalue);
+
+/**************************************************************/
+/* */
+/* ServiceControlIndication_callSpecific */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ServiceControlIndication_callSpecific {
+ H225CallIdentifier callIdentifier;
+ H225ConferenceIdentifier conferenceID;
+ ASN1BOOL answeredCall;
+} H225ServiceControlIndication_callSpecific;
+
+EXTERN int asn1PE_H225ServiceControlIndication_callSpecific (OOCTXT* pctxt, H225ServiceControlIndication_callSpecific* pvalue);
+
+EXTERN int asn1PD_H225ServiceControlIndication_callSpecific (OOCTXT* pctxt, H225ServiceControlIndication_callSpecific* pvalue);
+
+/**************************************************************/
+/* */
+/* ServiceControlIndication */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ServiceControlIndication {
+ struct {
+ unsigned nonStandardDataPresent : 1;
+ unsigned endpointIdentifierPresent : 1;
+ unsigned callSpecificPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225ServiceControlSession serviceControl;
+ H225EndpointIdentifier endpointIdentifier;
+ H225ServiceControlIndication_callSpecific callSpecific;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+} H225ServiceControlIndication;
+
+EXTERN int asn1PE_H225ServiceControlIndication (OOCTXT* pctxt, H225ServiceControlIndication* pvalue);
+
+EXTERN int asn1PD_H225ServiceControlIndication (OOCTXT* pctxt, H225ServiceControlIndication* pvalue);
+
+/**************************************************************/
+/* */
+/* ServiceControlResponse_result */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225ServiceControlResponse_result_started 1
+#define T_H225ServiceControlResponse_result_failed 2
+#define T_H225ServiceControlResponse_result_stopped 3
+#define T_H225ServiceControlResponse_result_notAvailable 4
+#define T_H225ServiceControlResponse_result_neededFeatureNotSupported 5
+#define T_H225ServiceControlResponse_result_extElem1 6
+
+typedef struct EXTERN H225ServiceControlResponse_result {
+ int t;
+} H225ServiceControlResponse_result;
+
+EXTERN int asn1PE_H225ServiceControlResponse_result (OOCTXT* pctxt, H225ServiceControlResponse_result* pvalue);
+
+EXTERN int asn1PD_H225ServiceControlResponse_result (OOCTXT* pctxt, H225ServiceControlResponse_result* pvalue);
+
+/**************************************************************/
+/* */
+/* ServiceControlResponse */
+/* */
+/**************************************************************/
+
+typedef struct EXTERN H225ServiceControlResponse {
+ struct {
+ unsigned resultPresent : 1;
+ unsigned nonStandardDataPresent : 1;
+ unsigned tokensPresent : 1;
+ unsigned cryptoTokensPresent : 1;
+ unsigned integrityCheckValuePresent : 1;
+ unsigned featureSetPresent : 1;
+ unsigned genericDataPresent : 1;
+ } m;
+ H225RequestSeqNum requestSeqNum;
+ H225ServiceControlResponse_result result;
+ H225NonStandardParameter nonStandardData;
+ H225_SeqOfH225ClearToken tokens;
+ H225_SeqOfH225CryptoH323Token cryptoTokens;
+ H225ICV integrityCheckValue;
+ H225FeatureSet featureSet;
+ H225_SeqOfH225GenericData genericData;
+} H225ServiceControlResponse;
+
+EXTERN int asn1PE_H225ServiceControlResponse (OOCTXT* pctxt, H225ServiceControlResponse* pvalue);
+
+EXTERN int asn1PD_H225ServiceControlResponse (OOCTXT* pctxt, H225ServiceControlResponse* pvalue);
+
+/**************************************************************/
+/* */
+/* _SeqOfH225AdmissionConfirm */
+/* */
+/**************************************************************/
+
+/* List of H225AdmissionConfirm */
+typedef DList H225_SeqOfH225AdmissionConfirm;
+
+EXTERN int asn1PE_H225_SeqOfH225AdmissionConfirm (OOCTXT* pctxt, H225_SeqOfH225AdmissionConfirm* pvalue);
+
+EXTERN int asn1PD_H225_SeqOfH225AdmissionConfirm (OOCTXT* pctxt, H225_SeqOfH225AdmissionConfirm* pvalue);
+
+/**************************************************************/
+/* */
+/* RasMessage */
+/* */
+/**************************************************************/
+
+/* Choice tag constants */
+
+#define T_H225RasMessage_gatekeeperRequest 1
+#define T_H225RasMessage_gatekeeperConfirm 2
+#define T_H225RasMessage_gatekeeperReject 3
+#define T_H225RasMessage_registrationRequest 4
+#define T_H225RasMessage_registrationConfirm 5
+#define T_H225RasMessage_registrationReject 6
+#define T_H225RasMessage_unregistrationRequest 7
+#define T_H225RasMessage_unregistrationConfirm 8
+#define T_H225RasMessage_unregistrationReject 9
+#define T_H225RasMessage_admissionRequest 10
+#define T_H225RasMessage_admissionConfirm 11
+#define T_H225RasMessage_admissionReject 12
+#define T_H225RasMessage_bandwidthRequest 13
+#define T_H225RasMessage_bandwidthConfirm 14
+#define T_H225RasMessage_bandwidthReject 15
+#define T_H225RasMessage_disengageRequest 16
+#define T_H225RasMessage_disengageConfirm 17
+#define T_H225RasMessage_disengageReject 18
+#define T_H225RasMessage_locationRequest 19
+#define T_H225RasMessage_locationConfirm 20
+#define T_H225RasMessage_locationReject 21
+#define T_H225RasMessage_infoRequest 22
+#define T_H225RasMessage_infoRequestResponse 23
+#define T_H225RasMessage_nonStandardMessage 24
+#define T_H225RasMessage_unknownMessageResponse 25
+#define T_H225RasMessage_requestInProgress 26
+#define T_H225RasMessage_resourcesAvailableIndicate 27
+#define T_H225RasMessage_resourcesAvailableConfirm 28
+#define T_H225RasMessage_infoRequestAck 29
+#define T_H225RasMessage_infoRequestNak 30
+#define T_H225RasMessage_serviceControlIndication 31
+#define T_H225RasMessage_serviceControlResponse 32
+#define T_H225RasMessage_admissionConfirmSequence 33
+#define T_H225RasMessage_extElem1 34
+
+typedef struct EXTERN H225RasMessage {
+ int t;
+ union {
+ /* t = 1 */
+ H225GatekeeperRequest *gatekeeperRequest;
+ /* t = 2 */
+ H225GatekeeperConfirm *gatekeeperConfirm;
+ /* t = 3 */
+ H225GatekeeperReject *gatekeeperReject;
+ /* t = 4 */
+ H225RegistrationRequest *registrationRequest;
+ /* t = 5 */
+ H225RegistrationConfirm *registrationConfirm;
+ /* t = 6 */
+ H225RegistrationReject *registrationReject;
+ /* t = 7 */
+ H225UnregistrationRequest *unregistrationRequest;
+ /* t = 8 */
+ H225UnregistrationConfirm *unregistrationConfirm;
+ /* t = 9 */
+ H225UnregistrationReject *unregistrationReject;
+ /* t = 10 */
+ H225AdmissionRequest *admissionRequest;
+ /* t = 11 */
+ H225AdmissionConfirm *admissionConfirm;
+ /* t = 12 */
+ H225AdmissionReject *admissionReject;
+ /* t = 13 */
+ H225BandwidthRequest *bandwidthRequest;
+ /* t = 14 */
+ H225BandwidthConfirm *bandwidthConfirm;
+ /* t = 15 */
+ H225BandwidthReject *bandwidthReject;
+ /* t = 16 */
+ H225DisengageRequest *disengageRequest;
+ /* t = 17 */
+ H225DisengageConfirm *disengageConfirm;
+ /* t = 18 */
+ H225DisengageReject *disengageReject;
+ /* t = 19 */
+ H225LocationRequest *locationRequest;
+ /* t = 20 */
+ H225LocationConfirm *locationConfirm;
+ /* t = 21 */
+ H225LocationReject *locationReject;
+ /* t = 22 */
+ H225InfoRequest *infoRequest;
+ /* t = 23 */
+ H225InfoRequestResponse *infoRequestResponse;
+ /* t = 24 */
+ H225NonStandardMessage *nonStandardMessage;
+ /* t = 25 */
+ H225UnknownMessageResponse *unknownMessageResponse;
+ /* t = 26 */
+ H225RequestInProgress *requestInProgress;
+ /* t = 27 */
+ H225ResourcesAvailableIndicate *resourcesAvailableIndicate;
+ /* t = 28 */
+ H225ResourcesAvailableConfirm *resourcesAvailableConfirm;
+ /* t = 29 */
+ H225InfoRequestAck *infoRequestAck;
+ /* t = 30 */
+ H225InfoRequestNak *infoRequestNak;
+ /* t = 31 */
+ H225ServiceControlIndication *serviceControlIndication;
+ /* t = 32 */
+ H225ServiceControlResponse *serviceControlResponse;
+ /* t = 33 */
+ H225_SeqOfH225AdmissionConfirm *admissionConfirmSequence;
+ /* t = 34 */
+ } u;
+} H225RasMessage;
+
+EXTERN int asn1PE_H225RasMessage (OOCTXT* pctxt, H225RasMessage* pvalue);
+
+EXTERN int asn1PD_H225RasMessage (OOCTXT* pctxt, H225RasMessage* pvalue);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/addons/ooh323c/src/h323/H323-MESSAGESDec.c b/addons/ooh323c/src/h323/H323-MESSAGESDec.c
new file mode 100644
index 000000000..2f8700b66
--- /dev/null
+++ b/addons/ooh323c/src/h323/H323-MESSAGESDec.c
@@ -0,0 +1,27199 @@
+/*
+ * Copyright (C) 2004-2005 by Objective Systems, Inc.
+ *
+ * This software is furnished under an open source license and may be
+ * used and copied only in accordance with the terms of this license.
+ * The text of the license may generally be found in the root
+ * directory of this installation in the COPYING file. It
+ * can also be viewed online at the following URL:
+ *
+ * http://www.obj-sys.com/open/license.html
+ *
+ * Any redistributions of this file including modified versions must
+ * maintain this copyright notice.
+ *
+ *****************************************************************************/
+
+#include "ooasn1.h"
+#include "H323-MESSAGES.h"
+#include "eventHandler.h"
+
+/**************************************************************/
+/* */
+/* ScreeningIndicator */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ScreeningIndicator (OOCTXT* pctxt, H225ScreeningIndicator* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (extbit) {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+
+ *pvalue = ui;
+ }
+ else {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 3);
+ if (stat != ASN_OK) return stat;
+
+ switch (ui) {
+ case 0: *pvalue = userProvidedNotScreened; break;
+ case 1: *pvalue = userProvidedVerifiedAndPassed; break;
+ case 2: *pvalue = userProvidedVerifiedAndFailed; break;
+ case 3: *pvalue = networkProvided; break;
+ default: return ASN_E_INVENUM;
+ }
+ }
+ invokeUIntValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NumberDigits */
+/* */
+/**************************************************************/
+
+extern EXTERN const char* gs_H323_MESSAGES_NumberDigits_CharSet;
+
+EXTERN int asn1PD_H225NumberDigits (OOCTXT* pctxt, H225NumberDigits* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, pvalue, gs_H323_MESSAGES_NumberDigits_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TBCD_STRING */
+/* */
+/**************************************************************/
+
+extern EXTERN const char* gs_H323_MESSAGES_TBCD_STRING_CharSet;
+
+EXTERN int asn1PD_H225TBCD_STRING (OOCTXT* pctxt, H225TBCD_STRING* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeConstrainedStringEx (pctxt, pvalue, gs_H323_MESSAGES_TBCD_STRING_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GloballyUniqueID */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225GloballyUniqueID (OOCTXT* pctxt, H225GloballyUniqueID* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ConferenceIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ConferenceIdentifier (OOCTXT* pctxt, H225ConferenceIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = asn1PD_H225GloballyUniqueID (pctxt, pvalue);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* RequestSeqNum */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225RequestSeqNum (OOCTXT* pctxt, H225RequestSeqNum* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeConsUInt16 (pctxt, pvalue, 1U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GatekeeperIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225GatekeeperIdentifier (OOCTXT* pctxt, H225GatekeeperIdentifier* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBMPString (pctxt, pvalue, 0);
+ if (stat != ASN_OK) return stat;
+ invokeCharStr16BitValue (pctxt, pvalue->nchars, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* BandWidth */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225BandWidth (OOCTXT* pctxt, H225BandWidth* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeConsUnsigned (pctxt, pvalue, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* CallReferenceValue */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225CallReferenceValue (OOCTXT* pctxt, H225CallReferenceValue* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeConsUInt16 (pctxt, pvalue, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EndpointIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225EndpointIdentifier (OOCTXT* pctxt, H225EndpointIdentifier* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 128, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBMPString (pctxt, pvalue, 0);
+ if (stat != ASN_OK) return stat;
+ invokeCharStr16BitValue (pctxt, pvalue->nchars, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ProtocolIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ProtocolIdentifier (OOCTXT* pctxt, H225ProtocolIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeObjectIdentifier (pctxt, pvalue);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->numids, pvalue->subid);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TimeToLive */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TimeToLive (OOCTXT* pctxt, H225TimeToLive* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeConsUnsigned (pctxt, pvalue, 1U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, *pvalue);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H248PackagesDescriptor */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H248PackagesDescriptor (OOCTXT* pctxt, H225H248PackagesDescriptor* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)pvalue);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H248SignalsDescriptor */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H248SignalsDescriptor (OOCTXT* pctxt, H225H248SignalsDescriptor* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)pvalue);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GenericIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225GenericIdentifier (OOCTXT* pctxt, H225GenericIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 2);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* standard */
+ case 0:
+ invokeStartElement (pctxt, "standard", -1);
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (extbit == 0) {
+ stat = decodeConsInteger (pctxt, &pvalue->u.standard, 0, 16383);
+ if (stat != ASN_OK) return stat;
+ }
+ else {
+ stat = decodeUnconsInteger (pctxt, &pvalue->u.standard);
+ if (stat != ASN_OK) return stat;
+ }
+ invokeIntValue (pctxt, pvalue->u.standard);
+
+ invokeEndElement (pctxt, "standard", -1);
+
+ break;
+
+ /* oid */
+ case 1:
+ invokeStartElement (pctxt, "oid", -1);
+
+ pvalue->u.oid = ALLOC_ASN1ELEM (pctxt, ASN1OBJID);
+
+ stat = decodeObjectIdentifier (pctxt, pvalue->u.oid);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->u.oid->numids, pvalue->u.oid->subid);
+
+ invokeEndElement (pctxt, "oid", -1);
+
+ break;
+
+ /* nonStandard */
+ case 2:
+ invokeStartElement (pctxt, "nonStandard", -1);
+
+ pvalue->u.nonStandard = ALLOC_ASN1ELEM (pctxt, H225GloballyUniqueID);
+
+ stat = asn1PD_H225GloballyUniqueID (pctxt, pvalue->u.nonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandard", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 4;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipAddress_ip */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ipAddress_ip (OOCTXT* pctxt, H225TransportAddress_ipAddress_ip* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ipAddress (OOCTXT* pctxt, H225TransportAddress_ipAddress* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode ip */
+
+ invokeStartElement (pctxt, "ip", -1);
+
+ stat = asn1PD_H225TransportAddress_ipAddress_ip (pctxt, &pvalue->ip);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "ip", -1);
+
+ /* decode port */
+
+ invokeStartElement (pctxt, "port", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->port, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->port);
+
+ invokeEndElement (pctxt, "port", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipSourceRoute_ip */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ipSourceRoute_ip (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_ip* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipSourceRoute_route_element */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ipSourceRoute_route_element (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_route_element* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* _SeqOfH225TransportAddress_ipSourceRoute_route_element */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225_SeqOfH225TransportAddress_ipSourceRoute_route_element (OOCTXT* pctxt, H225_SeqOfH225TransportAddress_ipSourceRoute_route_element* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ stat = decodeLength (pctxt, &pvalue->n);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ ALLOC_ASN1ARRAY (pctxt, pvalue, H225TransportAddress_ipSourceRoute_route_element);
+
+ for (xx1 = 0; xx1 < pvalue->n; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ stat = asn1PD_H225TransportAddress_ipSourceRoute_route_element (pctxt, &pvalue->elem[xx1]);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipSourceRoute_routing */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ipSourceRoute_routing (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute_routing* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* strict */
+ case 0:
+ invokeStartElement (pctxt, "strict", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "strict", -1);
+
+ break;
+
+ /* loose */
+ case 1:
+ invokeStartElement (pctxt, "loose", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "loose", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipSourceRoute */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ipSourceRoute (OOCTXT* pctxt, H225TransportAddress_ipSourceRoute* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode ip */
+
+ invokeStartElement (pctxt, "ip", -1);
+
+ stat = asn1PD_H225TransportAddress_ipSourceRoute_ip (pctxt, &pvalue->ip);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "ip", -1);
+
+ /* decode port */
+
+ invokeStartElement (pctxt, "port", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->port, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->port);
+
+ invokeEndElement (pctxt, "port", -1);
+
+ /* decode route */
+
+ invokeStartElement (pctxt, "route", -1);
+
+ stat = asn1PD_H225_SeqOfH225TransportAddress_ipSourceRoute_route_element (pctxt, &pvalue->route);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "route", -1);
+
+ /* decode routing */
+
+ invokeStartElement (pctxt, "routing", -1);
+
+ stat = asn1PD_H225TransportAddress_ipSourceRoute_routing (pctxt, &pvalue->routing);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "routing", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipxAddress_node */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ipxAddress_node (OOCTXT* pctxt, H225TransportAddress_ipxAddress_node* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 6, 6, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipxAddress_netnum */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ipxAddress_netnum (OOCTXT* pctxt, H225TransportAddress_ipxAddress_netnum* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 4, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipxAddress_port */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ipxAddress_port (OOCTXT* pctxt, H225TransportAddress_ipxAddress_port* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 2, 2, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ipxAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ipxAddress (OOCTXT* pctxt, H225TransportAddress_ipxAddress* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode node */
+
+ invokeStartElement (pctxt, "node", -1);
+
+ stat = asn1PD_H225TransportAddress_ipxAddress_node (pctxt, &pvalue->node);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "node", -1);
+
+ /* decode netnum */
+
+ invokeStartElement (pctxt, "netnum", -1);
+
+ stat = asn1PD_H225TransportAddress_ipxAddress_netnum (pctxt, &pvalue->netnum);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "netnum", -1);
+
+ /* decode port */
+
+ invokeStartElement (pctxt, "port", -1);
+
+ stat = asn1PD_H225TransportAddress_ipxAddress_port (pctxt, &pvalue->port);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "port", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ip6Address_ip */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ip6Address_ip (OOCTXT* pctxt, H225TransportAddress_ip6Address_ip* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_ip6Address */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_ip6Address (OOCTXT* pctxt, H225TransportAddress_ip6Address* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode ip */
+
+ invokeStartElement (pctxt, "ip", -1);
+
+ stat = asn1PD_H225TransportAddress_ip6Address_ip (pctxt, &pvalue->ip);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "ip", -1);
+
+ /* decode port */
+
+ invokeStartElement (pctxt, "port", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->port, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->port);
+
+ invokeEndElement (pctxt, "port", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_netBios */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_netBios (OOCTXT* pctxt, H225TransportAddress_netBios* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 16, 16, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress_nsap */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress_nsap (OOCTXT* pctxt, H225TransportAddress_nsap* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 20, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H221NonStandard */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H221NonStandard (OOCTXT* pctxt, H225H221NonStandard* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* decode t35CountryCode */
+
+ invokeStartElement (pctxt, "t35CountryCode", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->t35CountryCode, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->t35CountryCode);
+
+ invokeEndElement (pctxt, "t35CountryCode", -1);
+
+ /* decode t35Extension */
+
+ invokeStartElement (pctxt, "t35Extension", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->t35Extension, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->t35Extension);
+
+ invokeEndElement (pctxt, "t35Extension", -1);
+
+ /* decode manufacturerCode */
+
+ invokeStartElement (pctxt, "manufacturerCode", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->manufacturerCode, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->manufacturerCode);
+
+ invokeEndElement (pctxt, "manufacturerCode", -1);
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NonStandardIdentifier */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225NonStandardIdentifier (OOCTXT* pctxt, H225NonStandardIdentifier* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* object */
+ case 0:
+ invokeStartElement (pctxt, "object", -1);
+
+ pvalue->u.object = ALLOC_ASN1ELEM (pctxt, ASN1OBJID);
+
+ stat = decodeObjectIdentifier (pctxt, pvalue->u.object);
+ if (stat != ASN_OK) return stat;
+ invokeOidValue (pctxt, pvalue->u.object->numids, pvalue->u.object->subid);
+
+ invokeEndElement (pctxt, "object", -1);
+
+ break;
+
+ /* h221NonStandard */
+ case 1:
+ invokeStartElement (pctxt, "h221NonStandard", -1);
+
+ pvalue->u.h221NonStandard = ALLOC_ASN1ELEM (pctxt, H225H221NonStandard);
+
+ stat = asn1PD_H225H221NonStandard (pctxt, pvalue->u.h221NonStandard);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "h221NonStandard", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* NonStandardParameter */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225NonStandardParameter (OOCTXT* pctxt, H225NonStandardParameter* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode nonStandardIdentifier */
+
+ invokeStartElement (pctxt, "nonStandardIdentifier", -1);
+
+ stat = asn1PD_H225NonStandardIdentifier (pctxt, &pvalue->nonStandardIdentifier);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardIdentifier", -1);
+
+ /* decode data */
+
+ invokeStartElement (pctxt, "data", -1);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)&pvalue->data);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->data.numocts, pvalue->data.data);
+
+ invokeEndElement (pctxt, "data", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* TransportAddress */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225TransportAddress (OOCTXT* pctxt, H225TransportAddress* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 6);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* ipAddress */
+ case 0:
+ invokeStartElement (pctxt, "ipAddress", -1);
+
+ pvalue->u.ipAddress = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_ipAddress);
+
+ stat = asn1PD_H225TransportAddress_ipAddress (pctxt, pvalue->u.ipAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "ipAddress", -1);
+
+ break;
+
+ /* ipSourceRoute */
+ case 1:
+ invokeStartElement (pctxt, "ipSourceRoute", -1);
+
+ pvalue->u.ipSourceRoute = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_ipSourceRoute);
+
+ stat = asn1PD_H225TransportAddress_ipSourceRoute (pctxt, pvalue->u.ipSourceRoute);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "ipSourceRoute", -1);
+
+ break;
+
+ /* ipxAddress */
+ case 2:
+ invokeStartElement (pctxt, "ipxAddress", -1);
+
+ pvalue->u.ipxAddress = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_ipxAddress);
+
+ stat = asn1PD_H225TransportAddress_ipxAddress (pctxt, pvalue->u.ipxAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "ipxAddress", -1);
+
+ break;
+
+ /* ip6Address */
+ case 3:
+ invokeStartElement (pctxt, "ip6Address", -1);
+
+ pvalue->u.ip6Address = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_ip6Address);
+
+ stat = asn1PD_H225TransportAddress_ip6Address (pctxt, pvalue->u.ip6Address);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "ip6Address", -1);
+
+ break;
+
+ /* netBios */
+ case 4:
+ invokeStartElement (pctxt, "netBios", -1);
+
+ pvalue->u.netBios = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_netBios);
+
+ stat = asn1PD_H225TransportAddress_netBios (pctxt, pvalue->u.netBios);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "netBios", -1);
+
+ break;
+
+ /* nsap */
+ case 5:
+ invokeStartElement (pctxt, "nsap", -1);
+
+ pvalue->u.nsap = ALLOC_ASN1ELEM (pctxt, H225TransportAddress_nsap);
+
+ stat = asn1PD_H225TransportAddress_nsap (pctxt, pvalue->u.nsap);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nsap", -1);
+
+ break;
+
+ /* nonStandardAddress */
+ case 6:
+ invokeStartElement (pctxt, "nonStandardAddress", -1);
+
+ pvalue->u.nonStandardAddress = ALLOC_ASN1ELEM (pctxt, H225NonStandardParameter);
+
+ stat = asn1PD_H225NonStandardParameter (pctxt, pvalue->u.nonStandardAddress);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nonStandardAddress", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 8;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* PublicTypeOfNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225PublicTypeOfNumber (OOCTXT* pctxt, H225PublicTypeOfNumber* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 5);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* unknown */
+ case 0:
+ invokeStartElement (pctxt, "unknown", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "unknown", -1);
+
+ break;
+
+ /* internationalNumber */
+ case 1:
+ invokeStartElement (pctxt, "internationalNumber", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "internationalNumber", -1);
+
+ break;
+
+ /* nationalNumber */
+ case 2:
+ invokeStartElement (pctxt, "nationalNumber", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "nationalNumber", -1);
+
+ break;
+
+ /* networkSpecificNumber */
+ case 3:
+ invokeStartElement (pctxt, "networkSpecificNumber", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "networkSpecificNumber", -1);
+
+ break;
+
+ /* subscriberNumber */
+ case 4:
+ invokeStartElement (pctxt, "subscriberNumber", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "subscriberNumber", -1);
+
+ break;
+
+ /* abbreviatedNumber */
+ case 5:
+ invokeStartElement (pctxt, "abbreviatedNumber", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "abbreviatedNumber", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 7;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* PublicPartyNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225PublicPartyNumber (OOCTXT* pctxt, H225PublicPartyNumber* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode publicTypeOfNumber */
+
+ invokeStartElement (pctxt, "publicTypeOfNumber", -1);
+
+ stat = asn1PD_H225PublicTypeOfNumber (pctxt, &pvalue->publicTypeOfNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "publicTypeOfNumber", -1);
+
+ /* decode publicNumberDigits */
+
+ invokeStartElement (pctxt, "publicNumberDigits", -1);
+
+ stat = asn1PD_H225NumberDigits (pctxt, &pvalue->publicNumberDigits);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "publicNumberDigits", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* PrivateTypeOfNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225PrivateTypeOfNumber (OOCTXT* pctxt, H225PrivateTypeOfNumber* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 5);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* unknown */
+ case 0:
+ invokeStartElement (pctxt, "unknown", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "unknown", -1);
+
+ break;
+
+ /* level2RegionalNumber */
+ case 1:
+ invokeStartElement (pctxt, "level2RegionalNumber", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "level2RegionalNumber", -1);
+
+ break;
+
+ /* level1RegionalNumber */
+ case 2:
+ invokeStartElement (pctxt, "level1RegionalNumber", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "level1RegionalNumber", -1);
+
+ break;
+
+ /* pISNSpecificNumber */
+ case 3:
+ invokeStartElement (pctxt, "pISNSpecificNumber", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "pISNSpecificNumber", -1);
+
+ break;
+
+ /* localNumber */
+ case 4:
+ invokeStartElement (pctxt, "localNumber", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "localNumber", -1);
+
+ break;
+
+ /* abbreviatedNumber */
+ case 5:
+ invokeStartElement (pctxt, "abbreviatedNumber", -1);
+
+ /* NULL */
+ invokeNullValue (pctxt);
+
+ invokeEndElement (pctxt, "abbreviatedNumber", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 7;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* PrivatePartyNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225PrivatePartyNumber (OOCTXT* pctxt, H225PrivatePartyNumber* pvalue)
+{
+ int stat = ASN_OK;
+
+ /* decode privateTypeOfNumber */
+
+ invokeStartElement (pctxt, "privateTypeOfNumber", -1);
+
+ stat = asn1PD_H225PrivateTypeOfNumber (pctxt, &pvalue->privateTypeOfNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "privateTypeOfNumber", -1);
+
+ /* decode privateNumberDigits */
+
+ invokeStartElement (pctxt, "privateNumberDigits", -1);
+
+ stat = asn1PD_H225NumberDigits (pctxt, &pvalue->privateNumberDigits);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "privateNumberDigits", -1);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* PartyNumber */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225PartyNumber (OOCTXT* pctxt, H225PartyNumber* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 4);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* e164Number */
+ case 0:
+ invokeStartElement (pctxt, "e164Number", -1);
+
+ pvalue->u.e164Number = ALLOC_ASN1ELEM (pctxt, H225PublicPartyNumber);
+
+ stat = asn1PD_H225PublicPartyNumber (pctxt, pvalue->u.e164Number);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "e164Number", -1);
+
+ break;
+
+ /* dataPartyNumber */
+ case 1:
+ invokeStartElement (pctxt, "dataPartyNumber", -1);
+
+ stat = asn1PD_H225NumberDigits (pctxt, &pvalue->u.dataPartyNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "dataPartyNumber", -1);
+
+ break;
+
+ /* telexPartyNumber */
+ case 2:
+ invokeStartElement (pctxt, "telexPartyNumber", -1);
+
+ stat = asn1PD_H225NumberDigits (pctxt, &pvalue->u.telexPartyNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "telexPartyNumber", -1);
+
+ break;
+
+ /* privateNumber */
+ case 3:
+ invokeStartElement (pctxt, "privateNumber", -1);
+
+ pvalue->u.privateNumber = ALLOC_ASN1ELEM (pctxt, H225PrivatePartyNumber);
+
+ stat = asn1PD_H225PrivatePartyNumber (pctxt, pvalue->u.privateNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "privateNumber", -1);
+
+ break;
+
+ /* nationalStandardPartyNumber */
+ case 4:
+ invokeStartElement (pctxt, "nationalStandardPartyNumber", -1);
+
+ stat = asn1PD_H225NumberDigits (pctxt, &pvalue->u.nationalStandardPartyNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nationalStandardPartyNumber", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 6;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM_system_id */
+/* */
+/**************************************************************/
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_system_id_sid_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_system_id_mid_CharSet;
+
+EXTERN int asn1PD_H225ANSI_41_UIM_system_id (OOCTXT* pctxt, H225ANSI_41_UIM_system_id* pvalue)
+{
+ static Asn1SizeCnst sid_lsize1 = { 0, 1, 4, 0 };
+ static Asn1SizeCnst mid_lsize1 = { 0, 1, 4, 0 };
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* sid */
+ case 0:
+ invokeStartElement (pctxt, "sid", -1);
+
+ addSizeConstraint (pctxt, &sid_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->u.sid, gs_H323_MESSAGES_ANSI_41_UIM_system_id_sid_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->u.sid);
+
+ invokeEndElement (pctxt, "sid", -1);
+
+ break;
+
+ /* mid */
+ case 1:
+ invokeStartElement (pctxt, "mid", -1);
+
+ addSizeConstraint (pctxt, &mid_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->u.mid, gs_H323_MESSAGES_ANSI_41_UIM_system_id_mid_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->u.mid);
+
+ invokeEndElement (pctxt, "mid", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM_systemMyTypeCode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ANSI_41_UIM_systemMyTypeCode (OOCTXT* pctxt, H225ANSI_41_UIM_systemMyTypeCode* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 1, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM_systemAccessType */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ANSI_41_UIM_systemAccessType (OOCTXT* pctxt, H225ANSI_41_UIM_systemAccessType* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 1, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM_qualificationInformationCode */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225ANSI_41_UIM_qualificationInformationCode (OOCTXT* pctxt, H225ANSI_41_UIM_qualificationInformationCode* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 1, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* ANSI_41_UIM */
+/* */
+/**************************************************************/
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_imsi_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_min_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_mdn_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_msisdn_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_esn_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_mscid_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_sesn_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_ANSI_41_UIM_soc_CharSet;
+
+EXTERN int asn1PD_H225ANSI_41_UIM (OOCTXT* pctxt, H225ANSI_41_UIM* pvalue)
+{
+ static Asn1SizeCnst imsi_lsize1 = { 0, 3, 16, 0 };
+ static Asn1SizeCnst min_lsize1 = { 0, 3, 16, 0 };
+ static Asn1SizeCnst mdn_lsize1 = { 0, 3, 16, 0 };
+ static Asn1SizeCnst msisdn_lsize1 = { 0, 3, 16, 0 };
+ static Asn1SizeCnst esn_lsize1 = { 0, 16, 16, 0 };
+ static Asn1SizeCnst mscid_lsize1 = { 0, 3, 16, 0 };
+ static Asn1SizeCnst sesn_lsize1 = { 0, 16, 16, 0 };
+ static Asn1SizeCnst soc_lsize1 = { 0, 3, 16, 0 };
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.imsiPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.minPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.mdnPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.msisdnPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.esnPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.mscidPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.systemMyTypeCodePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.systemAccessTypePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.qualificationInformationCodePresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.sesnPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.socPresent = optbit;
+
+ /* decode imsi */
+
+ if (pvalue->m.imsiPresent) {
+ invokeStartElement (pctxt, "imsi", -1);
+
+ addSizeConstraint (pctxt, &imsi_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->imsi, gs_H323_MESSAGES_ANSI_41_UIM_imsi_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->imsi);
+
+ invokeEndElement (pctxt, "imsi", -1);
+ }
+
+ /* decode min */
+
+ if (pvalue->m.minPresent) {
+ invokeStartElement (pctxt, "min", -1);
+
+ addSizeConstraint (pctxt, &min_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->min, gs_H323_MESSAGES_ANSI_41_UIM_min_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->min);
+
+ invokeEndElement (pctxt, "min", -1);
+ }
+
+ /* decode mdn */
+
+ if (pvalue->m.mdnPresent) {
+ invokeStartElement (pctxt, "mdn", -1);
+
+ addSizeConstraint (pctxt, &mdn_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->mdn, gs_H323_MESSAGES_ANSI_41_UIM_mdn_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->mdn);
+
+ invokeEndElement (pctxt, "mdn", -1);
+ }
+
+ /* decode msisdn */
+
+ if (pvalue->m.msisdnPresent) {
+ invokeStartElement (pctxt, "msisdn", -1);
+
+ addSizeConstraint (pctxt, &msisdn_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->msisdn, gs_H323_MESSAGES_ANSI_41_UIM_msisdn_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->msisdn);
+
+ invokeEndElement (pctxt, "msisdn", -1);
+ }
+
+ /* decode esn */
+
+ if (pvalue->m.esnPresent) {
+ invokeStartElement (pctxt, "esn", -1);
+
+ addSizeConstraint (pctxt, &esn_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->esn, gs_H323_MESSAGES_ANSI_41_UIM_esn_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->esn);
+
+ invokeEndElement (pctxt, "esn", -1);
+ }
+
+ /* decode mscid */
+
+ if (pvalue->m.mscidPresent) {
+ invokeStartElement (pctxt, "mscid", -1);
+
+ addSizeConstraint (pctxt, &mscid_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->mscid, gs_H323_MESSAGES_ANSI_41_UIM_mscid_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->mscid);
+
+ invokeEndElement (pctxt, "mscid", -1);
+ }
+
+ /* decode system_id */
+
+ invokeStartElement (pctxt, "system_id", -1);
+
+ stat = asn1PD_H225ANSI_41_UIM_system_id (pctxt, &pvalue->system_id);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "system_id", -1);
+
+ /* decode systemMyTypeCode */
+
+ if (pvalue->m.systemMyTypeCodePresent) {
+ invokeStartElement (pctxt, "systemMyTypeCode", -1);
+
+ stat = asn1PD_H225ANSI_41_UIM_systemMyTypeCode (pctxt, &pvalue->systemMyTypeCode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "systemMyTypeCode", -1);
+ }
+
+ /* decode systemAccessType */
+
+ if (pvalue->m.systemAccessTypePresent) {
+ invokeStartElement (pctxt, "systemAccessType", -1);
+
+ stat = asn1PD_H225ANSI_41_UIM_systemAccessType (pctxt, &pvalue->systemAccessType);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "systemAccessType", -1);
+ }
+
+ /* decode qualificationInformationCode */
+
+ if (pvalue->m.qualificationInformationCodePresent) {
+ invokeStartElement (pctxt, "qualificationInformationCode", -1);
+
+ stat = asn1PD_H225ANSI_41_UIM_qualificationInformationCode (pctxt, &pvalue->qualificationInformationCode);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "qualificationInformationCode", -1);
+ }
+
+ /* decode sesn */
+
+ if (pvalue->m.sesnPresent) {
+ invokeStartElement (pctxt, "sesn", -1);
+
+ addSizeConstraint (pctxt, &sesn_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->sesn, gs_H323_MESSAGES_ANSI_41_UIM_sesn_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->sesn);
+
+ invokeEndElement (pctxt, "sesn", -1);
+ }
+
+ /* decode soc */
+
+ if (pvalue->m.socPresent) {
+ invokeStartElement (pctxt, "soc", -1);
+
+ addSizeConstraint (pctxt, &soc_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->soc, gs_H323_MESSAGES_ANSI_41_UIM_soc_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->soc);
+
+ invokeEndElement (pctxt, "soc", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GSM_UIM_tmsi */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225GSM_UIM_tmsi (OOCTXT* pctxt, H225GSM_UIM_tmsi* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 4, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GSM_UIM */
+/* */
+/**************************************************************/
+
+extern EXTERN const char* gs_H323_MESSAGES_GSM_UIM_imsi_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_GSM_UIM_msisdn_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_GSM_UIM_imei_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_GSM_UIM_hplmn_CharSet;
+
+extern EXTERN const char* gs_H323_MESSAGES_GSM_UIM_vplmn_CharSet;
+
+EXTERN int asn1PD_H225GSM_UIM (OOCTXT* pctxt, H225GSM_UIM* pvalue)
+{
+ static Asn1SizeCnst imsi_lsize1 = { 0, 3, 16, 0 };
+ static Asn1SizeCnst msisdn_lsize1 = { 0, 3, 16, 0 };
+ static Asn1SizeCnst imei_lsize1 = { 0, 15, 16, 0 };
+ static Asn1SizeCnst hplmn_lsize1 = { 0, 1, 4, 0 };
+ static Asn1SizeCnst vplmn_lsize1 = { 0, 1, 4, 0 };
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.imsiPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.tmsiPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.msisdnPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.imeiPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.hplmnPresent = optbit;
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.vplmnPresent = optbit;
+
+ /* decode imsi */
+
+ if (pvalue->m.imsiPresent) {
+ invokeStartElement (pctxt, "imsi", -1);
+
+ addSizeConstraint (pctxt, &imsi_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->imsi, gs_H323_MESSAGES_GSM_UIM_imsi_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->imsi);
+
+ invokeEndElement (pctxt, "imsi", -1);
+ }
+
+ /* decode tmsi */
+
+ if (pvalue->m.tmsiPresent) {
+ invokeStartElement (pctxt, "tmsi", -1);
+
+ stat = asn1PD_H225GSM_UIM_tmsi (pctxt, &pvalue->tmsi);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "tmsi", -1);
+ }
+
+ /* decode msisdn */
+
+ if (pvalue->m.msisdnPresent) {
+ invokeStartElement (pctxt, "msisdn", -1);
+
+ addSizeConstraint (pctxt, &msisdn_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->msisdn, gs_H323_MESSAGES_GSM_UIM_msisdn_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->msisdn);
+
+ invokeEndElement (pctxt, "msisdn", -1);
+ }
+
+ /* decode imei */
+
+ if (pvalue->m.imeiPresent) {
+ invokeStartElement (pctxt, "imei", -1);
+
+ addSizeConstraint (pctxt, &imei_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->imei, gs_H323_MESSAGES_GSM_UIM_imei_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->imei);
+
+ invokeEndElement (pctxt, "imei", -1);
+ }
+
+ /* decode hplmn */
+
+ if (pvalue->m.hplmnPresent) {
+ invokeStartElement (pctxt, "hplmn", -1);
+
+ addSizeConstraint (pctxt, &hplmn_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->hplmn, gs_H323_MESSAGES_GSM_UIM_hplmn_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->hplmn);
+
+ invokeEndElement (pctxt, "hplmn", -1);
+ }
+
+ /* decode vplmn */
+
+ if (pvalue->m.vplmnPresent) {
+ invokeStartElement (pctxt, "vplmn", -1);
+
+ addSizeConstraint (pctxt, &vplmn_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->vplmn, gs_H323_MESSAGES_GSM_UIM_vplmn_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->vplmn);
+
+ invokeEndElement (pctxt, "vplmn", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* MobileUIM */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225MobileUIM (OOCTXT* pctxt, H225MobileUIM* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* ansi_41_uim */
+ case 0:
+ invokeStartElement (pctxt, "ansi_41_uim", -1);
+
+ pvalue->u.ansi_41_uim = ALLOC_ASN1ELEM (pctxt, H225ANSI_41_UIM);
+
+ stat = asn1PD_H225ANSI_41_UIM (pctxt, pvalue->u.ansi_41_uim);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "ansi_41_uim", -1);
+
+ break;
+
+ /* gsm_uim */
+ case 1:
+ invokeStartElement (pctxt, "gsm_uim", -1);
+
+ pvalue->u.gsm_uim = ALLOC_ASN1ELEM (pctxt, H225GSM_UIM);
+
+ stat = asn1PD_H225GSM_UIM (pctxt, pvalue->u.gsm_uim);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "gsm_uim", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* AliasAddress */
+/* */
+/**************************************************************/
+
+extern EXTERN const char* gs_H323_MESSAGES_AliasAddress_dialedDigits_CharSet;
+
+EXTERN int asn1PD_H225AliasAddress (OOCTXT* pctxt, H225AliasAddress* pvalue)
+{
+ static Asn1SizeCnst dialedDigits_lsize1 = { 0, 1, 128, 0 };
+ static Asn1SizeCnst h323_ID_lsize1 = { 0, 1, 256, 0 };
+ static Asn1SizeCnst url_ID_lsize1 = { 0, 1, 512, 0 };
+ static Asn1SizeCnst email_ID_lsize1 = { 0, 1, 512, 0 };
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+ OOCTXT lctxt;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 1);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* dialedDigits */
+ case 0:
+ invokeStartElement (pctxt, "dialedDigits", -1);
+
+ addSizeConstraint (pctxt, &dialedDigits_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->u.dialedDigits, gs_H323_MESSAGES_AliasAddress_dialedDigits_CharSet, 4, 4, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->u.dialedDigits);
+
+ invokeEndElement (pctxt, "dialedDigits", -1);
+
+ break;
+
+ /* h323_ID */
+ case 1:
+ invokeStartElement (pctxt, "h323_ID", -1);
+
+ addSizeConstraint (pctxt, &h323_ID_lsize1);
+
+ stat = decodeBMPString (pctxt, &pvalue->u.h323_ID, 0);
+ if (stat != ASN_OK) return stat;
+ invokeCharStr16BitValue (pctxt, pvalue->u.h323_ID.nchars, pvalue->u.h323_ID.data);
+
+ invokeEndElement (pctxt, "h323_ID", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 3;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ copyContext (&lctxt, pctxt);
+ initContextBuffer (pctxt, openType.data, openType.numocts);
+
+ switch (pvalue->t) {
+ /* url_ID */
+ case 3:
+ invokeStartElement (pctxt, "url_ID", -1);
+
+ addSizeConstraint (pctxt, &url_ID_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->u.url_ID, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->u.url_ID);
+
+ invokeEndElement (pctxt, "url_ID", -1);
+
+ break;
+
+ /* transportID */
+ case 4:
+ invokeStartElement (pctxt, "transportID", -1);
+
+ pvalue->u.transportID = ALLOC_ASN1ELEM (pctxt, H225TransportAddress);
+
+ stat = asn1PD_H225TransportAddress (pctxt, pvalue->u.transportID);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "transportID", -1);
+
+ break;
+
+ /* email_ID */
+ case 5:
+ invokeStartElement (pctxt, "email_ID", -1);
+
+ addSizeConstraint (pctxt, &email_ID_lsize1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->u.email_ID, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->u.email_ID);
+
+ invokeEndElement (pctxt, "email_ID", -1);
+
+ break;
+
+ /* partyNumber */
+ case 6:
+ invokeStartElement (pctxt, "partyNumber", -1);
+
+ pvalue->u.partyNumber = ALLOC_ASN1ELEM (pctxt, H225PartyNumber);
+
+ stat = asn1PD_H225PartyNumber (pctxt, pvalue->u.partyNumber);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "partyNumber", -1);
+
+ break;
+
+ /* mobileUIM */
+ case 7:
+ invokeStartElement (pctxt, "mobileUIM", -1);
+
+ pvalue->u.mobileUIM = ALLOC_ASN1ELEM (pctxt, H225MobileUIM);
+
+ stat = asn1PD_H225MobileUIM (pctxt, pvalue->u.mobileUIM);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "mobileUIM", -1);
+
+ break;
+
+ default:;
+ }
+
+ copyContext (pctxt, &lctxt);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Content_compound */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Content_compound (OOCTXT* pctxt, H225Content_compound* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 512, 0 };
+ int stat = ASN_OK;
+ H225EnumeratedParameter* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225EnumeratedParameter);
+
+ stat = asn1PD_H225EnumeratedParameter (pctxt, (H225EnumeratedParameter*)pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Content_nested */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Content_nested (OOCTXT* pctxt, H225Content_nested* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 16, 0 };
+ int stat = ASN_OK;
+ H225GenericData* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225GenericData);
+
+ stat = asn1PD_H225GenericData (pctxt, (H225GenericData*)pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* Content */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225Content (OOCTXT* pctxt, H225Content* pvalue)
+{
+ int stat = ASN_OK;
+ ASN1UINT ui;
+ ASN1OpenType openType;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ if (!extbit) {
+ stat = decodeConsUnsigned (pctxt, &ui, 0, 11);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 1;
+
+ switch (ui) {
+ /* raw */
+ case 0:
+ invokeStartElement (pctxt, "raw", -1);
+
+ pvalue->u.raw = ALLOC_ASN1ELEM (pctxt, ASN1DynOctStr);
+
+ stat = decodeDynOctetString (pctxt, (ASN1DynOctStr*)pvalue->u.raw);
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->u.raw->numocts, pvalue->u.raw->data);
+
+ invokeEndElement (pctxt, "raw", -1);
+
+ break;
+
+ /* text */
+ case 1:
+ invokeStartElement (pctxt, "text", -1);
+
+ stat = decodeConstrainedStringEx (pctxt, &pvalue->u.text, 0, 8, 7, 7);
+ if (stat != ASN_OK) return stat;
+ invokeCharStrValue (pctxt, pvalue->u.text);
+
+ invokeEndElement (pctxt, "text", -1);
+
+ break;
+
+ /* unicode */
+ case 2:
+ invokeStartElement (pctxt, "unicode", -1);
+
+ stat = decodeBMPString (pctxt, &pvalue->u.unicode, 0);
+ if (stat != ASN_OK) return stat;
+ invokeCharStr16BitValue (pctxt, pvalue->u.unicode.nchars, pvalue->u.unicode.data);
+
+ invokeEndElement (pctxt, "unicode", -1);
+
+ break;
+
+ /* bool_ */
+ case 3:
+ invokeStartElement (pctxt, "bool_", -1);
+
+ stat = DECODEBIT (pctxt, &pvalue->u.bool_);
+ if (stat != ASN_OK) return stat;
+ invokeBoolValue (pctxt, pvalue->u.bool_);
+
+ invokeEndElement (pctxt, "bool_", -1);
+
+ break;
+
+ /* number8 */
+ case 4:
+ invokeStartElement (pctxt, "number8", -1);
+
+ stat = decodeConsUInt8 (pctxt, &pvalue->u.number8, 0U, 255U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.number8);
+
+ invokeEndElement (pctxt, "number8", -1);
+
+ break;
+
+ /* number16 */
+ case 5:
+ invokeStartElement (pctxt, "number16", -1);
+
+ stat = decodeConsUInt16 (pctxt, &pvalue->u.number16, 0U, 65535U);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.number16);
+
+ invokeEndElement (pctxt, "number16", -1);
+
+ break;
+
+ /* number32 */
+ case 6:
+ invokeStartElement (pctxt, "number32", -1);
+
+ stat = decodeConsUnsigned (pctxt, &pvalue->u.number32, 0U, ASN1UINT_MAX);
+ if (stat != ASN_OK) return stat;
+ invokeUIntValue (pctxt, pvalue->u.number32);
+
+ invokeEndElement (pctxt, "number32", -1);
+
+ break;
+
+ /* id */
+ case 7:
+ invokeStartElement (pctxt, "id", -1);
+
+ pvalue->u.id = ALLOC_ASN1ELEM (pctxt, H225GenericIdentifier);
+
+ stat = asn1PD_H225GenericIdentifier (pctxt, pvalue->u.id);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "id", -1);
+
+ break;
+
+ /* alias */
+ case 8:
+ invokeStartElement (pctxt, "alias", -1);
+
+ pvalue->u.alias = ALLOC_ASN1ELEM (pctxt, H225AliasAddress);
+
+ stat = asn1PD_H225AliasAddress (pctxt, pvalue->u.alias);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "alias", -1);
+
+ break;
+
+ /* transport */
+ case 9:
+ invokeStartElement (pctxt, "transport", -1);
+
+ pvalue->u.transport = ALLOC_ASN1ELEM (pctxt, H225TransportAddress);
+
+ stat = asn1PD_H225TransportAddress (pctxt, pvalue->u.transport);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "transport", -1);
+
+ break;
+
+ /* compound */
+ case 10:
+ invokeStartElement (pctxt, "compound", -1);
+
+ pvalue->u.compound = ALLOC_ASN1ELEM (pctxt, H225Content_compound);
+
+ stat = asn1PD_H225Content_compound (pctxt, pvalue->u.compound);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "compound", -1);
+
+ break;
+
+ /* nested */
+ case 11:
+ invokeStartElement (pctxt, "nested", -1);
+
+ pvalue->u.nested = ALLOC_ASN1ELEM (pctxt, H225Content_nested);
+
+ stat = asn1PD_H225Content_nested (pctxt, pvalue->u.nested);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "nested", -1);
+
+ break;
+
+ default:
+ return ASN_E_INVOPT;
+ }
+ }
+ else {
+ stat = decodeSmallNonNegWholeNumber (pctxt, &ui);
+ if (stat != ASN_OK) return stat;
+ else pvalue->t = ui + 13;
+
+ stat = decodeByteAlign (pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EnumeratedParameter */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225EnumeratedParameter (OOCTXT* pctxt, H225EnumeratedParameter* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.contentPresent = optbit;
+
+ /* decode id */
+
+ invokeStartElement (pctxt, "id", -1);
+
+ stat = asn1PD_H225GenericIdentifier (pctxt, &pvalue->id);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "id", -1);
+
+ /* decode content */
+
+ if (pvalue->m.contentPresent) {
+ invokeStartElement (pctxt, "content", -1);
+
+ stat = asn1PD_H225Content (pctxt, &pvalue->content);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "content", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GenericData_parameters */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225GenericData_parameters (OOCTXT* pctxt, H225GenericData_parameters* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 512, 0 };
+ int stat = ASN_OK;
+ H225EnumeratedParameter* pdata;
+ ASN1UINT count = 0;
+ ASN1UINT xx1;
+
+ /* decode length determinant */
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeLength (pctxt, &count);
+ if (stat != ASN_OK) return stat;
+
+ /* decode elements */
+
+ dListInit (pvalue);
+
+ for (xx1 = 0; xx1 < count; xx1++) {
+ invokeStartElement (pctxt, "elem", xx1);
+
+ pdata = ALLOC_ASN1ELEMDNODE (pctxt, H225EnumeratedParameter);
+
+ stat = asn1PD_H225EnumeratedParameter (pctxt, pdata);
+ if (stat != ASN_OK) return stat;
+ invokeEndElement (pctxt, "elem", xx1);
+
+ dListAppendNode (pctxt, pvalue, pdata);
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* GenericData */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225GenericData (OOCTXT* pctxt, H225GenericData* pvalue)
+{
+ int stat = ASN_OK;
+ OOCTXT lctxt;
+ ASN1OpenType openType;
+ ASN1UINT bitcnt;
+ ASN1UINT i;
+ ASN1BOOL optbit;
+ ASN1BOOL extbit;
+
+ /* extension bit */
+
+ DECODEBIT (pctxt, &extbit);
+
+ /* optional bits */
+
+ memset (&pvalue->m, 0, sizeof(pvalue->m));
+
+ DECODEBIT (pctxt, &optbit);
+ pvalue->m.parametersPresent = optbit;
+
+ /* decode id */
+
+ invokeStartElement (pctxt, "id", -1);
+
+ stat = asn1PD_H225GenericIdentifier (pctxt, &pvalue->id);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "id", -1);
+
+ /* decode parameters */
+
+ if (pvalue->m.parametersPresent) {
+ invokeStartElement (pctxt, "parameters", -1);
+
+ stat = asn1PD_H225GenericData_parameters (pctxt, &pvalue->parameters);
+ if (stat != ASN_OK) return stat;
+
+ invokeEndElement (pctxt, "parameters", -1);
+ }
+
+ if (extbit) {
+
+ /* decode extension optional bits length */
+
+ stat = decodeSmallNonNegWholeNumber (pctxt, &bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ bitcnt += 1;
+
+ ZEROCONTEXT (&lctxt);
+ stat = setPERBufferUsingCtxt (&lctxt, pctxt);
+ if (stat != ASN_OK) return stat;
+
+ stat = moveBitCursor (pctxt, bitcnt);
+ if (stat != ASN_OK) return stat;
+
+ for (i = 0; i < bitcnt; i++) {
+ DECODEBIT (&lctxt, &optbit);
+
+ if (optbit) {
+ stat = decodeOpenType (pctxt, &openType.data, &openType.numocts);
+ if (stat != ASN_OK) return stat;
+
+ pctxt->buffer.byteIndex += openType.numocts;
+ }
+ }
+ }
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FeatureDescriptor */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225FeatureDescriptor (OOCTXT* pctxt, H225FeatureDescriptor* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = asn1PD_H225GenericData (pctxt, pvalue);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* FastStartToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225FastStartToken (OOCTXT* pctxt, H225FastStartToken* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = asn1PD_H235ClearToken (pctxt, pvalue);
+ if (stat != ASN_OK) return stat;
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EncodedFastStartToken */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225EncodedFastStartToken (OOCTXT* pctxt, H225EncodedFastStartToken* pvalue)
+{
+ int stat = ASN_OK;
+
+ stat = decodeOpenType (pctxt, &pvalue->data, &pvalue->numocts);
+ if (stat != ASN_OK) return stat;
+ invokeOpenTypeValue
+ (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* H323_UserInformation_user_data_user_information */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225H323_UserInformation_user_data_user_information (OOCTXT* pctxt, H225H323_UserInformation_user_data_user_information* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 1, 131, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeOctetString (pctxt,
+ &pvalue->numocts,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+ invokeOctStrValue (pctxt, pvalue->numocts, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* EndpointType_set */
+/* */
+/**************************************************************/
+
+EXTERN int asn1PD_H225EndpointType_set (OOCTXT* pctxt, H225EndpointType_set* pvalue)
+{
+ static Asn1SizeCnst lsize1 = { 0, 32, 32, 0 };
+ int stat = ASN_OK;
+
+ addSizeConstraint (pctxt, &lsize1);
+
+ stat = decodeBitString (pctxt,
+ &pvalue->numbits,
+ pvalue->data,
+ sizeof(pvalue->data));
+ if (stat != ASN_OK) return stat;
+
+ invokeBitStrValue (pctxt, pvalue->numbits, pvalue->data);
+
+ return (stat);
+}
+
+/**************************************************************/
+/* */
+/* VendorIdentifier_productId