+++ /dev/null
-/*
- * Copyright (c) 2000-2001 Apple Computer, Inc. All Rights Reserved.
- *
- * The contents of this file constitute Original Code as defined in and are
- * subject to the Apple Public Source License Version 1.2 (the 'License').
- * You may not use this file except in compliance with the License. Please obtain
- * a copy of the License at http://www.apple.com/publicsource and read it before
- * using this file.
- *
- * This Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS
- * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
- * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
- * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the
- * specific language governing rights and limitations under the License.
- */
-
-
-// NOTE: this is a machine generated file--editing not recommended
-//
-// asn-useful.cpp - class member functions for ASN.1 module ASN-USEFUL
-//
-// This file was generated by snacc on Wed Jun 14 14:50:26 2000
-// UBC snacc written by Mike Sample
-// A couple of enhancements made by IBM European Networking Center
-
-
-#include "asn-incl.h"
-#include "asn-useful.h"
-
-//------------------------------------------------------------------------------
-// value defs
-
-
-//------------------------------------------------------------------------------
-// class member definitions:
-
-AsnType *ObjectDescriptor::Clone() const
-{
- return new ObjectDescriptor;
-}
-
-AsnType *ObjectDescriptor::Copy() const
-{
- return new ObjectDescriptor (*this);
-}
-
-AsnLen ObjectDescriptor::BEnc (BUF_TYPE b)
-{
- AsnLen l;
- l = BEncContent (b);
- l += BEncDefLen (b, l);
-
- l += BEncTag1 (b, UNIV, PRIM, OD_TAG_CODE);
- return l;
-}
-
-void ObjectDescriptor::BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env)
-{
- AsnTag tag;
- AsnLen elmtLen1;
-
- if (((tag = BDecTag (b, bytesDecoded, env)) != MAKE_TAG_ID (UNIV, PRIM, OD_TAG_CODE))
- && (tag != MAKE_TAG_ID (UNIV, CONS, OD_TAG_CODE)))
- {
- Asn1Error << "ObjectDescriptor::BDec: ERROR - wrong tag" << endl;
- longjmp (env, 50);
- }
- elmtLen1 = BDecLen (b, bytesDecoded, env);
- BDecContent (b, tag, elmtLen1, bytesDecoded, env);
-}
-
-int ObjectDescriptor::BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded)
-{
- bytesEncoded = BEnc (b);
- return !b.WriteError();
-}
-
-int ObjectDescriptor::BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded)
-{
- ENV_TYPE env;
- int val;
-
- bytesDecoded = 0;
- if ((val = setjmp (env)) == 0)
- {
- BDec (b, bytesDecoded, env);
- return !b.ReadError();
- }
- else
- return false;
-}
-
-AsnType *UTF8String::Clone() const
-{
- return new UTF8String;
-}
-
-AsnType *UTF8String::Copy() const
-{
- return new UTF8String (*this);
-}
-
-AsnLen UTF8String::BEnc (BUF_TYPE b)
-{
- AsnLen l;
- l = BEncContent (b);
- l += BEncDefLen (b, l);
-
- l += BEncTag1 (b, UNIV, PRIM, 12);
- return l;
-}
-
-void UTF8String::BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env)
-{
- AsnTag tag;
- AsnLen elmtLen1;
-
- if (((tag = BDecTag (b, bytesDecoded, env)) != MAKE_TAG_ID (UNIV, PRIM, 12))
- && (tag != MAKE_TAG_ID (UNIV, CONS, 12)))
- {
- Asn1Error << "UTF8String::BDec: ERROR - wrong tag" << endl;
- longjmp (env, 49);
- }
- elmtLen1 = BDecLen (b, bytesDecoded, env);
- BDecContent (b, tag, elmtLen1, bytesDecoded, env);
-}
-
-int UTF8String::BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded)
-{
- bytesEncoded = BEnc (b);
- return !b.WriteError();
-}
-
-int UTF8String::BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded)
-{
- ENV_TYPE env;
- int val;
-
- bytesDecoded = 0;
- if ((val = setjmp (env)) == 0)
- {
- BDec (b, bytesDecoded, env);
- return !b.ReadError();
- }
- else
- return false;
-}
-
-AsnType *NumericString::Clone() const
-{
- return new NumericString;
-}
-
-AsnType *NumericString::Copy() const
-{
- return new NumericString (*this);
-}
-
-AsnLen NumericString::BEnc (BUF_TYPE b)
-{
- AsnLen l;
- l = BEncContent (b);
- l += BEncDefLen (b, l);
-
- l += BEncTag1 (b, UNIV, PRIM, NUMERICSTRING_TAG_CODE);
- return l;
-}
-
-void NumericString::BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env)
-{
- AsnTag tag;
- AsnLen elmtLen1;
-
- if (((tag = BDecTag (b, bytesDecoded, env)) != MAKE_TAG_ID (UNIV, PRIM, NUMERICSTRING_TAG_CODE))
- && (tag != MAKE_TAG_ID (UNIV, CONS, NUMERICSTRING_TAG_CODE)))
- {
- Asn1Error << "NumericString::BDec: ERROR - wrong tag" << endl;
- longjmp (env, 48);
- }
- elmtLen1 = BDecLen (b, bytesDecoded, env);
- BDecContent (b, tag, elmtLen1, bytesDecoded, env);
-}
-
-int NumericString::BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded)
-{
- bytesEncoded = BEnc (b);
- return !b.WriteError();
-}
-
-int NumericString::BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded)
-{
- ENV_TYPE env;
- int val;
-
- bytesDecoded = 0;
- if ((val = setjmp (env)) == 0)
- {
- BDec (b, bytesDecoded, env);
- return !b.ReadError();
- }
- else
- return false;
-}
-
-AsnType *PrintableString::Clone() const
-{
- return new PrintableString;
-}
-
-AsnType *PrintableString::Copy() const
-{
- return new PrintableString (*this);
-}
-
-AsnLen PrintableString::BEnc (BUF_TYPE b)
-{
- AsnLen l;
- l = BEncContent (b);
- l += BEncDefLen (b, l);
-
- l += BEncTag1 (b, UNIV, PRIM, PRINTABLESTRING_TAG_CODE);
- return l;
-}
-
-void PrintableString::BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env)
-{
- AsnTag tag;
- AsnLen elmtLen1;
-
- if (((tag = BDecTag (b, bytesDecoded, env)) != MAKE_TAG_ID (UNIV, PRIM, PRINTABLESTRING_TAG_CODE))
- && (tag != MAKE_TAG_ID (UNIV, CONS, PRINTABLESTRING_TAG_CODE)))
- {
- Asn1Error << "PrintableString::BDec: ERROR - wrong tag" << endl;
- longjmp (env, 47);
- }
- elmtLen1 = BDecLen (b, bytesDecoded, env);
- BDecContent (b, tag, elmtLen1, bytesDecoded, env);
-}
-
-int PrintableString::BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded)
-{
- bytesEncoded = BEnc (b);
- return !b.WriteError();
-}
-
-int PrintableString::BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded)
-{
- ENV_TYPE env;
- int val;
-
- bytesDecoded = 0;
- if ((val = setjmp (env)) == 0)
- {
- BDec (b, bytesDecoded, env);
- return !b.ReadError();
- }
- else
- return false;
-}
-
-AsnType *TeletexString::Clone() const
-{
- return new TeletexString;
-}
-
-AsnType *TeletexString::Copy() const
-{
- return new TeletexString (*this);
-}
-
-AsnLen TeletexString::BEnc (BUF_TYPE b)
-{
- AsnLen l;
- l = BEncContent (b);
- l += BEncDefLen (b, l);
-
- l += BEncTag1 (b, UNIV, PRIM, TELETEXSTRING_TAG_CODE);
- return l;
-}
-
-void TeletexString::BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env)
-{
- AsnTag tag;
- AsnLen elmtLen1;
-
- if (((tag = BDecTag (b, bytesDecoded, env)) != MAKE_TAG_ID (UNIV, PRIM, TELETEXSTRING_TAG_CODE))
- && (tag != MAKE_TAG_ID (UNIV, CONS, TELETEXSTRING_TAG_CODE)))
- {
- Asn1Error << "TeletexString::BDec: ERROR - wrong tag" << endl;
- longjmp (env, 46);
- }
- elmtLen1 = BDecLen (b, bytesDecoded, env);
- BDecContent (b, tag, elmtLen1, bytesDecoded, env);
-}
-
-int TeletexString::BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded)
-{
- bytesEncoded = BEnc (b);
- return !b.WriteError();
-}
-
-int TeletexString::BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded)
-{
- ENV_TYPE env;
- int val;
-
- bytesDecoded = 0;
- if ((val = setjmp (env)) == 0)
- {
- BDec (b, bytesDecoded, env);
- return !b.ReadError();
- }
- else
- return false;
-}
-
-AsnType *T61String::Clone() const
-{
- return new T61String;
-}
-
-AsnType *T61String::Copy() const
-{
- return new T61String (*this);
-}
-
-AsnLen T61String::BEnc (BUF_TYPE b)
-{
- AsnLen l;
- l = BEncContent (b);
- l += BEncDefLen (b, l);
-
- l += BEncTag1 (b, UNIV, PRIM, TELETEXSTRING_TAG_CODE);
- return l;
-}
-
-void T61String::BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env)
-{
- AsnTag tag;
- AsnLen elmtLen1;
-
- if (((tag = BDecTag (b, bytesDecoded, env)) != MAKE_TAG_ID (UNIV, PRIM, TELETEXSTRING_TAG_CODE))
- && (tag != MAKE_TAG_ID (UNIV, CONS, TELETEXSTRING_TAG_CODE)))
- {
- Asn1Error << "T61String::BDec: ERROR - wrong tag" << endl;
- longjmp (env, 45);
- }
- elmtLen1 = BDecLen (b, bytesDecoded, env);
- BDecContent (b, tag, elmtLen1, bytesDecoded, env);
-}
-
-int T61String::BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded)
-{
- bytesEncoded = BEnc (b);
- return !b.WriteError();
-}
-
-int T61String::BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded)
-{
- ENV_TYPE env;
- int val;
-
- bytesDecoded = 0;
- if ((val = setjmp (env)) == 0)
- {
- BDec (b, bytesDecoded, env);
- return !b.ReadError();
- }
- else
- return false;
-}
-
-AsnType *VideotexString::Clone() const
-{
- return new VideotexString;
-}
-
-AsnType *VideotexString::Copy() const
-{
- return new VideotexString (*this);
-}
-
-AsnLen VideotexString::BEnc (BUF_TYPE b)
-{
- AsnLen l;
- l = BEncContent (b);
- l += BEncDefLen (b, l);
-
- l += BEncTag1 (b, UNIV, PRIM, VIDEOTEXSTRING_TAG_CODE);
- return l;
-}
-
-void VideotexString::BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env)
-{
- AsnTag tag;
- AsnLen elmtLen1;
-
- if (((tag = BDecTag (b, bytesDecoded, env)) != MAKE_TAG_ID (UNIV, PRIM, VIDEOTEXSTRING_TAG_CODE))
- && (tag != MAKE_TAG_ID (UNIV, CONS, VIDEOTEXSTRING_TAG_CODE)))
- {
- Asn1Error << "VideotexString::BDec: ERROR - wrong tag" << endl;
- longjmp (env, 44);
- }
- elmtLen1 = BDecLen (b, bytesDecoded, env);
- BDecContent (b, tag, elmtLen1, bytesDecoded, env);
-}
-
-int VideotexString::BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded)
-{
- bytesEncoded = BEnc (b);
- return !b.WriteError();
-}
-
-int VideotexString::BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded)
-{
- ENV_TYPE env;
- int val;
-
- bytesDecoded = 0;
- if ((val = setjmp (env)) == 0)
- {
- BDec (b, bytesDecoded, env);
- return !b.ReadError();
- }
- else
- return false;
-}
-
-AsnType *IA5String::Clone() const
-{
- return new IA5String;
-}
-
-AsnType *IA5String::Copy() const
-{
- return new IA5String (*this);
-}
-
-AsnLen IA5String::BEnc (BUF_TYPE b)
-{
- AsnLen l;
- l = BEncContent (b);
- l += BEncDefLen (b, l);
-
- l += BEncTag1 (b, UNIV, PRIM, IA5STRING_TAG_CODE);
- return l;
-}
-
-void IA5String::BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env)
-{
- AsnTag tag;
- AsnLen elmtLen1;
-
- if (((tag = BDecTag (b, bytesDecoded, env)) != MAKE_TAG_ID (UNIV, PRIM, IA5STRING_TAG_CODE))
- && (tag != MAKE_TAG_ID (UNIV, CONS, IA5STRING_TAG_CODE)))
- {
- Asn1Error << "IA5String::BDec: ERROR - wrong tag" << endl;
- longjmp (env, 43);
- }
- elmtLen1 = BDecLen (b, bytesDecoded, env);
- BDecContent (b, tag, elmtLen1, bytesDecoded, env);
-}
-
-int IA5String::BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded)
-{
- bytesEncoded = BEnc (b);
- return !b.WriteError();
-}
-
-int IA5String::BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded)
-{
- ENV_TYPE env;
- int val;
-
- bytesDecoded = 0;
- if ((val = setjmp (env)) == 0)
- {
- BDec (b, bytesDecoded, env);
- return !b.ReadError();
- }
- else
- return false;
-}
-
-AsnType *GraphicString::Clone() const
-{
- return new GraphicString;
-}
-
-AsnType *GraphicString::Copy() const
-{
- return new GraphicString (*this);
-}
-
-AsnLen GraphicString::BEnc (BUF_TYPE b)
-{
- AsnLen l;
- l = BEncContent (b);
- l += BEncDefLen (b, l);
-
- l += BEncTag1 (b, UNIV, PRIM, GRAPHICSTRING_TAG_CODE);
- return l;
-}
-
-void GraphicString::BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env)
-{
- AsnTag tag;
- AsnLen elmtLen1;
-
- if (((tag = BDecTag (b, bytesDecoded, env)) != MAKE_TAG_ID (UNIV, PRIM, GRAPHICSTRING_TAG_CODE))
- && (tag != MAKE_TAG_ID (UNIV, CONS, GRAPHICSTRING_TAG_CODE)))
- {
- Asn1Error << "GraphicString::BDec: ERROR - wrong tag" << endl;
- longjmp (env, 42);
- }
- elmtLen1 = BDecLen (b, bytesDecoded, env);
- BDecContent (b, tag, elmtLen1, bytesDecoded, env);
-}
-
-int GraphicString::BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded)
-{
- bytesEncoded = BEnc (b);
- return !b.WriteError();
-}
-
-int GraphicString::BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded)
-{
- ENV_TYPE env;
- int val;
-
- bytesDecoded = 0;
- if ((val = setjmp (env)) == 0)
- {
- BDec (b, bytesDecoded, env);
- return !b.ReadError();
- }
- else
- return false;
-}
-
-AsnType *VisibleString::Clone() const
-{
- return new VisibleString;
-}
-
-AsnType *VisibleString::Copy() const
-{
- return new VisibleString (*this);
-}
-
-AsnLen VisibleString::BEnc (BUF_TYPE b)
-{
- AsnLen l;
- l = BEncContent (b);
- l += BEncDefLen (b, l);
-
- l += BEncTag1 (b, UNIV, PRIM, VISIBLESTRING_TAG_CODE);
- return l;
-}
-
-void VisibleString::BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env)
-{
- AsnTag tag;
- AsnLen elmtLen1;
-
- if (((tag = BDecTag (b, bytesDecoded, env)) != MAKE_TAG_ID (UNIV, PRIM, VISIBLESTRING_TAG_CODE))
- && (tag != MAKE_TAG_ID (UNIV, CONS, VISIBLESTRING_TAG_CODE)))
- {
- Asn1Error << "VisibleString::BDec: ERROR - wrong tag" << endl;
- longjmp (env, 41);
- }
- elmtLen1 = BDecLen (b, bytesDecoded, env);
- BDecContent (b, tag, elmtLen1, bytesDecoded, env);
-}
-
-int VisibleString::BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded)
-{
- bytesEncoded = BEnc (b);
- return !b.WriteError();
-}
-
-int VisibleString::BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded)
-{
- ENV_TYPE env;
- int val;
-
- bytesDecoded = 0;
- if ((val = setjmp (env)) == 0)
- {
- BDec (b, bytesDecoded, env);
- return !b.ReadError();
- }
- else
- return false;
-}
-
-AsnType *ISO646String::Clone() const
-{
- return new ISO646String;
-}
-
-AsnType *ISO646String::Copy() const
-{
- return new ISO646String (*this);
-}
-
-AsnLen ISO646String::BEnc (BUF_TYPE b)
-{
- AsnLen l;
- l = BEncContent (b);
- l += BEncDefLen (b, l);
-
- l += BEncTag1 (b, UNIV, PRIM, VISIBLESTRING_TAG_CODE);
- return l;
-}
-
-void ISO646String::BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env)
-{
- AsnTag tag;
- AsnLen elmtLen1;
-
- if (((tag = BDecTag (b, bytesDecoded, env)) != MAKE_TAG_ID (UNIV, PRIM, VISIBLESTRING_TAG_CODE))
- && (tag != MAKE_TAG_ID (UNIV, CONS, VISIBLESTRING_TAG_CODE)))
- {
- Asn1Error << "ISO646String::BDec: ERROR - wrong tag" << endl;
- longjmp (env, 40);
- }
- elmtLen1 = BDecLen (b, bytesDecoded, env);
- BDecContent (b, tag, elmtLen1, bytesDecoded, env);
-}
-
-int ISO646String::BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded)
-{
- bytesEncoded = BEnc (b);
- return !b.WriteError();
-}
-
-int ISO646String::BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded)
-{
- ENV_TYPE env;
- int val;
-
- bytesDecoded = 0;
- if ((val = setjmp (env)) == 0)
- {
- BDec (b, bytesDecoded, env);
- return !b.ReadError();
- }
- else
- return false;
-}
-
-AsnType *GeneralString::Clone() const
-{
- return new GeneralString;
-}
-
-AsnType *GeneralString::Copy() const
-{
- return new GeneralString (*this);
-}
-
-AsnLen GeneralString::BEnc (BUF_TYPE b)
-{
- AsnLen l;
- l = BEncContent (b);
- l += BEncDefLen (b, l);
-
- l += BEncTag1 (b, UNIV, PRIM, GENERALSTRING_TAG_CODE);
- return l;
-}
-
-void GeneralString::BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env)
-{
- AsnTag tag;
- AsnLen elmtLen1;
-
- if (((tag = BDecTag (b, bytesDecoded, env)) != MAKE_TAG_ID (UNIV, PRIM, GENERALSTRING_TAG_CODE))
- && (tag != MAKE_TAG_ID (UNIV, CONS, GENERALSTRING_TAG_CODE)))
- {
- Asn1Error << "GeneralString::BDec: ERROR - wrong tag" << endl;
- longjmp (env, 39);
- }
- elmtLen1 = BDecLen (b, bytesDecoded, env);
- BDecContent (b, tag, elmtLen1, bytesDecoded, env);
-}
-
-int GeneralString::BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded)
-{
- bytesEncoded = BEnc (b);
- return !b.WriteError();
-}
-
-int GeneralString::BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded)
-{
- ENV_TYPE env;
- int val;
-
- bytesDecoded = 0;
- if ((val = setjmp (env)) == 0)
- {
- BDec (b, bytesDecoded, env);
- return !b.ReadError();
- }
- else
- return false;
-}
-
-AsnType *UTCTime::Clone() const
-{
- return new UTCTime;
-}
-
-AsnType *UTCTime::Copy() const
-{
- return new UTCTime (*this);
-}
-
-AsnLen UTCTime::BEnc (BUF_TYPE b)
-{
- AsnLen l;
- l = BEncContent (b);
- l += BEncDefLen (b, l);
-
- l += BEncTag1 (b, UNIV, PRIM, UTCTIME_TAG_CODE);
- return l;
-}
-
-void UTCTime::BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env)
-{
- AsnTag tag;
- AsnLen elmtLen1;
-
- if (((tag = BDecTag (b, bytesDecoded, env)) != MAKE_TAG_ID (UNIV, PRIM, UTCTIME_TAG_CODE))
- && (tag != MAKE_TAG_ID (UNIV, CONS, UTCTIME_TAG_CODE)))
- {
- Asn1Error << "UTCTime::BDec: ERROR - wrong tag" << endl;
- longjmp (env, 38);
- }
- elmtLen1 = BDecLen (b, bytesDecoded, env);
- BDecContent (b, tag, elmtLen1, bytesDecoded, env);
-}
-
-int UTCTime::BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded)
-{
- bytesEncoded = BEnc (b);
- return !b.WriteError();
-}
-
-int UTCTime::BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded)
-{
- ENV_TYPE env;
- int val;
-
- bytesDecoded = 0;
- if ((val = setjmp (env)) == 0)
- {
- BDec (b, bytesDecoded, env);
- return !b.ReadError();
- }
- else
- return false;
-}
-
-AsnType *GeneralizedTime::Clone() const
-{
- return new GeneralizedTime;
-}
-
-AsnType *GeneralizedTime::Copy() const
-{
- return new GeneralizedTime (*this);
-}
-
-AsnLen GeneralizedTime::BEnc (BUF_TYPE b)
-{
- AsnLen l;
- l = BEncContent (b);
- l += BEncDefLen (b, l);
-
- l += BEncTag1 (b, UNIV, PRIM, GENERALIZEDTIME_TAG_CODE);
- return l;
-}
-
-void GeneralizedTime::BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env)
-{
- AsnTag tag;
- AsnLen elmtLen1;
-
- if (((tag = BDecTag (b, bytesDecoded, env)) != MAKE_TAG_ID (UNIV, PRIM, GENERALIZEDTIME_TAG_CODE))
- && (tag != MAKE_TAG_ID (UNIV, CONS, GENERALIZEDTIME_TAG_CODE)))
- {
- Asn1Error << "GeneralizedTime::BDec: ERROR - wrong tag" << endl;
- longjmp (env, 37);
- }
- elmtLen1 = BDecLen (b, bytesDecoded, env);
- BDecContent (b, tag, elmtLen1, bytesDecoded, env);
-}
-
-int GeneralizedTime::BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded)
-{
- bytesEncoded = BEnc (b);
- return !b.WriteError();
-}
-
-int GeneralizedTime::BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded)
-{
- ENV_TYPE env;
- int val;
-
- bytesDecoded = 0;
- if ((val = setjmp (env)) == 0)
- {
- BDec (b, bytesDecoded, env);
- return !b.ReadError();
- }
- else
- return false;
-}
-
-AsnType *UniversalString::Clone() const
-{
- return new UniversalString;
-}
-
-AsnType *UniversalString::Copy() const
-{
- return new UniversalString (*this);
-}
-
-AsnLen UniversalString::BEnc (BUF_TYPE b)
-{
- AsnLen l;
- l = BEncContent (b);
- l += BEncDefLen (b, l);
-
- l += BEncTag1 (b, UNIV, PRIM, UNIVERSALSTRING_TAG_CODE);
- return l;
-}
-
-void UniversalString::BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env)
-{
- AsnTag tag;
- AsnLen elmtLen1;
-
- if (((tag = BDecTag (b, bytesDecoded, env)) != MAKE_TAG_ID (UNIV, PRIM, UNIVERSALSTRING_TAG_CODE))
- && (tag != MAKE_TAG_ID (UNIV, CONS, UNIVERSALSTRING_TAG_CODE)))
- {
- Asn1Error << "UniversalString::BDec: ERROR - wrong tag" << endl;
- longjmp (env, 36);
- }
- elmtLen1 = BDecLen (b, bytesDecoded, env);
- BDecContent (b, tag, elmtLen1, bytesDecoded, env);
-}
-
-int UniversalString::BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded)
-{
- bytesEncoded = BEnc (b);
- return !b.WriteError();
-}
-
-int UniversalString::BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded)
-{
- ENV_TYPE env;
- int val;
-
- bytesDecoded = 0;
- if ((val = setjmp (env)) == 0)
- {
- BDec (b, bytesDecoded, env);
- return !b.ReadError();
- }
- else
- return false;
-}
-
-AsnType *BMPString::Clone() const
-{
- return new BMPString;
-}
-
-AsnType *BMPString::Copy() const
-{
- return new BMPString (*this);
-}
-
-AsnLen BMPString::BEnc (BUF_TYPE b)
-{
- AsnLen l;
- l = BEncContent (b);
- l += BEncDefLen (b, l);
-
- l += BEncTag1 (b, UNIV, PRIM, BMPSTRING_TAG_CODE);
- return l;
-}
-
-void BMPString::BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env)
-{
- AsnTag tag;
- AsnLen elmtLen1;
-
- if (((tag = BDecTag (b, bytesDecoded, env)) != MAKE_TAG_ID (UNIV, PRIM, BMPSTRING_TAG_CODE))
- && (tag != MAKE_TAG_ID (UNIV, CONS, BMPSTRING_TAG_CODE)))
- {
- Asn1Error << "BMPString::BDec: ERROR - wrong tag" << endl;
- longjmp (env, 35);
- }
- elmtLen1 = BDecLen (b, bytesDecoded, env);
- BDecContent (b, tag, elmtLen1, bytesDecoded, env);
-}
-
-int BMPString::BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded)
-{
- bytesEncoded = BEnc (b);
- return !b.WriteError();
-}
-
-int BMPString::BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded)
-{
- ENV_TYPE env;
- int val;
-
- bytesDecoded = 0;
- if ((val = setjmp (env)) == 0)
- {
- BDec (b, bytesDecoded, env);
- return !b.ReadError();
- }
- else
- return false;
-}
-
-EXTERNALChoice::EXTERNALChoice()
-{
- choiceId = single_ASN1_typeCid;
-#if TCL
- single_ASN1_type = new AsnOcts;
-#else
- single_ASN1_type = NULL; // incomplete initialization of mandatory element!
-#endif // TCL
-}
-
-EXTERNALChoice::EXTERNALChoice (const EXTERNALChoice &)
-{
- Asn1Error << "use of incompletely defined EXTERNALChoice::EXTERNALChoice (const EXTERNALChoice &)" << endl;
- abort();
-}
-
-EXTERNALChoice::~EXTERNALChoice()
-{
- switch (choiceId)
- {
- case single_ASN1_typeCid:
- delete single_ASN1_type;
- break;
- case octet_alignedCid:
- delete octet_aligned;
- break;
- case arbitraryCid:
- delete arbitrary;
- break;
- } // end of switch
-} // end of destructor
-
-AsnType *EXTERNALChoice::Clone() const
-{
- return new EXTERNALChoice;
-}
-
-AsnType *EXTERNALChoice::Copy() const
-{
- return new EXTERNALChoice (*this);
-}
-
-#if SNACC_DEEP_COPY
-EXTERNALChoice &EXTERNALChoice::operator = (const EXTERNALChoice &that)
-#else // SNACC_DEEP_COPY
-EXTERNALChoice &EXTERNALChoice::operator = (const EXTERNALChoice &)
-#endif // SNACC_DEEP_COPY
-{
-#if SNACC_DEEP_COPY
- if (this != &that)
- {
- switch (choiceId)
- {
- case single_ASN1_typeCid:
- delete single_ASN1_type;
- break;
- case octet_alignedCid:
- delete octet_aligned;
- break;
- case arbitraryCid:
- delete arbitrary;
- break;
- }
- switch (choiceId = that.choiceId)
- {
- case single_ASN1_typeCid:
- single_ASN1_type = new AsnOcts;
- *single_ASN1_type = *that.single_ASN1_type;
- break;
- case octet_alignedCid:
- octet_aligned = new AsnOcts;
- *octet_aligned = *that.octet_aligned;
- break;
- case arbitraryCid:
- arbitrary = new AsnBits;
- *arbitrary = *that.arbitrary;
- break;
- }
- }
-
- return *this;
-#else // SNACC_DEEP_COPY
- Asn1Error << "use of incompletely defined EXTERNALChoice &EXTERNALChoice::operator = (const EXTERNALChoice &)" << endl;
- abort();
- // if your compiler complains here, check the -novolat option
-#endif // SNACC_DEEP_COPY
-}
-
-AsnLen
-EXTERNALChoice::BEncContent (BUF_TYPE b)
-{
- AsnLen l;
- switch (choiceId)
- {
- case single_ASN1_typeCid:
- BEncEocIfNec (b);
- l = single_ASN1_type->BEncContent (b);
- l += BEncDefLen (b, l);
-
- l += BEncTag1 (b, UNIV, PRIM, OCTETSTRING_TAG_CODE);
- l += BEncConsLen (b, l);
-
- l += BEncTag1 (b, CNTX, CONS, 0);
- break;
-
- case octet_alignedCid:
- l = octet_aligned->BEncContent (b);
- l += BEncDefLen (b, l);
-
- l += BEncTag1 (b, CNTX, PRIM, 1);
- break;
-
- case arbitraryCid:
- l = arbitrary->BEncContent (b);
- l += BEncDefLen (b, l);
-
- l += BEncTag1 (b, CNTX, PRIM, 2);
- break;
-
- } // end switch
- return l;
-} // EXTERNALChoice::BEncContent
-
-
-void EXTERNALChoice::BDecContent (BUF_TYPE b, AsnTag tag, AsnLen elmtLen0, AsnLen &bytesDecoded, ENV_TYPE env)
-{
- AsnLen elmtLen1;
- switch (tag)
- {
- case MAKE_TAG_ID (CNTX, CONS, 0):
- tag = BDecTag (b, bytesDecoded, env);
- if ((tag != MAKE_TAG_ID (UNIV, PRIM, OCTETSTRING_TAG_CODE))
- && (tag != MAKE_TAG_ID (UNIV, CONS, OCTETSTRING_TAG_CODE)))
- {
- Asn1Error << "Unexpected Tag" << endl;
- longjmp (env, 34);
- }
-
- elmtLen1 = BDecLen (b, bytesDecoded, env);
- choiceId = single_ASN1_typeCid;
- single_ASN1_type = new AsnOcts;
- single_ASN1_type->BDecContent (b, tag, elmtLen1, bytesDecoded, env);
- if (elmtLen0 == INDEFINITE_LEN)
- BDecEoc (b, bytesDecoded, env);
- break;
-
- case MAKE_TAG_ID (CNTX, PRIM, 1):
- case MAKE_TAG_ID (CNTX, CONS, 1):
- choiceId = octet_alignedCid;
- octet_aligned = new AsnOcts;
- octet_aligned->BDecContent (b, tag, elmtLen0, bytesDecoded, env);
- break;
-
- case MAKE_TAG_ID (CNTX, PRIM, 2):
- case MAKE_TAG_ID (CNTX, CONS, 2):
- choiceId = arbitraryCid;
- arbitrary = new AsnBits;
- arbitrary->BDecContent (b, tag, elmtLen0, bytesDecoded, env);
- break;
-
- default:
- Asn1Error << "ERROR - unexpected tag in CHOICE" << endl;
- longjmp (env, 33);
- break;
- } // end switch
-} // EXTERNALChoice::BDecContent
-
-
-AsnLen EXTERNALChoice::BEnc (BUF_TYPE b)
-{
- AsnLen l;
- l = BEncContent (b);
- return l;
-}
-
-void EXTERNALChoice::BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env)
-{
- AsnLen elmtLen;
- AsnTag tag;
-
- /* CHOICEs are a special case - grab identifying tag */
- /* this allows easier handling of nested CHOICEs */
- tag = BDecTag (b, bytesDecoded, env);
- elmtLen = BDecLen (b, bytesDecoded, env);
- BDecContent (b, tag, elmtLen, bytesDecoded, env);
-}
-
-int EXTERNALChoice::BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded)
-{
- bytesEncoded = BEnc (b);
- return !b.WriteError();
-}
-
-int EXTERNALChoice::BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded)
-{
- ENV_TYPE env;
- int val;
-
- bytesDecoded = 0;
- if ((val = setjmp (env)) == 0)
- {
- BDec (b, bytesDecoded, env);
- return !b.ReadError();
- }
- else
- return false;
-}
-
-void EXTERNALChoice::Print (ostream &os) const
-{
-#ifndef NDEBUG
- switch (choiceId)
- {
- case single_ASN1_typeCid:
- os << "single-ASN1-type ";
- if (single_ASN1_type)
- os << *single_ASN1_type;
- else
- os << "-- void3 --\n";
- break;
-
- case octet_alignedCid:
- os << "octet-aligned ";
- if (octet_aligned)
- os << *octet_aligned;
- else
- os << "-- void3 --\n";
- break;
-
- case arbitraryCid:
- os << "arbitrary ";
- if (arbitrary)
- os << *arbitrary;
- else
- os << "-- void3 --\n";
- break;
-
- } // end of switch
- #endif /* NDEBUG */
-} // EXTERNALChoice::Print
-
-EXTERNAL::EXTERNAL()
-{
- direct_reference = NULL;
- indirect_reference = NULL;
- data_value_descriptor = NULL;
-#if TCL
- encoding = new EXTERNALChoice;
-#else
- encoding = NULL; // incomplete initialization of mandatory element!
-#endif // TCL
-}
-
-EXTERNAL::EXTERNAL (const EXTERNAL &)
-{
- Asn1Error << "use of incompletely defined EXTERNAL::EXTERNAL (const EXTERNAL &)" << endl;
- abort();
-}
-
-EXTERNAL::~EXTERNAL()
-{
- delete direct_reference;
- delete indirect_reference;
- delete data_value_descriptor;
- delete encoding;
-}
-
-AsnType *EXTERNAL::Clone() const
-{
- return new EXTERNAL;
-}
-
-AsnType *EXTERNAL::Copy() const
-{
- return new EXTERNAL (*this);
-}
-
-#if SNACC_DEEP_COPY
-EXTERNAL &EXTERNAL::operator = (const EXTERNAL &that)
-#else // SNACC_DEEP_COPY
-EXTERNAL &EXTERNAL::operator = (const EXTERNAL &)
-#endif // SNACC_DEEP_COPY
-{
-#if SNACC_DEEP_COPY
- if (this != &that)
- {
- if (that.direct_reference)
- {
- if (!direct_reference)
- direct_reference = new AsnOid;
- *direct_reference = *that.direct_reference;
- }
- else
- {
- delete direct_reference;
- direct_reference = NULL;
- }
- if (that.indirect_reference)
- {
- if (!indirect_reference)
- indirect_reference = new AsnInt;
- *indirect_reference = *that.indirect_reference;
- }
- else
- {
- delete indirect_reference;
- indirect_reference = NULL;
- }
- if (that.data_value_descriptor)
- {
- if (!data_value_descriptor)
- data_value_descriptor = new ObjectDescriptor;
- *data_value_descriptor = *that.data_value_descriptor;
- }
- else
- {
- delete data_value_descriptor;
- data_value_descriptor = NULL;
- }
- if (that.encoding)
- {
- if (!encoding)
- encoding = new EXTERNALChoice;
- *encoding = *that.encoding;
- }
- else
- {
- delete encoding;
- encoding = NULL;
- }
- }
-
- return *this;
-#else // SNACC_DEEP_COPY
- Asn1Error << "use of incompletely defined EXTERNAL &EXTERNAL::operator = (const EXTERNAL &)" << endl;
- abort();
- // if your compiler complains here, check the -novolat option
-#endif // SNACC_DEEP_COPY
-}
-
-AsnLen
-EXTERNAL::BEncContent (BUF_TYPE b)
-{
- AsnLen totalLen = 0;
- AsnLen l;
-
- l = encoding->BEncContent (b);
- totalLen += l;
-
- if (NOT_NULL (data_value_descriptor))
- {
- l = data_value_descriptor->BEncContent (b);
- l += BEncDefLen (b, l);
-
- l += BEncTag1 (b, UNIV, PRIM, OD_TAG_CODE);
- totalLen += l;
- }
-
- if (NOT_NULL (indirect_reference))
- {
- l = indirect_reference->BEncContent (b);
- BEncDefLenTo127 (b, l);
- l++;
-
- l += BEncTag1 (b, UNIV, PRIM, INTEGER_TAG_CODE);
- totalLen += l;
- }
-
- if (NOT_NULL (direct_reference))
- {
- l = direct_reference->BEncContent (b);
- l += BEncDefLen (b, l);
-
- l += BEncTag1 (b, UNIV, PRIM, OID_TAG_CODE);
- totalLen += l;
- }
-
- return totalLen;
-} // EXTERNAL::BEncContent
-
-
-void EXTERNAL::BDecContent (BUF_TYPE b, AsnTag /*tag0*/, AsnLen elmtLen0, AsnLen &bytesDecoded, ENV_TYPE env)
-{
- AsnTag tag1;
- AsnLen seqBytesDecoded = 0;
- AsnLen elmtLen1;
- tag1 = BDecTag (b, seqBytesDecoded, env);
-
- if ((tag1 == MAKE_TAG_ID (UNIV, PRIM, OID_TAG_CODE)))
- {
- elmtLen1 = BDecLen (b, seqBytesDecoded, env);
- direct_reference = new AsnOid;
- direct_reference->BDecContent (b, tag1, elmtLen1, seqBytesDecoded, env);
- tag1 = BDecTag (b, seqBytesDecoded, env);
- }
-
- if ((tag1 == MAKE_TAG_ID (UNIV, PRIM, INTEGER_TAG_CODE)))
- {
- elmtLen1 = BDecLen (b, seqBytesDecoded, env);
- indirect_reference = new AsnInt;
- indirect_reference->BDecContent (b, tag1, elmtLen1, seqBytesDecoded, env);
- tag1 = BDecTag (b, seqBytesDecoded, env);
- }
-
- if ((tag1 == MAKE_TAG_ID (UNIV, PRIM, OD_TAG_CODE))
- || (tag1 == MAKE_TAG_ID (UNIV, CONS, OD_TAG_CODE)))
- {
- elmtLen1 = BDecLen (b, seqBytesDecoded, env);
- data_value_descriptor = new ObjectDescriptor;
- data_value_descriptor->BDecContent (b, tag1, elmtLen1, seqBytesDecoded, env);
- tag1 = BDecTag (b, seqBytesDecoded, env);
- }
-
- if ((tag1 == MAKE_TAG_ID (CNTX, CONS, 0))
- || (tag1 == MAKE_TAG_ID (CNTX, PRIM, 1))
- || (tag1 == MAKE_TAG_ID (CNTX, CONS, 1))
- || (tag1 == MAKE_TAG_ID (CNTX, PRIM, 2))
- || (tag1 == MAKE_TAG_ID (CNTX, CONS, 2)))
- {
- elmtLen1 = BDecLen (b, seqBytesDecoded, env);
- encoding = new EXTERNALChoice;
- encoding->BDecContent (b, tag1, elmtLen1, seqBytesDecoded, env);
- }
- else
- {
- Asn1Error << "ERROR - SEQUENCE is missing non-optional elmt." << endl;
- longjmp (env, 32);
- }
-
- bytesDecoded += seqBytesDecoded;
- if (elmtLen0 == INDEFINITE_LEN)
- {
- BDecEoc (b, bytesDecoded, env);
- return;
- }
- else if (seqBytesDecoded != elmtLen0)
- {
- Asn1Error << "ERROR - Length discrepancy on sequence." << endl;
- longjmp (env, 31);
- }
- else
- return;
-} // EXTERNAL::BDecContent
-
-AsnLen EXTERNAL::BEnc (BUF_TYPE b)
-{
- AsnLen l;
- l = BEncContent (b);
- l += BEncConsLen (b, l);
- l += BEncTag1 (b, UNIV, CONS, EXTERNAL_TAG_CODE);
- return l;
-}
-
-void EXTERNAL::BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env)
-{
- AsnTag tag;
- AsnLen elmtLen1;
-
- if ((tag = BDecTag (b, bytesDecoded, env)) != MAKE_TAG_ID (UNIV, CONS, EXTERNAL_TAG_CODE))
- {
- Asn1Error << "EXTERNAL::BDec: ERROR - wrong tag" << endl;
- longjmp (env, 30);
- }
- elmtLen1 = BDecLen (b, bytesDecoded, env);
- BDecContent (b, tag, elmtLen1, bytesDecoded, env);
-}
-
-int EXTERNAL::BEncPdu (BUF_TYPE b, AsnLen &bytesEncoded)
-{
- bytesEncoded = BEnc (b);
- return !b.WriteError();
-}
-
-int EXTERNAL::BDecPdu (BUF_TYPE b, AsnLen &bytesDecoded)
-{
- ENV_TYPE env;
- int val;
-
- bytesDecoded = 0;
- if ((val = setjmp (env)) == 0)
- {
- BDec (b, bytesDecoded, env);
- return !b.ReadError();
- }
- else
- return false;
-}
-
-void EXTERNAL::Print (ostream &os) const
-{
-#ifndef NDEBUG
- os << "{ -- SEQUENCE --" << endl;
- indentG += stdIndentG;
-
- if (NOT_NULL (direct_reference))
- {
- Indent (os, indentG);
- os << "direct-reference ";
- os << *direct_reference;
- }
- else
- {
- Indent (os, indentG);
- os << "direct-reference ";
- os << "-- void --";
- os << "," << endl;
- }
-
- if (NOT_NULL (indirect_reference))
- {
- Indent (os, indentG);
- os << "indirect-reference ";
- os << *indirect_reference;
- }
- else
- {
- Indent (os, indentG);
- os << "indirect-reference ";
- os << "-- void --";
- os << "," << endl;
- }
-
- if (NOT_NULL (data_value_descriptor))
- {
- Indent (os, indentG);
- os << "data-value-descriptor ";
- os << *data_value_descriptor;
- }
- else
- {
- Indent (os, indentG);
- os << "data-value-descriptor ";
- os << "-- void --";
- os << "," << endl;
- }
-
- if (NOT_NULL (encoding))
- {
- Indent (os, indentG);
- os << "encoding ";
- os << *encoding;
- }
- else
- {
- Indent (os, indentG);
- os << "encoding ";
- os << "-- void --";
- os << endl;
- }
-
- os << endl;
- indentG -= stdIndentG;
- Indent (os, indentG);
- os << "}";
- #endif /* NDEBUG */
-} // EXTERNAL::Print
-
-