4 // Code automatically generated by asnparse.
8 #pragma implementation "h235.h"
17 #if ! H323_DISABLE_H235
25 H235_ChallengeString::H235_ChallengeString(unsigned tag
, PASN_Object::TagClass tagClass
)
26 : PASN_OctetString(tag
, tagClass
)
28 SetConstraints(PASN_Object::FixedConstraint
, 8, 128);
32 H235_ChallengeString::H235_ChallengeString(const char * v
)
38 H235_ChallengeString::H235_ChallengeString(const PString
& v
)
44 H235_ChallengeString::H235_ChallengeString(const PBYTEArray
& v
)
50 H235_ChallengeString
& H235_ChallengeString::operator=(const char * v
)
57 H235_ChallengeString
& H235_ChallengeString::operator=(const PString
& v
)
64 H235_ChallengeString
& H235_ChallengeString::operator=(const PBYTEArray
& v
)
71 PObject
* H235_ChallengeString::Clone() const
73 #ifndef PASN_LEANANDMEAN
74 PAssert(IsClass(H235_ChallengeString::Class()), PInvalidCast
);
76 return new H235_ChallengeString(*this);
84 H235_TimeStamp::H235_TimeStamp(unsigned tag
, PASN_Object::TagClass tagClass
)
85 : PASN_Integer(tag
, tagClass
)
87 SetConstraints(PASN_Object::FixedConstraint
, 1, 4294967295U);
91 H235_TimeStamp
& H235_TimeStamp::operator=(int v
)
98 H235_TimeStamp
& H235_TimeStamp::operator=(unsigned v
)
105 PObject
* H235_TimeStamp::Clone() const
107 #ifndef PASN_LEANANDMEAN
108 PAssert(IsClass(H235_TimeStamp::Class()), PInvalidCast
);
110 return new H235_TimeStamp(*this);
118 H235_RandomVal::H235_RandomVal(unsigned tag
, PASN_Object::TagClass tagClass
)
119 : PASN_Integer(tag
, tagClass
)
124 H235_RandomVal
& H235_RandomVal::operator=(int v
)
131 H235_RandomVal
& H235_RandomVal::operator=(unsigned v
)
138 PObject
* H235_RandomVal::Clone() const
140 #ifndef PASN_LEANANDMEAN
141 PAssert(IsClass(H235_RandomVal::Class()), PInvalidCast
);
143 return new H235_RandomVal(*this);
151 H235_Password::H235_Password(unsigned tag
, PASN_Object::TagClass tagClass
)
152 : PASN_BMPString(tag
, tagClass
)
154 SetConstraints(PASN_Object::FixedConstraint
, 1, 128);
158 H235_Password
& H235_Password::operator=(const char * v
)
165 H235_Password
& H235_Password::operator=(const PString
& v
)
172 H235_Password
& H235_Password::operator=(const PWORDArray
& v
)
179 H235_Password
& H235_Password::operator=(const PASN_BMPString
& v
)
186 PObject
* H235_Password::Clone() const
188 #ifndef PASN_LEANANDMEAN
189 PAssert(IsClass(H235_Password::Class()), PInvalidCast
);
191 return new H235_Password(*this);
199 H235_Identifier::H235_Identifier(unsigned tag
, PASN_Object::TagClass tagClass
)
200 : PASN_BMPString(tag
, tagClass
)
202 SetConstraints(PASN_Object::FixedConstraint
, 1, 128);
206 H235_Identifier
& H235_Identifier::operator=(const char * v
)
213 H235_Identifier
& H235_Identifier::operator=(const PString
& v
)
220 H235_Identifier
& H235_Identifier::operator=(const PWORDArray
& v
)
227 H235_Identifier
& H235_Identifier::operator=(const PASN_BMPString
& v
)
234 PObject
* H235_Identifier::Clone() const
236 #ifndef PASN_LEANANDMEAN
237 PAssert(IsClass(H235_Identifier::Class()), PInvalidCast
);
239 return new H235_Identifier(*this);
247 H235_KeyMaterial::H235_KeyMaterial(unsigned tag
, PASN_Object::TagClass tagClass
)
248 : PASN_BitString(tag
, tagClass
)
250 SetConstraints(PASN_Object::FixedConstraint
, 1, 2048);
254 PObject
* H235_KeyMaterial::Clone() const
256 #ifndef PASN_LEANANDMEAN
257 PAssert(IsClass(H235_KeyMaterial::Class()), PInvalidCast
);
259 return new H235_KeyMaterial(*this);
264 // NonStandardParameter
267 H235_NonStandardParameter::H235_NonStandardParameter(unsigned tag
, PASN_Object::TagClass tagClass
)
268 : PASN_Sequence(tag
, tagClass
, 0, FALSE
, 0)
273 #ifndef PASN_NOPRINTON
274 void H235_NonStandardParameter::PrintOn(ostream
& strm
) const
276 int indent
= strm
.precision() + 2;
278 strm
<< setw(indent
+24) << "nonStandardIdentifier = " << setprecision(indent
) << m_nonStandardIdentifier
<< '\n';
279 strm
<< setw(indent
+7) << "data = " << setprecision(indent
) << m_data
<< '\n';
280 strm
<< setw(indent
-1) << setprecision(indent
-2) << "}";
285 PObject::Comparison
H235_NonStandardParameter::Compare(const PObject
& obj
) const
287 #ifndef PASN_LEANANDMEAN
288 PAssert(PIsDescendant(&obj
, H235_NonStandardParameter
), PInvalidCast
);
290 const H235_NonStandardParameter
& other
= (const H235_NonStandardParameter
&)obj
;
294 if ((result
= m_nonStandardIdentifier
.Compare(other
.m_nonStandardIdentifier
)) != EqualTo
)
296 if ((result
= m_data
.Compare(other
.m_data
)) != EqualTo
)
299 return PASN_Sequence::Compare(other
);
303 PINDEX
H235_NonStandardParameter::GetDataLength() const
306 length
+= m_nonStandardIdentifier
.GetObjectLength();
307 length
+= m_data
.GetObjectLength();
312 BOOL
H235_NonStandardParameter::Decode(PASN_Stream
& strm
)
314 if (!PreambleDecode(strm
))
317 if (!m_nonStandardIdentifier
.Decode(strm
))
319 if (!m_data
.Decode(strm
))
322 return UnknownExtensionsDecode(strm
);
326 void H235_NonStandardParameter::Encode(PASN_Stream
& strm
) const
328 PreambleEncode(strm
);
330 m_nonStandardIdentifier
.Encode(strm
);
333 UnknownExtensionsEncode(strm
);
337 PObject
* H235_NonStandardParameter::Clone() const
339 #ifndef PASN_LEANANDMEAN
340 PAssert(IsClass(H235_NonStandardParameter::Class()), PInvalidCast
);
342 return new H235_NonStandardParameter(*this);
350 H235_DHset::H235_DHset(unsigned tag
, PASN_Object::TagClass tagClass
)
351 : PASN_Sequence(tag
, tagClass
, 0, TRUE
, 0)
353 m_halfkey
.SetConstraints(PASN_Object::FixedConstraint
, 0, 2048);
354 m_modSize
.SetConstraints(PASN_Object::FixedConstraint
, 0, 2048);
355 m_generator
.SetConstraints(PASN_Object::FixedConstraint
, 0, 2048);
359 #ifndef PASN_NOPRINTON
360 void H235_DHset::PrintOn(ostream
& strm
) const
362 int indent
= strm
.precision() + 2;
364 strm
<< setw(indent
+10) << "halfkey = " << setprecision(indent
) << m_halfkey
<< '\n';
365 strm
<< setw(indent
+10) << "modSize = " << setprecision(indent
) << m_modSize
<< '\n';
366 strm
<< setw(indent
+12) << "generator = " << setprecision(indent
) << m_generator
<< '\n';
367 strm
<< setw(indent
-1) << setprecision(indent
-2) << "}";
372 PObject::Comparison
H235_DHset::Compare(const PObject
& obj
) const
374 #ifndef PASN_LEANANDMEAN
375 PAssert(PIsDescendant(&obj
, H235_DHset
), PInvalidCast
);
377 const H235_DHset
& other
= (const H235_DHset
&)obj
;
381 if ((result
= m_halfkey
.Compare(other
.m_halfkey
)) != EqualTo
)
383 if ((result
= m_modSize
.Compare(other
.m_modSize
)) != EqualTo
)
385 if ((result
= m_generator
.Compare(other
.m_generator
)) != EqualTo
)
388 return PASN_Sequence::Compare(other
);
392 PINDEX
H235_DHset::GetDataLength() const
395 length
+= m_halfkey
.GetObjectLength();
396 length
+= m_modSize
.GetObjectLength();
397 length
+= m_generator
.GetObjectLength();
402 BOOL
H235_DHset::Decode(PASN_Stream
& strm
)
404 if (!PreambleDecode(strm
))
407 if (!m_halfkey
.Decode(strm
))
409 if (!m_modSize
.Decode(strm
))
411 if (!m_generator
.Decode(strm
))
414 return UnknownExtensionsDecode(strm
);
418 void H235_DHset::Encode(PASN_Stream
& strm
) const
420 PreambleEncode(strm
);
422 m_halfkey
.Encode(strm
);
423 m_modSize
.Encode(strm
);
424 m_generator
.Encode(strm
);
426 UnknownExtensionsEncode(strm
);
430 PObject
* H235_DHset::Clone() const
432 #ifndef PASN_LEANANDMEAN
433 PAssert(IsClass(H235_DHset::Class()), PInvalidCast
);
435 return new H235_DHset(*this);
443 H235_ECpoint::H235_ECpoint(unsigned tag
, PASN_Object::TagClass tagClass
)
444 : PASN_Sequence(tag
, tagClass
, 2, TRUE
, 0)
446 m_x
.SetConstraints(PASN_Object::FixedConstraint
, 0, 511);
447 m_y
.SetConstraints(PASN_Object::FixedConstraint
, 0, 511);
451 #ifndef PASN_NOPRINTON
452 void H235_ECpoint::PrintOn(ostream
& strm
) const
454 int indent
= strm
.precision() + 2;
456 if (HasOptionalField(e_x
))
457 strm
<< setw(indent
+4) << "x = " << setprecision(indent
) << m_x
<< '\n';
458 if (HasOptionalField(e_y
))
459 strm
<< setw(indent
+4) << "y = " << setprecision(indent
) << m_y
<< '\n';
460 strm
<< setw(indent
-1) << setprecision(indent
-2) << "}";
465 PObject::Comparison
H235_ECpoint::Compare(const PObject
& obj
) const
467 #ifndef PASN_LEANANDMEAN
468 PAssert(PIsDescendant(&obj
, H235_ECpoint
), PInvalidCast
);
470 const H235_ECpoint
& other
= (const H235_ECpoint
&)obj
;
474 if ((result
= m_x
.Compare(other
.m_x
)) != EqualTo
)
476 if ((result
= m_y
.Compare(other
.m_y
)) != EqualTo
)
479 return PASN_Sequence::Compare(other
);
483 PINDEX
H235_ECpoint::GetDataLength() const
486 if (HasOptionalField(e_x
))
487 length
+= m_x
.GetObjectLength();
488 if (HasOptionalField(e_y
))
489 length
+= m_y
.GetObjectLength();
494 BOOL
H235_ECpoint::Decode(PASN_Stream
& strm
)
496 if (!PreambleDecode(strm
))
499 if (HasOptionalField(e_x
) && !m_x
.Decode(strm
))
501 if (HasOptionalField(e_y
) && !m_y
.Decode(strm
))
504 return UnknownExtensionsDecode(strm
);
508 void H235_ECpoint::Encode(PASN_Stream
& strm
) const
510 PreambleEncode(strm
);
512 if (HasOptionalField(e_x
))
514 if (HasOptionalField(e_y
))
517 UnknownExtensionsEncode(strm
);
521 PObject
* H235_ECpoint::Clone() const
523 #ifndef PASN_LEANANDMEAN
524 PAssert(IsClass(H235_ECpoint::Class()), PInvalidCast
);
526 return new H235_ECpoint(*this);
531 #ifndef PASN_NOPRINTON
532 const static PASN_Names Names_H235_ECKASDH
[]={
541 H235_ECKASDH::H235_ECKASDH(unsigned tag
, PASN_Object::TagClass tagClass
)
542 : PASN_Choice(tag
, tagClass
, 2, TRUE
543 #ifndef PASN_NOPRINTON
544 ,(const PASN_Names
*)Names_H235_ECKASDH
,2
551 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
552 H235_ECKASDH::operator H235_ECKASDH_eckasdhp
&() const
554 H235_ECKASDH::operator H235_ECKASDH_eckasdhp
&()
556 #ifndef PASN_LEANANDMEAN
557 PAssert(PIsDescendant(PAssertNULL(choice
), H235_ECKASDH_eckasdhp
), PInvalidCast
);
559 return *(H235_ECKASDH_eckasdhp
*)choice
;
563 H235_ECKASDH::operator const H235_ECKASDH_eckasdhp
&() const
566 #ifndef PASN_LEANANDMEAN
567 PAssert(PIsDescendant(PAssertNULL(choice
), H235_ECKASDH_eckasdhp
), PInvalidCast
);
569 return *(H235_ECKASDH_eckasdhp
*)choice
;
573 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
574 H235_ECKASDH::operator H235_ECKASDH_eckasdh2
&() const
576 H235_ECKASDH::operator H235_ECKASDH_eckasdh2
&()
578 #ifndef PASN_LEANANDMEAN
579 PAssert(PIsDescendant(PAssertNULL(choice
), H235_ECKASDH_eckasdh2
), PInvalidCast
);
581 return *(H235_ECKASDH_eckasdh2
*)choice
;
585 H235_ECKASDH::operator const H235_ECKASDH_eckasdh2
&() const
588 #ifndef PASN_LEANANDMEAN
589 PAssert(PIsDescendant(PAssertNULL(choice
), H235_ECKASDH_eckasdh2
), PInvalidCast
);
591 return *(H235_ECKASDH_eckasdh2
*)choice
;
595 BOOL
H235_ECKASDH::CreateObject()
599 choice
= new H235_ECKASDH_eckasdhp();
602 choice
= new H235_ECKASDH_eckasdh2();
611 PObject
* H235_ECKASDH::Clone() const
613 #ifndef PASN_LEANANDMEAN
614 PAssert(IsClass(H235_ECKASDH::Class()), PInvalidCast
);
616 return new H235_ECKASDH(*this);
624 H235_ECGDSASignature::H235_ECGDSASignature(unsigned tag
, PASN_Object::TagClass tagClass
)
625 : PASN_Sequence(tag
, tagClass
, 0, FALSE
, 0)
627 m_r
.SetConstraints(PASN_Object::FixedConstraint
, 0, 511);
628 m_s
.SetConstraints(PASN_Object::FixedConstraint
, 0, 511);
632 #ifndef PASN_NOPRINTON
633 void H235_ECGDSASignature::PrintOn(ostream
& strm
) const
635 int indent
= strm
.precision() + 2;
637 strm
<< setw(indent
+4) << "r = " << setprecision(indent
) << m_r
<< '\n';
638 strm
<< setw(indent
+4) << "s = " << setprecision(indent
) << m_s
<< '\n';
639 strm
<< setw(indent
-1) << setprecision(indent
-2) << "}";
644 PObject::Comparison
H235_ECGDSASignature::Compare(const PObject
& obj
) const
646 #ifndef PASN_LEANANDMEAN
647 PAssert(PIsDescendant(&obj
, H235_ECGDSASignature
), PInvalidCast
);
649 const H235_ECGDSASignature
& other
= (const H235_ECGDSASignature
&)obj
;
653 if ((result
= m_r
.Compare(other
.m_r
)) != EqualTo
)
655 if ((result
= m_s
.Compare(other
.m_s
)) != EqualTo
)
658 return PASN_Sequence::Compare(other
);
662 PINDEX
H235_ECGDSASignature::GetDataLength() const
665 length
+= m_r
.GetObjectLength();
666 length
+= m_s
.GetObjectLength();
671 BOOL
H235_ECGDSASignature::Decode(PASN_Stream
& strm
)
673 if (!PreambleDecode(strm
))
676 if (!m_r
.Decode(strm
))
678 if (!m_s
.Decode(strm
))
681 return UnknownExtensionsDecode(strm
);
685 void H235_ECGDSASignature::Encode(PASN_Stream
& strm
) const
687 PreambleEncode(strm
);
692 UnknownExtensionsEncode(strm
);
696 PObject
* H235_ECGDSASignature::Clone() const
698 #ifndef PASN_LEANANDMEAN
699 PAssert(IsClass(H235_ECGDSASignature::Class()), PInvalidCast
);
701 return new H235_ECGDSASignature(*this);
709 H235_TypedCertificate::H235_TypedCertificate(unsigned tag
, PASN_Object::TagClass tagClass
)
710 : PASN_Sequence(tag
, tagClass
, 0, TRUE
, 0)
715 #ifndef PASN_NOPRINTON
716 void H235_TypedCertificate::PrintOn(ostream
& strm
) const
718 int indent
= strm
.precision() + 2;
720 strm
<< setw(indent
+7) << "type = " << setprecision(indent
) << m_type
<< '\n';
721 strm
<< setw(indent
+14) << "certificate = " << setprecision(indent
) << m_certificate
<< '\n';
722 strm
<< setw(indent
-1) << setprecision(indent
-2) << "}";
727 PObject::Comparison
H235_TypedCertificate::Compare(const PObject
& obj
) const
729 #ifndef PASN_LEANANDMEAN
730 PAssert(PIsDescendant(&obj
, H235_TypedCertificate
), PInvalidCast
);
732 const H235_TypedCertificate
& other
= (const H235_TypedCertificate
&)obj
;
736 if ((result
= m_type
.Compare(other
.m_type
)) != EqualTo
)
738 if ((result
= m_certificate
.Compare(other
.m_certificate
)) != EqualTo
)
741 return PASN_Sequence::Compare(other
);
745 PINDEX
H235_TypedCertificate::GetDataLength() const
748 length
+= m_type
.GetObjectLength();
749 length
+= m_certificate
.GetObjectLength();
754 BOOL
H235_TypedCertificate::Decode(PASN_Stream
& strm
)
756 if (!PreambleDecode(strm
))
759 if (!m_type
.Decode(strm
))
761 if (!m_certificate
.Decode(strm
))
764 return UnknownExtensionsDecode(strm
);
768 void H235_TypedCertificate::Encode(PASN_Stream
& strm
) const
770 PreambleEncode(strm
);
773 m_certificate
.Encode(strm
);
775 UnknownExtensionsEncode(strm
);
779 PObject
* H235_TypedCertificate::Clone() const
781 #ifndef PASN_LEANANDMEAN
782 PAssert(IsClass(H235_TypedCertificate::Class()), PInvalidCast
);
784 return new H235_TypedCertificate(*this);
789 #ifndef PASN_NOPRINTON
790 const static PASN_Names Names_H235_AuthenticationBES
[]={
799 H235_AuthenticationBES::H235_AuthenticationBES(unsigned tag
, PASN_Object::TagClass tagClass
)
800 : PASN_Choice(tag
, tagClass
, 2, TRUE
801 #ifndef PASN_NOPRINTON
802 ,(const PASN_Names
*)Names_H235_AuthenticationBES
,2
809 BOOL
H235_AuthenticationBES::CreateObject()
811 choice
= (tag
<= e_radius
) ? new PASN_Null() : NULL
;
812 return choice
!= NULL
;
816 PObject
* H235_AuthenticationBES::Clone() const
818 #ifndef PASN_LEANANDMEAN
819 PAssert(IsClass(H235_AuthenticationBES::Class()), PInvalidCast
);
821 return new H235_AuthenticationBES(*this);
826 #ifndef PASN_NOPRINTON
827 const static PASN_Names Names_H235_AuthenticationMechanism
[]={
835 ,{"authenticationBES",7}
840 // AuthenticationMechanism
843 H235_AuthenticationMechanism::H235_AuthenticationMechanism(unsigned tag
, PASN_Object::TagClass tagClass
)
844 : PASN_Choice(tag
, tagClass
, 7, TRUE
845 #ifndef PASN_NOPRINTON
846 ,(const PASN_Names
*)Names_H235_AuthenticationMechanism
,9
853 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
854 H235_AuthenticationMechanism::operator H235_NonStandardParameter
&() const
856 H235_AuthenticationMechanism::operator H235_NonStandardParameter
&()
858 #ifndef PASN_LEANANDMEAN
859 PAssert(PIsDescendant(PAssertNULL(choice
), H235_NonStandardParameter
), PInvalidCast
);
861 return *(H235_NonStandardParameter
*)choice
;
865 H235_AuthenticationMechanism::operator const H235_NonStandardParameter
&() const
868 #ifndef PASN_LEANANDMEAN
869 PAssert(PIsDescendant(PAssertNULL(choice
), H235_NonStandardParameter
), PInvalidCast
);
871 return *(H235_NonStandardParameter
*)choice
;
875 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
876 H235_AuthenticationMechanism::operator H235_AuthenticationBES
&() const
878 H235_AuthenticationMechanism::operator H235_AuthenticationBES
&()
880 #ifndef PASN_LEANANDMEAN
881 PAssert(PIsDescendant(PAssertNULL(choice
), H235_AuthenticationBES
), PInvalidCast
);
883 return *(H235_AuthenticationBES
*)choice
;
887 H235_AuthenticationMechanism::operator const H235_AuthenticationBES
&() const
890 #ifndef PASN_LEANANDMEAN
891 PAssert(PIsDescendant(PAssertNULL(choice
), H235_AuthenticationBES
), PInvalidCast
);
893 return *(H235_AuthenticationBES
*)choice
;
897 BOOL
H235_AuthenticationMechanism::CreateObject()
906 choice
= new PASN_Null();
909 choice
= new H235_NonStandardParameter();
911 case e_authenticationBES
:
912 choice
= new H235_AuthenticationBES();
915 choice
= new PASN_ObjectId();
924 PObject
* H235_AuthenticationMechanism::Clone() const
926 #ifndef PASN_LEANANDMEAN
927 PAssert(IsClass(H235_AuthenticationMechanism::Class()), PInvalidCast
);
929 return new H235_AuthenticationMechanism(*this);
934 #ifndef PASN_NOPRINTON
935 const static PASN_Names Names_H235_Element
[]={
947 H235_Element::H235_Element(unsigned tag
, PASN_Object::TagClass tagClass
)
948 : PASN_Choice(tag
, tagClass
, 5, TRUE
949 #ifndef PASN_NOPRINTON
950 ,(const PASN_Names
*)Names_H235_Element
,5
957 BOOL
H235_Element::CreateObject()
961 choice
= new PASN_OctetString();
964 choice
= new PASN_Integer();
967 choice
= new PASN_BitString();
970 choice
= new PASN_BMPString();
973 choice
= new PASN_Boolean();
982 PObject
* H235_Element::Clone() const
984 #ifndef PASN_LEANANDMEAN
985 PAssert(IsClass(H235_Element::Class()), PInvalidCast
);
987 return new H235_Element(*this);
995 H235_IV8::H235_IV8(unsigned tag
, PASN_Object::TagClass tagClass
)
996 : PASN_OctetString(tag
, tagClass
)
998 SetConstraints(PASN_Object::FixedConstraint
, 8);
1002 H235_IV8::H235_IV8(const char * v
)
1008 H235_IV8::H235_IV8(const PString
& v
)
1014 H235_IV8::H235_IV8(const PBYTEArray
& v
)
1020 H235_IV8
& H235_IV8::operator=(const char * v
)
1027 H235_IV8
& H235_IV8::operator=(const PString
& v
)
1034 H235_IV8
& H235_IV8::operator=(const PBYTEArray
& v
)
1041 PObject
* H235_IV8::Clone() const
1043 #ifndef PASN_LEANANDMEAN
1044 PAssert(IsClass(H235_IV8::Class()), PInvalidCast
);
1046 return new H235_IV8(*this);
1054 H235_IV16::H235_IV16(unsigned tag
, PASN_Object::TagClass tagClass
)
1055 : PASN_OctetString(tag
, tagClass
)
1057 SetConstraints(PASN_Object::FixedConstraint
, 16);
1061 H235_IV16::H235_IV16(const char * v
)
1067 H235_IV16::H235_IV16(const PString
& v
)
1073 H235_IV16::H235_IV16(const PBYTEArray
& v
)
1079 H235_IV16
& H235_IV16::operator=(const char * v
)
1086 H235_IV16
& H235_IV16::operator=(const PString
& v
)
1093 H235_IV16
& H235_IV16::operator=(const PBYTEArray
& v
)
1100 PObject
* H235_IV16::Clone() const
1102 #ifndef PASN_LEANANDMEAN
1103 PAssert(IsClass(H235_IV16::Class()), PInvalidCast
);
1105 return new H235_IV16(*this);
1113 H235_Params::H235_Params(unsigned tag
, PASN_Object::TagClass tagClass
)
1114 : PASN_Sequence(tag
, tagClass
, 2, TRUE
, 3)
1119 #ifndef PASN_NOPRINTON
1120 void H235_Params::PrintOn(ostream
& strm
) const
1122 int indent
= strm
.precision() + 2;
1124 if (HasOptionalField(e_ranInt
))
1125 strm
<< setw(indent
+9) << "ranInt = " << setprecision(indent
) << m_ranInt
<< '\n';
1126 if (HasOptionalField(e_iv8
))
1127 strm
<< setw(indent
+6) << "iv8 = " << setprecision(indent
) << m_iv8
<< '\n';
1128 if (HasOptionalField(e_iv16
))
1129 strm
<< setw(indent
+7) << "iv16 = " << setprecision(indent
) << m_iv16
<< '\n';
1130 if (HasOptionalField(e_iv
))
1131 strm
<< setw(indent
+5) << "iv = " << setprecision(indent
) << m_iv
<< '\n';
1132 if (HasOptionalField(e_clearSalt
))
1133 strm
<< setw(indent
+12) << "clearSalt = " << setprecision(indent
) << m_clearSalt
<< '\n';
1134 strm
<< setw(indent
-1) << setprecision(indent
-2) << "}";
1139 PObject::Comparison
H235_Params::Compare(const PObject
& obj
) const
1141 #ifndef PASN_LEANANDMEAN
1142 PAssert(PIsDescendant(&obj
, H235_Params
), PInvalidCast
);
1144 const H235_Params
& other
= (const H235_Params
&)obj
;
1148 if ((result
= m_ranInt
.Compare(other
.m_ranInt
)) != EqualTo
)
1150 if ((result
= m_iv8
.Compare(other
.m_iv8
)) != EqualTo
)
1153 return PASN_Sequence::Compare(other
);
1157 PINDEX
H235_Params::GetDataLength() const
1160 if (HasOptionalField(e_ranInt
))
1161 length
+= m_ranInt
.GetObjectLength();
1162 if (HasOptionalField(e_iv8
))
1163 length
+= m_iv8
.GetObjectLength();
1168 BOOL
H235_Params::Decode(PASN_Stream
& strm
)
1170 if (!PreambleDecode(strm
))
1173 if (HasOptionalField(e_ranInt
) && !m_ranInt
.Decode(strm
))
1175 if (HasOptionalField(e_iv8
) && !m_iv8
.Decode(strm
))
1177 if (!KnownExtensionDecode(strm
, e_iv16
, m_iv16
))
1179 if (!KnownExtensionDecode(strm
, e_iv
, m_iv
))
1181 if (!KnownExtensionDecode(strm
, e_clearSalt
, m_clearSalt
))
1184 return UnknownExtensionsDecode(strm
);
1188 void H235_Params::Encode(PASN_Stream
& strm
) const
1190 PreambleEncode(strm
);
1192 if (HasOptionalField(e_ranInt
))
1193 m_ranInt
.Encode(strm
);
1194 if (HasOptionalField(e_iv8
))
1196 KnownExtensionEncode(strm
, e_iv16
, m_iv16
);
1197 KnownExtensionEncode(strm
, e_iv
, m_iv
);
1198 KnownExtensionEncode(strm
, e_clearSalt
, m_clearSalt
);
1200 UnknownExtensionsEncode(strm
);
1204 PObject
* H235_Params::Clone() const
1206 #ifndef PASN_LEANANDMEAN
1207 PAssert(IsClass(H235_Params::Class()), PInvalidCast
);
1209 return new H235_Params(*this);
1217 H235_ReturnSig::H235_ReturnSig(unsigned tag
, PASN_Object::TagClass tagClass
)
1218 : PASN_Sequence(tag
, tagClass
, 2, FALSE
, 0)
1223 #ifndef PASN_NOPRINTON
1224 void H235_ReturnSig::PrintOn(ostream
& strm
) const
1226 int indent
= strm
.precision() + 2;
1228 strm
<< setw(indent
+12) << "generalId = " << setprecision(indent
) << m_generalId
<< '\n';
1229 strm
<< setw(indent
+17) << "responseRandom = " << setprecision(indent
) << m_responseRandom
<< '\n';
1230 if (HasOptionalField(e_requestRandom
))
1231 strm
<< setw(indent
+16) << "requestRandom = " << setprecision(indent
) << m_requestRandom
<< '\n';
1232 if (HasOptionalField(e_certificate
))
1233 strm
<< setw(indent
+14) << "certificate = " << setprecision(indent
) << m_certificate
<< '\n';
1234 strm
<< setw(indent
-1) << setprecision(indent
-2) << "}";
1239 PObject::Comparison
H235_ReturnSig::Compare(const PObject
& obj
) const
1241 #ifndef PASN_LEANANDMEAN
1242 PAssert(PIsDescendant(&obj
, H235_ReturnSig
), PInvalidCast
);
1244 const H235_ReturnSig
& other
= (const H235_ReturnSig
&)obj
;
1248 if ((result
= m_generalId
.Compare(other
.m_generalId
)) != EqualTo
)
1250 if ((result
= m_responseRandom
.Compare(other
.m_responseRandom
)) != EqualTo
)
1252 if ((result
= m_requestRandom
.Compare(other
.m_requestRandom
)) != EqualTo
)
1254 if ((result
= m_certificate
.Compare(other
.m_certificate
)) != EqualTo
)
1257 return PASN_Sequence::Compare(other
);
1261 PINDEX
H235_ReturnSig::GetDataLength() const
1264 length
+= m_generalId
.GetObjectLength();
1265 length
+= m_responseRandom
.GetObjectLength();
1266 if (HasOptionalField(e_requestRandom
))
1267 length
+= m_requestRandom
.GetObjectLength();
1268 if (HasOptionalField(e_certificate
))
1269 length
+= m_certificate
.GetObjectLength();
1274 BOOL
H235_ReturnSig::Decode(PASN_Stream
& strm
)
1276 if (!PreambleDecode(strm
))
1279 if (!m_generalId
.Decode(strm
))
1281 if (!m_responseRandom
.Decode(strm
))
1283 if (HasOptionalField(e_requestRandom
) && !m_requestRandom
.Decode(strm
))
1285 if (HasOptionalField(e_certificate
) && !m_certificate
.Decode(strm
))
1288 return UnknownExtensionsDecode(strm
);
1292 void H235_ReturnSig::Encode(PASN_Stream
& strm
) const
1294 PreambleEncode(strm
);
1296 m_generalId
.Encode(strm
);
1297 m_responseRandom
.Encode(strm
);
1298 if (HasOptionalField(e_requestRandom
))
1299 m_requestRandom
.Encode(strm
);
1300 if (HasOptionalField(e_certificate
))
1301 m_certificate
.Encode(strm
);
1303 UnknownExtensionsEncode(strm
);
1307 PObject
* H235_ReturnSig::Clone() const
1309 #ifndef PASN_LEANANDMEAN
1310 PAssert(IsClass(H235_ReturnSig::Class()), PInvalidCast
);
1312 return new H235_ReturnSig(*this);
1320 H235_EncodedReturnSig::H235_EncodedReturnSig(unsigned tag
, PASN_Object::TagClass tagClass
)
1321 : PASN_OctetString(tag
, tagClass
)
1326 PObject
* H235_EncodedReturnSig::Clone() const
1328 #ifndef PASN_LEANANDMEAN
1329 PAssert(IsClass(H235_EncodedReturnSig::Class()), PInvalidCast
);
1331 return new H235_EncodedReturnSig(*this);
1339 H235_KeySyncMaterial::H235_KeySyncMaterial(unsigned tag
, PASN_Object::TagClass tagClass
)
1340 : PASN_Sequence(tag
, tagClass
, 0, TRUE
, 0)
1345 #ifndef PASN_NOPRINTON
1346 void H235_KeySyncMaterial::PrintOn(ostream
& strm
) const
1348 int indent
= strm
.precision() + 2;
1350 strm
<< setw(indent
+12) << "generalID = " << setprecision(indent
) << m_generalID
<< '\n';
1351 strm
<< setw(indent
+14) << "keyMaterial = " << setprecision(indent
) << m_keyMaterial
<< '\n';
1352 strm
<< setw(indent
-1) << setprecision(indent
-2) << "}";
1357 PObject::Comparison
H235_KeySyncMaterial::Compare(const PObject
& obj
) const
1359 #ifndef PASN_LEANANDMEAN
1360 PAssert(PIsDescendant(&obj
, H235_KeySyncMaterial
), PInvalidCast
);
1362 const H235_KeySyncMaterial
& other
= (const H235_KeySyncMaterial
&)obj
;
1366 if ((result
= m_generalID
.Compare(other
.m_generalID
)) != EqualTo
)
1368 if ((result
= m_keyMaterial
.Compare(other
.m_keyMaterial
)) != EqualTo
)
1371 return PASN_Sequence::Compare(other
);
1375 PINDEX
H235_KeySyncMaterial::GetDataLength() const
1378 length
+= m_generalID
.GetObjectLength();
1379 length
+= m_keyMaterial
.GetObjectLength();
1384 BOOL
H235_KeySyncMaterial::Decode(PASN_Stream
& strm
)
1386 if (!PreambleDecode(strm
))
1389 if (!m_generalID
.Decode(strm
))
1391 if (!m_keyMaterial
.Decode(strm
))
1394 return UnknownExtensionsDecode(strm
);
1398 void H235_KeySyncMaterial::Encode(PASN_Stream
& strm
) const
1400 PreambleEncode(strm
);
1402 m_generalID
.Encode(strm
);
1403 m_keyMaterial
.Encode(strm
);
1405 UnknownExtensionsEncode(strm
);
1409 PObject
* H235_KeySyncMaterial::Clone() const
1411 #ifndef PASN_LEANANDMEAN
1412 PAssert(IsClass(H235_KeySyncMaterial::Class()), PInvalidCast
);
1414 return new H235_KeySyncMaterial(*this);
1419 // EncodedKeySyncMaterial
1422 H235_EncodedKeySyncMaterial::H235_EncodedKeySyncMaterial(unsigned tag
, PASN_Object::TagClass tagClass
)
1423 : PASN_OctetString(tag
, tagClass
)
1428 PObject
* H235_EncodedKeySyncMaterial::Clone() const
1430 #ifndef PASN_LEANANDMEAN
1431 PAssert(IsClass(H235_EncodedKeySyncMaterial::Class()), PInvalidCast
);
1433 return new H235_EncodedKeySyncMaterial(*this);
1438 // V3KeySyncMaterial
1441 H235_V3KeySyncMaterial::H235_V3KeySyncMaterial(unsigned tag
, PASN_Object::TagClass tagClass
)
1442 : PASN_Sequence(tag
, tagClass
, 7, TRUE
, 1)
1447 #ifndef PASN_NOPRINTON
1448 void H235_V3KeySyncMaterial::PrintOn(ostream
& strm
) const
1450 int indent
= strm
.precision() + 2;
1452 if (HasOptionalField(e_generalID
))
1453 strm
<< setw(indent
+12) << "generalID = " << setprecision(indent
) << m_generalID
<< '\n';
1454 if (HasOptionalField(e_algorithmOID
))
1455 strm
<< setw(indent
+15) << "algorithmOID = " << setprecision(indent
) << m_algorithmOID
<< '\n';
1456 strm
<< setw(indent
+9) << "paramS = " << setprecision(indent
) << m_paramS
<< '\n';
1457 if (HasOptionalField(e_encryptedSessionKey
))
1458 strm
<< setw(indent
+22) << "encryptedSessionKey = " << setprecision(indent
) << m_encryptedSessionKey
<< '\n';
1459 if (HasOptionalField(e_encryptedSaltingKey
))
1460 strm
<< setw(indent
+22) << "encryptedSaltingKey = " << setprecision(indent
) << m_encryptedSaltingKey
<< '\n';
1461 if (HasOptionalField(e_clearSaltingKey
))
1462 strm
<< setw(indent
+18) << "clearSaltingKey = " << setprecision(indent
) << m_clearSaltingKey
<< '\n';
1463 if (HasOptionalField(e_paramSsalt
))
1464 strm
<< setw(indent
+13) << "paramSsalt = " << setprecision(indent
) << m_paramSsalt
<< '\n';
1465 if (HasOptionalField(e_keyDerivationOID
))
1466 strm
<< setw(indent
+19) << "keyDerivationOID = " << setprecision(indent
) << m_keyDerivationOID
<< '\n';
1467 if (HasOptionalField(e_genericKeyMaterial
))
1468 strm
<< setw(indent
+21) << "genericKeyMaterial = " << setprecision(indent
) << m_genericKeyMaterial
<< '\n';
1469 strm
<< setw(indent
-1) << setprecision(indent
-2) << "}";
1474 PObject::Comparison
H235_V3KeySyncMaterial::Compare(const PObject
& obj
) const
1476 #ifndef PASN_LEANANDMEAN
1477 PAssert(PIsDescendant(&obj
, H235_V3KeySyncMaterial
), PInvalidCast
);
1479 const H235_V3KeySyncMaterial
& other
= (const H235_V3KeySyncMaterial
&)obj
;
1483 if ((result
= m_generalID
.Compare(other
.m_generalID
)) != EqualTo
)
1485 if ((result
= m_algorithmOID
.Compare(other
.m_algorithmOID
)) != EqualTo
)
1487 if ((result
= m_paramS
.Compare(other
.m_paramS
)) != EqualTo
)
1489 if ((result
= m_encryptedSessionKey
.Compare(other
.m_encryptedSessionKey
)) != EqualTo
)
1491 if ((result
= m_encryptedSaltingKey
.Compare(other
.m_encryptedSaltingKey
)) != EqualTo
)
1493 if ((result
= m_clearSaltingKey
.Compare(other
.m_clearSaltingKey
)) != EqualTo
)
1495 if ((result
= m_paramSsalt
.Compare(other
.m_paramSsalt
)) != EqualTo
)
1497 if ((result
= m_keyDerivationOID
.Compare(other
.m_keyDerivationOID
)) != EqualTo
)
1500 return PASN_Sequence::Compare(other
);
1504 PINDEX
H235_V3KeySyncMaterial::GetDataLength() const
1507 if (HasOptionalField(e_generalID
))
1508 length
+= m_generalID
.GetObjectLength();
1509 if (HasOptionalField(e_algorithmOID
))
1510 length
+= m_algorithmOID
.GetObjectLength();
1511 length
+= m_paramS
.GetObjectLength();
1512 if (HasOptionalField(e_encryptedSessionKey
))
1513 length
+= m_encryptedSessionKey
.GetObjectLength();
1514 if (HasOptionalField(e_encryptedSaltingKey
))
1515 length
+= m_encryptedSaltingKey
.GetObjectLength();
1516 if (HasOptionalField(e_clearSaltingKey
))
1517 length
+= m_clearSaltingKey
.GetObjectLength();
1518 if (HasOptionalField(e_paramSsalt
))
1519 length
+= m_paramSsalt
.GetObjectLength();
1520 if (HasOptionalField(e_keyDerivationOID
))
1521 length
+= m_keyDerivationOID
.GetObjectLength();
1526 BOOL
H235_V3KeySyncMaterial::Decode(PASN_Stream
& strm
)
1528 if (!PreambleDecode(strm
))
1531 if (HasOptionalField(e_generalID
) && !m_generalID
.Decode(strm
))
1533 if (HasOptionalField(e_algorithmOID
) && !m_algorithmOID
.Decode(strm
))
1535 if (!m_paramS
.Decode(strm
))
1537 if (HasOptionalField(e_encryptedSessionKey
) && !m_encryptedSessionKey
.Decode(strm
))
1539 if (HasOptionalField(e_encryptedSaltingKey
) && !m_encryptedSaltingKey
.Decode(strm
))
1541 if (HasOptionalField(e_clearSaltingKey
) && !m_clearSaltingKey
.Decode(strm
))
1543 if (HasOptionalField(e_paramSsalt
) && !m_paramSsalt
.Decode(strm
))
1545 if (HasOptionalField(e_keyDerivationOID
) && !m_keyDerivationOID
.Decode(strm
))
1547 if (!KnownExtensionDecode(strm
, e_genericKeyMaterial
, m_genericKeyMaterial
))
1550 return UnknownExtensionsDecode(strm
);
1554 void H235_V3KeySyncMaterial::Encode(PASN_Stream
& strm
) const
1556 PreambleEncode(strm
);
1558 if (HasOptionalField(e_generalID
))
1559 m_generalID
.Encode(strm
);
1560 if (HasOptionalField(e_algorithmOID
))
1561 m_algorithmOID
.Encode(strm
);
1562 m_paramS
.Encode(strm
);
1563 if (HasOptionalField(e_encryptedSessionKey
))
1564 m_encryptedSessionKey
.Encode(strm
);
1565 if (HasOptionalField(e_encryptedSaltingKey
))
1566 m_encryptedSaltingKey
.Encode(strm
);
1567 if (HasOptionalField(e_clearSaltingKey
))
1568 m_clearSaltingKey
.Encode(strm
);
1569 if (HasOptionalField(e_paramSsalt
))
1570 m_paramSsalt
.Encode(strm
);
1571 if (HasOptionalField(e_keyDerivationOID
))
1572 m_keyDerivationOID
.Encode(strm
);
1573 KnownExtensionEncode(strm
, e_genericKeyMaterial
, m_genericKeyMaterial
);
1575 UnknownExtensionsEncode(strm
);
1579 PObject
* H235_V3KeySyncMaterial::Clone() const
1581 #ifndef PASN_LEANANDMEAN
1582 PAssert(IsClass(H235_V3KeySyncMaterial::Class()), PInvalidCast
);
1584 return new H235_V3KeySyncMaterial(*this);
1592 H235_ECKASDH_eckasdhp::H235_ECKASDH_eckasdhp(unsigned tag
, PASN_Object::TagClass tagClass
)
1593 : PASN_Sequence(tag
, tagClass
, 0, FALSE
, 0)
1595 m_modulus
.SetConstraints(PASN_Object::FixedConstraint
, 0, 511);
1596 m_weierstrassA
.SetConstraints(PASN_Object::FixedConstraint
, 0, 511);
1597 m_weierstrassB
.SetConstraints(PASN_Object::FixedConstraint
, 0, 511);
1601 #ifndef PASN_NOPRINTON
1602 void H235_ECKASDH_eckasdhp::PrintOn(ostream
& strm
) const
1604 int indent
= strm
.precision() + 2;
1606 strm
<< setw(indent
+13) << "public_key = " << setprecision(indent
) << m_public_key
<< '\n';
1607 strm
<< setw(indent
+10) << "modulus = " << setprecision(indent
) << m_modulus
<< '\n';
1608 strm
<< setw(indent
+7) << "base = " << setprecision(indent
) << m_base
<< '\n';
1609 strm
<< setw(indent
+15) << "weierstrassA = " << setprecision(indent
) << m_weierstrassA
<< '\n';
1610 strm
<< setw(indent
+15) << "weierstrassB = " << setprecision(indent
) << m_weierstrassB
<< '\n';
1611 strm
<< setw(indent
-1) << setprecision(indent
-2) << "}";
1616 PObject::Comparison
H235_ECKASDH_eckasdhp::Compare(const PObject
& obj
) const
1618 #ifndef PASN_LEANANDMEAN
1619 PAssert(PIsDescendant(&obj
, H235_ECKASDH_eckasdhp
), PInvalidCast
);
1621 const H235_ECKASDH_eckasdhp
& other
= (const H235_ECKASDH_eckasdhp
&)obj
;
1625 if ((result
= m_public_key
.Compare(other
.m_public_key
)) != EqualTo
)
1627 if ((result
= m_modulus
.Compare(other
.m_modulus
)) != EqualTo
)
1629 if ((result
= m_base
.Compare(other
.m_base
)) != EqualTo
)
1631 if ((result
= m_weierstrassA
.Compare(other
.m_weierstrassA
)) != EqualTo
)
1633 if ((result
= m_weierstrassB
.Compare(other
.m_weierstrassB
)) != EqualTo
)
1636 return PASN_Sequence::Compare(other
);
1640 PINDEX
H235_ECKASDH_eckasdhp::GetDataLength() const
1643 length
+= m_public_key
.GetObjectLength();
1644 length
+= m_modulus
.GetObjectLength();
1645 length
+= m_base
.GetObjectLength();
1646 length
+= m_weierstrassA
.GetObjectLength();
1647 length
+= m_weierstrassB
.GetObjectLength();
1652 BOOL
H235_ECKASDH_eckasdhp::Decode(PASN_Stream
& strm
)
1654 if (!PreambleDecode(strm
))
1657 if (!m_public_key
.Decode(strm
))
1659 if (!m_modulus
.Decode(strm
))
1661 if (!m_base
.Decode(strm
))
1663 if (!m_weierstrassA
.Decode(strm
))
1665 if (!m_weierstrassB
.Decode(strm
))
1668 return UnknownExtensionsDecode(strm
);
1672 void H235_ECKASDH_eckasdhp::Encode(PASN_Stream
& strm
) const
1674 PreambleEncode(strm
);
1676 m_public_key
.Encode(strm
);
1677 m_modulus
.Encode(strm
);
1678 m_base
.Encode(strm
);
1679 m_weierstrassA
.Encode(strm
);
1680 m_weierstrassB
.Encode(strm
);
1682 UnknownExtensionsEncode(strm
);
1686 PObject
* H235_ECKASDH_eckasdhp::Clone() const
1688 #ifndef PASN_LEANANDMEAN
1689 PAssert(IsClass(H235_ECKASDH_eckasdhp::Class()), PInvalidCast
);
1691 return new H235_ECKASDH_eckasdhp(*this);
1699 H235_ECKASDH_eckasdh2::H235_ECKASDH_eckasdh2(unsigned tag
, PASN_Object::TagClass tagClass
)
1700 : PASN_Sequence(tag
, tagClass
, 0, FALSE
, 0)
1702 m_fieldSize
.SetConstraints(PASN_Object::FixedConstraint
, 0, 511);
1703 m_weierstrassA
.SetConstraints(PASN_Object::FixedConstraint
, 0, 511);
1704 m_weierstrassB
.SetConstraints(PASN_Object::FixedConstraint
, 0, 511);
1708 #ifndef PASN_NOPRINTON
1709 void H235_ECKASDH_eckasdh2::PrintOn(ostream
& strm
) const
1711 int indent
= strm
.precision() + 2;
1713 strm
<< setw(indent
+13) << "public_key = " << setprecision(indent
) << m_public_key
<< '\n';
1714 strm
<< setw(indent
+12) << "fieldSize = " << setprecision(indent
) << m_fieldSize
<< '\n';
1715 strm
<< setw(indent
+7) << "base = " << setprecision(indent
) << m_base
<< '\n';
1716 strm
<< setw(indent
+15) << "weierstrassA = " << setprecision(indent
) << m_weierstrassA
<< '\n';
1717 strm
<< setw(indent
+15) << "weierstrassB = " << setprecision(indent
) << m_weierstrassB
<< '\n';
1718 strm
<< setw(indent
-1) << setprecision(indent
-2) << "}";
1723 PObject::Comparison
H235_ECKASDH_eckasdh2::Compare(const PObject
& obj
) const
1725 #ifndef PASN_LEANANDMEAN
1726 PAssert(PIsDescendant(&obj
, H235_ECKASDH_eckasdh2
), PInvalidCast
);
1728 const H235_ECKASDH_eckasdh2
& other
= (const H235_ECKASDH_eckasdh2
&)obj
;
1732 if ((result
= m_public_key
.Compare(other
.m_public_key
)) != EqualTo
)
1734 if ((result
= m_fieldSize
.Compare(other
.m_fieldSize
)) != EqualTo
)
1736 if ((result
= m_base
.Compare(other
.m_base
)) != EqualTo
)
1738 if ((result
= m_weierstrassA
.Compare(other
.m_weierstrassA
)) != EqualTo
)
1740 if ((result
= m_weierstrassB
.Compare(other
.m_weierstrassB
)) != EqualTo
)
1743 return PASN_Sequence::Compare(other
);
1747 PINDEX
H235_ECKASDH_eckasdh2::GetDataLength() const
1750 length
+= m_public_key
.GetObjectLength();
1751 length
+= m_fieldSize
.GetObjectLength();
1752 length
+= m_base
.GetObjectLength();
1753 length
+= m_weierstrassA
.GetObjectLength();
1754 length
+= m_weierstrassB
.GetObjectLength();
1759 BOOL
H235_ECKASDH_eckasdh2::Decode(PASN_Stream
& strm
)
1761 if (!PreambleDecode(strm
))
1764 if (!m_public_key
.Decode(strm
))
1766 if (!m_fieldSize
.Decode(strm
))
1768 if (!m_base
.Decode(strm
))
1770 if (!m_weierstrassA
.Decode(strm
))
1772 if (!m_weierstrassB
.Decode(strm
))
1775 return UnknownExtensionsDecode(strm
);
1779 void H235_ECKASDH_eckasdh2::Encode(PASN_Stream
& strm
) const
1781 PreambleEncode(strm
);
1783 m_public_key
.Encode(strm
);
1784 m_fieldSize
.Encode(strm
);
1785 m_base
.Encode(strm
);
1786 m_weierstrassA
.Encode(strm
);
1787 m_weierstrassB
.Encode(strm
);
1789 UnknownExtensionsEncode(strm
);
1793 PObject
* H235_ECKASDH_eckasdh2::Clone() const
1795 #ifndef PASN_LEANANDMEAN
1796 PAssert(IsClass(H235_ECKASDH_eckasdh2::Class()), PInvalidCast
);
1798 return new H235_ECKASDH_eckasdh2(*this);
1803 // ArrayOf_ProfileElement
1806 H235_ArrayOf_ProfileElement::H235_ArrayOf_ProfileElement(unsigned tag
, PASN_Object::TagClass tagClass
)
1807 : PASN_Array(tag
, tagClass
)
1812 PASN_Object
* H235_ArrayOf_ProfileElement::CreateObject() const
1814 return new H235_ProfileElement
;
1818 H235_ProfileElement
& H235_ArrayOf_ProfileElement::operator[](PINDEX i
) const
1820 return (H235_ProfileElement
&)array
[i
];
1824 PObject
* H235_ArrayOf_ProfileElement::Clone() const
1826 #ifndef PASN_LEANANDMEAN
1827 PAssert(IsClass(H235_ArrayOf_ProfileElement::Class()), PInvalidCast
);
1829 return new H235_ArrayOf_ProfileElement(*this);
1837 H235_ProfileElement::H235_ProfileElement(unsigned tag
, PASN_Object::TagClass tagClass
)
1838 : PASN_Sequence(tag
, tagClass
, 2, TRUE
, 0)
1840 m_elementID
.SetConstraints(PASN_Object::FixedConstraint
, 0, 255);
1844 #ifndef PASN_NOPRINTON
1845 void H235_ProfileElement::PrintOn(ostream
& strm
) const
1847 int indent
= strm
.precision() + 2;
1849 strm
<< setw(indent
+12) << "elementID = " << setprecision(indent
) << m_elementID
<< '\n';
1850 if (HasOptionalField(e_paramS
))
1851 strm
<< setw(indent
+9) << "paramS = " << setprecision(indent
) << m_paramS
<< '\n';
1852 if (HasOptionalField(e_element
))
1853 strm
<< setw(indent
+10) << "element = " << setprecision(indent
) << m_element
<< '\n';
1854 strm
<< setw(indent
-1) << setprecision(indent
-2) << "}";
1859 PObject::Comparison
H235_ProfileElement::Compare(const PObject
& obj
) const
1861 #ifndef PASN_LEANANDMEAN
1862 PAssert(PIsDescendant(&obj
, H235_ProfileElement
), PInvalidCast
);
1864 const H235_ProfileElement
& other
= (const H235_ProfileElement
&)obj
;
1868 if ((result
= m_elementID
.Compare(other
.m_elementID
)) != EqualTo
)
1870 if ((result
= m_paramS
.Compare(other
.m_paramS
)) != EqualTo
)
1872 if ((result
= m_element
.Compare(other
.m_element
)) != EqualTo
)
1875 return PASN_Sequence::Compare(other
);
1879 PINDEX
H235_ProfileElement::GetDataLength() const
1882 length
+= m_elementID
.GetObjectLength();
1883 if (HasOptionalField(e_paramS
))
1884 length
+= m_paramS
.GetObjectLength();
1885 if (HasOptionalField(e_element
))
1886 length
+= m_element
.GetObjectLength();
1891 BOOL
H235_ProfileElement::Decode(PASN_Stream
& strm
)
1893 if (!PreambleDecode(strm
))
1896 if (!m_elementID
.Decode(strm
))
1898 if (HasOptionalField(e_paramS
) && !m_paramS
.Decode(strm
))
1900 if (HasOptionalField(e_element
) && !m_element
.Decode(strm
))
1903 return UnknownExtensionsDecode(strm
);
1907 void H235_ProfileElement::Encode(PASN_Stream
& strm
) const
1909 PreambleEncode(strm
);
1911 m_elementID
.Encode(strm
);
1912 if (HasOptionalField(e_paramS
))
1913 m_paramS
.Encode(strm
);
1914 if (HasOptionalField(e_element
))
1915 m_element
.Encode(strm
);
1917 UnknownExtensionsEncode(strm
);
1921 PObject
* H235_ProfileElement::Clone() const
1923 #ifndef PASN_LEANANDMEAN
1924 PAssert(IsClass(H235_ProfileElement::Class()), PInvalidCast
);
1926 return new H235_ProfileElement(*this);
1931 // KeySignedMaterial
1934 H235_KeySignedMaterial::H235_KeySignedMaterial(unsigned tag
, PASN_Object::TagClass tagClass
)
1935 : PASN_Sequence(tag
, tagClass
, 2, FALSE
, 0)
1940 #ifndef PASN_NOPRINTON
1941 void H235_KeySignedMaterial::PrintOn(ostream
& strm
) const
1943 int indent
= strm
.precision() + 2;
1945 strm
<< setw(indent
+12) << "generalId = " << setprecision(indent
) << m_generalId
<< '\n';
1946 strm
<< setw(indent
+10) << "mrandom = " << setprecision(indent
) << m_mrandom
<< '\n';
1947 if (HasOptionalField(e_srandom
))
1948 strm
<< setw(indent
+10) << "srandom = " << setprecision(indent
) << m_srandom
<< '\n';
1949 if (HasOptionalField(e_timeStamp
))
1950 strm
<< setw(indent
+12) << "timeStamp = " << setprecision(indent
) << m_timeStamp
<< '\n';
1951 strm
<< setw(indent
+12) << "encrptval = " << setprecision(indent
) << m_encrptval
<< '\n';
1952 strm
<< setw(indent
-1) << setprecision(indent
-2) << "}";
1957 PObject::Comparison
H235_KeySignedMaterial::Compare(const PObject
& obj
) const
1959 #ifndef PASN_LEANANDMEAN
1960 PAssert(PIsDescendant(&obj
, H235_KeySignedMaterial
), PInvalidCast
);
1962 const H235_KeySignedMaterial
& other
= (const H235_KeySignedMaterial
&)obj
;
1966 if ((result
= m_generalId
.Compare(other
.m_generalId
)) != EqualTo
)
1968 if ((result
= m_mrandom
.Compare(other
.m_mrandom
)) != EqualTo
)
1970 if ((result
= m_srandom
.Compare(other
.m_srandom
)) != EqualTo
)
1972 if ((result
= m_timeStamp
.Compare(other
.m_timeStamp
)) != EqualTo
)
1974 if ((result
= m_encrptval
.Compare(other
.m_encrptval
)) != EqualTo
)
1977 return PASN_Sequence::Compare(other
);
1981 PINDEX
H235_KeySignedMaterial::GetDataLength() const
1984 length
+= m_generalId
.GetObjectLength();
1985 length
+= m_mrandom
.GetObjectLength();
1986 if (HasOptionalField(e_srandom
))
1987 length
+= m_srandom
.GetObjectLength();
1988 if (HasOptionalField(e_timeStamp
))
1989 length
+= m_timeStamp
.GetObjectLength();
1990 length
+= m_encrptval
.GetObjectLength();
1995 BOOL
H235_KeySignedMaterial::Decode(PASN_Stream
& strm
)
1997 if (!PreambleDecode(strm
))
2000 if (!m_generalId
.Decode(strm
))
2002 if (!m_mrandom
.Decode(strm
))
2004 if (HasOptionalField(e_srandom
) && !m_srandom
.Decode(strm
))
2006 if (HasOptionalField(e_timeStamp
) && !m_timeStamp
.Decode(strm
))
2008 if (!m_encrptval
.Decode(strm
))
2011 return UnknownExtensionsDecode(strm
);
2015 void H235_KeySignedMaterial::Encode(PASN_Stream
& strm
) const
2017 PreambleEncode(strm
);
2019 m_generalId
.Encode(strm
);
2020 m_mrandom
.Encode(strm
);
2021 if (HasOptionalField(e_srandom
))
2022 m_srandom
.Encode(strm
);
2023 if (HasOptionalField(e_timeStamp
))
2024 m_timeStamp
.Encode(strm
);
2025 m_encrptval
.Encode(strm
);
2027 UnknownExtensionsEncode(strm
);
2031 PObject
* H235_KeySignedMaterial::Clone() const
2033 #ifndef PASN_LEANANDMEAN
2034 PAssert(IsClass(H235_KeySignedMaterial::Class()), PInvalidCast
);
2036 return new H235_KeySignedMaterial(*this);
2041 // EncodedKeySignedMaterial
2044 H235_EncodedKeySignedMaterial::H235_EncodedKeySignedMaterial(unsigned tag
, PASN_Object::TagClass tagClass
)
2045 : PASN_OctetString(tag
, tagClass
)
2050 PObject
* H235_EncodedKeySignedMaterial::Clone() const
2052 #ifndef PASN_LEANANDMEAN
2053 PAssert(IsClass(H235_EncodedKeySignedMaterial::Class()), PInvalidCast
);
2055 return new H235_EncodedKeySignedMaterial(*this);
2060 // H235CertificateSignature
2063 H235_H235CertificateSignature::H235_H235CertificateSignature(unsigned tag
, PASN_Object::TagClass tagClass
)
2064 : PASN_Sequence(tag
, tagClass
, 1, TRUE
, 0)
2069 #ifndef PASN_NOPRINTON
2070 void H235_H235CertificateSignature::PrintOn(ostream
& strm
) const
2072 int indent
= strm
.precision() + 2;
2074 strm
<< setw(indent
+14) << "certificate = " << setprecision(indent
) << m_certificate
<< '\n';
2075 strm
<< setw(indent
+17) << "responseRandom = " << setprecision(indent
) << m_responseRandom
<< '\n';
2076 if (HasOptionalField(e_requesterRandom
))
2077 strm
<< setw(indent
+18) << "requesterRandom = " << setprecision(indent
) << m_requesterRandom
<< '\n';
2078 strm
<< setw(indent
+12) << "signature = " << setprecision(indent
) << m_signature
<< '\n';
2079 strm
<< setw(indent
-1) << setprecision(indent
-2) << "}";
2084 PObject::Comparison
H235_H235CertificateSignature::Compare(const PObject
& obj
) const
2086 #ifndef PASN_LEANANDMEAN
2087 PAssert(PIsDescendant(&obj
, H235_H235CertificateSignature
), PInvalidCast
);
2089 const H235_H235CertificateSignature
& other
= (const H235_H235CertificateSignature
&)obj
;
2093 if ((result
= m_certificate
.Compare(other
.m_certificate
)) != EqualTo
)
2095 if ((result
= m_responseRandom
.Compare(other
.m_responseRandom
)) != EqualTo
)
2097 if ((result
= m_requesterRandom
.Compare(other
.m_requesterRandom
)) != EqualTo
)
2099 if ((result
= m_signature
.Compare(other
.m_signature
)) != EqualTo
)
2102 return PASN_Sequence::Compare(other
);
2106 PINDEX
H235_H235CertificateSignature::GetDataLength() const
2109 length
+= m_certificate
.GetObjectLength();
2110 length
+= m_responseRandom
.GetObjectLength();
2111 if (HasOptionalField(e_requesterRandom
))
2112 length
+= m_requesterRandom
.GetObjectLength();
2113 length
+= m_signature
.GetObjectLength();
2118 BOOL
H235_H235CertificateSignature::Decode(PASN_Stream
& strm
)
2120 if (!PreambleDecode(strm
))
2123 if (!m_certificate
.Decode(strm
))
2125 if (!m_responseRandom
.Decode(strm
))
2127 if (HasOptionalField(e_requesterRandom
) && !m_requesterRandom
.Decode(strm
))
2129 if (!m_signature
.Decode(strm
))
2132 return UnknownExtensionsDecode(strm
);
2136 void H235_H235CertificateSignature::Encode(PASN_Stream
& strm
) const
2138 PreambleEncode(strm
);
2140 m_certificate
.Encode(strm
);
2141 m_responseRandom
.Encode(strm
);
2142 if (HasOptionalField(e_requesterRandom
))
2143 m_requesterRandom
.Encode(strm
);
2144 m_signature
.Encode(strm
);
2146 UnknownExtensionsEncode(strm
);
2150 PObject
* H235_H235CertificateSignature::Clone() const
2152 #ifndef PASN_LEANANDMEAN
2153 PAssert(IsClass(H235_H235CertificateSignature::Class()), PInvalidCast
);
2155 return new H235_H235CertificateSignature(*this);
2160 #ifndef PASN_NOPRINTON
2161 const static PASN_Names Names_H235_H235Key
[]={
2164 ,{"certProtectedKey",2}
2165 ,{"secureSharedSecret",3}
2172 H235_H235Key::H235_H235Key(unsigned tag
, PASN_Object::TagClass tagClass
)
2173 : PASN_Choice(tag
, tagClass
, 3, TRUE
2174 #ifndef PASN_NOPRINTON
2175 ,(const PASN_Names
*)Names_H235_H235Key
,4
2182 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
2183 H235_H235Key::operator H235_KeyMaterial
&() const
2185 H235_H235Key::operator H235_KeyMaterial
&()
2187 #ifndef PASN_LEANANDMEAN
2188 PAssert(PIsDescendant(PAssertNULL(choice
), H235_KeyMaterial
), PInvalidCast
);
2190 return *(H235_KeyMaterial
*)choice
;
2194 H235_H235Key::operator const H235_KeyMaterial
&() const
2197 #ifndef PASN_LEANANDMEAN
2198 PAssert(PIsDescendant(PAssertNULL(choice
), H235_KeyMaterial
), PInvalidCast
);
2200 return *(H235_KeyMaterial
*)choice
;
2204 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
2205 H235_H235Key::operator H235_ENCRYPTED
<H235_EncodedKeySyncMaterial
> &() const
2207 H235_H235Key::operator H235_ENCRYPTED
<H235_EncodedKeySyncMaterial
> &()
2209 #ifndef PASN_LEANANDMEAN
2210 PAssert(PIsDescendant(PAssertNULL(choice
), H235_ENCRYPTED
<H235_EncodedKeySyncMaterial
>), PInvalidCast
);
2212 return *(H235_ENCRYPTED
<H235_EncodedKeySyncMaterial
> *)choice
;
2216 H235_H235Key::operator const H235_ENCRYPTED
<H235_EncodedKeySyncMaterial
> &() const
2219 #ifndef PASN_LEANANDMEAN
2220 PAssert(PIsDescendant(PAssertNULL(choice
), H235_ENCRYPTED
<H235_EncodedKeySyncMaterial
>), PInvalidCast
);
2222 return *(H235_ENCRYPTED
<H235_EncodedKeySyncMaterial
> *)choice
;
2226 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
2227 H235_H235Key::operator H235_SIGNED
<H235_EncodedKeySignedMaterial
> &() const
2229 H235_H235Key::operator H235_SIGNED
<H235_EncodedKeySignedMaterial
> &()
2231 #ifndef PASN_LEANANDMEAN
2232 PAssert(PIsDescendant(PAssertNULL(choice
), H235_SIGNED
<H235_EncodedKeySignedMaterial
>), PInvalidCast
);
2234 return *(H235_SIGNED
<H235_EncodedKeySignedMaterial
> *)choice
;
2238 H235_H235Key::operator const H235_SIGNED
<H235_EncodedKeySignedMaterial
> &() const
2241 #ifndef PASN_LEANANDMEAN
2242 PAssert(PIsDescendant(PAssertNULL(choice
), H235_SIGNED
<H235_EncodedKeySignedMaterial
>), PInvalidCast
);
2244 return *(H235_SIGNED
<H235_EncodedKeySignedMaterial
> *)choice
;
2248 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
2249 H235_H235Key::operator H235_V3KeySyncMaterial
&() const
2251 H235_H235Key::operator H235_V3KeySyncMaterial
&()
2253 #ifndef PASN_LEANANDMEAN
2254 PAssert(PIsDescendant(PAssertNULL(choice
), H235_V3KeySyncMaterial
), PInvalidCast
);
2256 return *(H235_V3KeySyncMaterial
*)choice
;
2260 H235_H235Key::operator const H235_V3KeySyncMaterial
&() const
2263 #ifndef PASN_LEANANDMEAN
2264 PAssert(PIsDescendant(PAssertNULL(choice
), H235_V3KeySyncMaterial
), PInvalidCast
);
2266 return *(H235_V3KeySyncMaterial
*)choice
;
2270 BOOL
H235_H235Key::CreateObject()
2273 case e_secureChannel
:
2274 choice
= new H235_KeyMaterial();
2276 case e_sharedSecret
:
2277 choice
= new H235_ENCRYPTED
<H235_EncodedKeySyncMaterial
>();
2279 case e_certProtectedKey
:
2280 choice
= new H235_SIGNED
<H235_EncodedKeySignedMaterial
>();
2282 case e_secureSharedSecret
:
2283 choice
= new H235_V3KeySyncMaterial();
2292 PObject
* H235_H235Key::Clone() const
2294 #ifndef PASN_LEANANDMEAN
2295 PAssert(IsClass(H235_H235Key::Class()), PInvalidCast
);
2297 return new H235_H235Key(*this);
2305 H235_ClearToken::H235_ClearToken(unsigned tag
, PASN_Object::TagClass tagClass
)
2306 : PASN_Sequence(tag
, tagClass
, 8, TRUE
, 4)
2311 #ifndef PASN_NOPRINTON
2312 void H235_ClearToken::PrintOn(ostream
& strm
) const
2314 int indent
= strm
.precision() + 2;
2316 strm
<< setw(indent
+11) << "tokenOID = " << setprecision(indent
) << m_tokenOID
<< '\n';
2317 if (HasOptionalField(e_timeStamp
))
2318 strm
<< setw(indent
+12) << "timeStamp = " << setprecision(indent
) << m_timeStamp
<< '\n';
2319 if (HasOptionalField(e_password
))
2320 strm
<< setw(indent
+11) << "password = " << setprecision(indent
) << m_password
<< '\n';
2321 if (HasOptionalField(e_dhkey
))
2322 strm
<< setw(indent
+8) << "dhkey = " << setprecision(indent
) << m_dhkey
<< '\n';
2323 if (HasOptionalField(e_challenge
))
2324 strm
<< setw(indent
+12) << "challenge = " << setprecision(indent
) << m_challenge
<< '\n';
2325 if (HasOptionalField(e_random
))
2326 strm
<< setw(indent
+9) << "random = " << setprecision(indent
) << m_random
<< '\n';
2327 if (HasOptionalField(e_certificate
))
2328 strm
<< setw(indent
+14) << "certificate = " << setprecision(indent
) << m_certificate
<< '\n';
2329 if (HasOptionalField(e_generalID
))
2330 strm
<< setw(indent
+12) << "generalID = " << setprecision(indent
) << m_generalID
<< '\n';
2331 if (HasOptionalField(e_nonStandard
))
2332 strm
<< setw(indent
+14) << "nonStandard = " << setprecision(indent
) << m_nonStandard
<< '\n';
2333 if (HasOptionalField(e_eckasdhkey
))
2334 strm
<< setw(indent
+13) << "eckasdhkey = " << setprecision(indent
) << m_eckasdhkey
<< '\n';
2335 if (HasOptionalField(e_sendersID
))
2336 strm
<< setw(indent
+12) << "sendersID = " << setprecision(indent
) << m_sendersID
<< '\n';
2337 if (HasOptionalField(e_h235Key
))
2338 strm
<< setw(indent
+10) << "h235Key = " << setprecision(indent
) << m_h235Key
<< '\n';
2339 if (HasOptionalField(e_profileInfo
))
2340 strm
<< setw(indent
+14) << "profileInfo = " << setprecision(indent
) << m_profileInfo
<< '\n';
2341 strm
<< setw(indent
-1) << setprecision(indent
-2) << "}";
2346 PObject::Comparison
H235_ClearToken::Compare(const PObject
& obj
) const
2348 #ifndef PASN_LEANANDMEAN
2349 PAssert(PIsDescendant(&obj
, H235_ClearToken
), PInvalidCast
);
2351 const H235_ClearToken
& other
= (const H235_ClearToken
&)obj
;
2355 if ((result
= m_tokenOID
.Compare(other
.m_tokenOID
)) != EqualTo
)
2357 if ((result
= m_timeStamp
.Compare(other
.m_timeStamp
)) != EqualTo
)
2359 if ((result
= m_password
.Compare(other
.m_password
)) != EqualTo
)
2361 if ((result
= m_dhkey
.Compare(other
.m_dhkey
)) != EqualTo
)
2363 if ((result
= m_challenge
.Compare(other
.m_challenge
)) != EqualTo
)
2365 if ((result
= m_random
.Compare(other
.m_random
)) != EqualTo
)
2367 if ((result
= m_certificate
.Compare(other
.m_certificate
)) != EqualTo
)
2369 if ((result
= m_generalID
.Compare(other
.m_generalID
)) != EqualTo
)
2371 if ((result
= m_nonStandard
.Compare(other
.m_nonStandard
)) != EqualTo
)
2374 return PASN_Sequence::Compare(other
);
2378 PINDEX
H235_ClearToken::GetDataLength() const
2381 length
+= m_tokenOID
.GetObjectLength();
2382 if (HasOptionalField(e_timeStamp
))
2383 length
+= m_timeStamp
.GetObjectLength();
2384 if (HasOptionalField(e_password
))
2385 length
+= m_password
.GetObjectLength();
2386 if (HasOptionalField(e_dhkey
))
2387 length
+= m_dhkey
.GetObjectLength();
2388 if (HasOptionalField(e_challenge
))
2389 length
+= m_challenge
.GetObjectLength();
2390 if (HasOptionalField(e_random
))
2391 length
+= m_random
.GetObjectLength();
2392 if (HasOptionalField(e_certificate
))
2393 length
+= m_certificate
.GetObjectLength();
2394 if (HasOptionalField(e_generalID
))
2395 length
+= m_generalID
.GetObjectLength();
2396 if (HasOptionalField(e_nonStandard
))
2397 length
+= m_nonStandard
.GetObjectLength();
2402 BOOL
H235_ClearToken::Decode(PASN_Stream
& strm
)
2404 if (!PreambleDecode(strm
))
2407 if (!m_tokenOID
.Decode(strm
))
2409 if (HasOptionalField(e_timeStamp
) && !m_timeStamp
.Decode(strm
))
2411 if (HasOptionalField(e_password
) && !m_password
.Decode(strm
))
2413 if (HasOptionalField(e_dhkey
) && !m_dhkey
.Decode(strm
))
2415 if (HasOptionalField(e_challenge
) && !m_challenge
.Decode(strm
))
2417 if (HasOptionalField(e_random
) && !m_random
.Decode(strm
))
2419 if (HasOptionalField(e_certificate
) && !m_certificate
.Decode(strm
))
2421 if (HasOptionalField(e_generalID
) && !m_generalID
.Decode(strm
))
2423 if (HasOptionalField(e_nonStandard
) && !m_nonStandard
.Decode(strm
))
2425 if (!KnownExtensionDecode(strm
, e_eckasdhkey
, m_eckasdhkey
))
2427 if (!KnownExtensionDecode(strm
, e_sendersID
, m_sendersID
))
2429 if (!KnownExtensionDecode(strm
, e_h235Key
, m_h235Key
))
2431 if (!KnownExtensionDecode(strm
, e_profileInfo
, m_profileInfo
))
2434 return UnknownExtensionsDecode(strm
);
2438 void H235_ClearToken::Encode(PASN_Stream
& strm
) const
2440 PreambleEncode(strm
);
2442 m_tokenOID
.Encode(strm
);
2443 if (HasOptionalField(e_timeStamp
))
2444 m_timeStamp
.Encode(strm
);
2445 if (HasOptionalField(e_password
))
2446 m_password
.Encode(strm
);
2447 if (HasOptionalField(e_dhkey
))
2448 m_dhkey
.Encode(strm
);
2449 if (HasOptionalField(e_challenge
))
2450 m_challenge
.Encode(strm
);
2451 if (HasOptionalField(e_random
))
2452 m_random
.Encode(strm
);
2453 if (HasOptionalField(e_certificate
))
2454 m_certificate
.Encode(strm
);
2455 if (HasOptionalField(e_generalID
))
2456 m_generalID
.Encode(strm
);
2457 if (HasOptionalField(e_nonStandard
))
2458 m_nonStandard
.Encode(strm
);
2459 KnownExtensionEncode(strm
, e_eckasdhkey
, m_eckasdhkey
);
2460 KnownExtensionEncode(strm
, e_sendersID
, m_sendersID
);
2461 KnownExtensionEncode(strm
, e_h235Key
, m_h235Key
);
2462 KnownExtensionEncode(strm
, e_profileInfo
, m_profileInfo
);
2464 UnknownExtensionsEncode(strm
);
2468 PObject
* H235_ClearToken::Clone() const
2470 #ifndef PASN_LEANANDMEAN
2471 PAssert(IsClass(H235_ClearToken::Class()), PInvalidCast
);
2473 return new H235_ClearToken(*this);
2478 // EncodedGeneralToken
2481 H235_EncodedGeneralToken::H235_EncodedGeneralToken(unsigned tag
, PASN_Object::TagClass tagClass
)
2482 : PASN_OctetString(tag
, tagClass
)
2487 PObject
* H235_EncodedGeneralToken::Clone() const
2489 #ifndef PASN_LEANANDMEAN
2490 PAssert(IsClass(H235_EncodedGeneralToken::Class()), PInvalidCast
);
2492 return new H235_EncodedGeneralToken(*this);
2500 H235_PwdCertToken::H235_PwdCertToken(unsigned tag
, PASN_Object::TagClass tagClass
)
2501 : H235_ClearToken(tag
, tagClass
)
2503 IncludeOptionalField(e_generalID
);
2504 IncludeOptionalField(e_timeStamp
);
2508 PObject
* H235_PwdCertToken::Clone() const
2510 #ifndef PASN_LEANANDMEAN
2511 PAssert(IsClass(H235_PwdCertToken::Class()), PInvalidCast
);
2513 return new H235_PwdCertToken(*this);
2518 // EncodedPwdCertToken
2521 H235_EncodedPwdCertToken::H235_EncodedPwdCertToken(unsigned tag
, PASN_Object::TagClass tagClass
)
2522 : PASN_OctetString(tag
, tagClass
)
2527 PObject
* H235_EncodedPwdCertToken::Clone() const
2529 #ifndef PASN_LEANANDMEAN
2530 PAssert(IsClass(H235_EncodedPwdCertToken::Class()), PInvalidCast
);
2532 return new H235_EncodedPwdCertToken(*this);
2537 #ifndef PASN_NOPRINTON
2538 const static PASN_Names Names_H235_CryptoToken
[]={
2539 {"cryptoEncryptedToken",0}
2540 ,{"cryptoSignedToken",1}
2541 ,{"cryptoHashedToken",2}
2542 ,{"cryptoPwdEncr",3}
2549 H235_CryptoToken::H235_CryptoToken(unsigned tag
, PASN_Object::TagClass tagClass
)
2550 : PASN_Choice(tag
, tagClass
, 4, TRUE
2551 #ifndef PASN_NOPRINTON
2552 ,(const PASN_Names
*)Names_H235_CryptoToken
,4
2559 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
2560 H235_CryptoToken::operator H235_CryptoToken_cryptoEncryptedToken
&() const
2562 H235_CryptoToken::operator H235_CryptoToken_cryptoEncryptedToken
&()
2564 #ifndef PASN_LEANANDMEAN
2565 PAssert(PIsDescendant(PAssertNULL(choice
), H235_CryptoToken_cryptoEncryptedToken
), PInvalidCast
);
2567 return *(H235_CryptoToken_cryptoEncryptedToken
*)choice
;
2571 H235_CryptoToken::operator const H235_CryptoToken_cryptoEncryptedToken
&() const
2574 #ifndef PASN_LEANANDMEAN
2575 PAssert(PIsDescendant(PAssertNULL(choice
), H235_CryptoToken_cryptoEncryptedToken
), PInvalidCast
);
2577 return *(H235_CryptoToken_cryptoEncryptedToken
*)choice
;
2581 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
2582 H235_CryptoToken::operator H235_CryptoToken_cryptoSignedToken
&() const
2584 H235_CryptoToken::operator H235_CryptoToken_cryptoSignedToken
&()
2586 #ifndef PASN_LEANANDMEAN
2587 PAssert(PIsDescendant(PAssertNULL(choice
), H235_CryptoToken_cryptoSignedToken
), PInvalidCast
);
2589 return *(H235_CryptoToken_cryptoSignedToken
*)choice
;
2593 H235_CryptoToken::operator const H235_CryptoToken_cryptoSignedToken
&() const
2596 #ifndef PASN_LEANANDMEAN
2597 PAssert(PIsDescendant(PAssertNULL(choice
), H235_CryptoToken_cryptoSignedToken
), PInvalidCast
);
2599 return *(H235_CryptoToken_cryptoSignedToken
*)choice
;
2603 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
2604 H235_CryptoToken::operator H235_CryptoToken_cryptoHashedToken
&() const
2606 H235_CryptoToken::operator H235_CryptoToken_cryptoHashedToken
&()
2608 #ifndef PASN_LEANANDMEAN
2609 PAssert(PIsDescendant(PAssertNULL(choice
), H235_CryptoToken_cryptoHashedToken
), PInvalidCast
);
2611 return *(H235_CryptoToken_cryptoHashedToken
*)choice
;
2615 H235_CryptoToken::operator const H235_CryptoToken_cryptoHashedToken
&() const
2618 #ifndef PASN_LEANANDMEAN
2619 PAssert(PIsDescendant(PAssertNULL(choice
), H235_CryptoToken_cryptoHashedToken
), PInvalidCast
);
2621 return *(H235_CryptoToken_cryptoHashedToken
*)choice
;
2625 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
2626 H235_CryptoToken::operator H235_ENCRYPTED
<H235_EncodedPwdCertToken
> &() const
2628 H235_CryptoToken::operator H235_ENCRYPTED
<H235_EncodedPwdCertToken
> &()
2630 #ifndef PASN_LEANANDMEAN
2631 PAssert(PIsDescendant(PAssertNULL(choice
), H235_ENCRYPTED
<H235_EncodedPwdCertToken
>), PInvalidCast
);
2633 return *(H235_ENCRYPTED
<H235_EncodedPwdCertToken
> *)choice
;
2637 H235_CryptoToken::operator const H235_ENCRYPTED
<H235_EncodedPwdCertToken
> &() const
2640 #ifndef PASN_LEANANDMEAN
2641 PAssert(PIsDescendant(PAssertNULL(choice
), H235_ENCRYPTED
<H235_EncodedPwdCertToken
>), PInvalidCast
);
2643 return *(H235_ENCRYPTED
<H235_EncodedPwdCertToken
> *)choice
;
2647 BOOL
H235_CryptoToken::CreateObject()
2650 case e_cryptoEncryptedToken
:
2651 choice
= new H235_CryptoToken_cryptoEncryptedToken();
2653 case e_cryptoSignedToken
:
2654 choice
= new H235_CryptoToken_cryptoSignedToken();
2656 case e_cryptoHashedToken
:
2657 choice
= new H235_CryptoToken_cryptoHashedToken();
2659 case e_cryptoPwdEncr
:
2660 choice
= new H235_ENCRYPTED
<H235_EncodedPwdCertToken
>();
2669 PObject
* H235_CryptoToken::Clone() const
2671 #ifndef PASN_LEANANDMEAN
2672 PAssert(IsClass(H235_CryptoToken::Class()), PInvalidCast
);
2674 return new H235_CryptoToken(*this);
2679 // CryptoToken_cryptoEncryptedToken
2682 H235_CryptoToken_cryptoEncryptedToken::H235_CryptoToken_cryptoEncryptedToken(unsigned tag
, PASN_Object::TagClass tagClass
)
2683 : PASN_Sequence(tag
, tagClass
, 0, FALSE
, 0)
2688 #ifndef PASN_NOPRINTON
2689 void H235_CryptoToken_cryptoEncryptedToken::PrintOn(ostream
& strm
) const
2691 int indent
= strm
.precision() + 2;
2693 strm
<< setw(indent
+11) << "tokenOID = " << setprecision(indent
) << m_tokenOID
<< '\n';
2694 strm
<< setw(indent
+8) << "token = " << setprecision(indent
) << m_token
<< '\n';
2695 strm
<< setw(indent
-1) << setprecision(indent
-2) << "}";
2700 PObject::Comparison
H235_CryptoToken_cryptoEncryptedToken::Compare(const PObject
& obj
) const
2702 #ifndef PASN_LEANANDMEAN
2703 PAssert(PIsDescendant(&obj
, H235_CryptoToken_cryptoEncryptedToken
), PInvalidCast
);
2705 const H235_CryptoToken_cryptoEncryptedToken
& other
= (const H235_CryptoToken_cryptoEncryptedToken
&)obj
;
2709 if ((result
= m_tokenOID
.Compare(other
.m_tokenOID
)) != EqualTo
)
2711 if ((result
= m_token
.Compare(other
.m_token
)) != EqualTo
)
2714 return PASN_Sequence::Compare(other
);
2718 PINDEX
H235_CryptoToken_cryptoEncryptedToken::GetDataLength() const
2721 length
+= m_tokenOID
.GetObjectLength();
2722 length
+= m_token
.GetObjectLength();
2727 BOOL
H235_CryptoToken_cryptoEncryptedToken::Decode(PASN_Stream
& strm
)
2729 if (!PreambleDecode(strm
))
2732 if (!m_tokenOID
.Decode(strm
))
2734 if (!m_token
.Decode(strm
))
2737 return UnknownExtensionsDecode(strm
);
2741 void H235_CryptoToken_cryptoEncryptedToken::Encode(PASN_Stream
& strm
) const
2743 PreambleEncode(strm
);
2745 m_tokenOID
.Encode(strm
);
2746 m_token
.Encode(strm
);
2748 UnknownExtensionsEncode(strm
);
2752 PObject
* H235_CryptoToken_cryptoEncryptedToken::Clone() const
2754 #ifndef PASN_LEANANDMEAN
2755 PAssert(IsClass(H235_CryptoToken_cryptoEncryptedToken::Class()), PInvalidCast
);
2757 return new H235_CryptoToken_cryptoEncryptedToken(*this);
2762 // CryptoToken_cryptoSignedToken
2765 H235_CryptoToken_cryptoSignedToken::H235_CryptoToken_cryptoSignedToken(unsigned tag
, PASN_Object::TagClass tagClass
)
2766 : PASN_Sequence(tag
, tagClass
, 0, FALSE
, 0)
2771 #ifndef PASN_NOPRINTON
2772 void H235_CryptoToken_cryptoSignedToken::PrintOn(ostream
& strm
) const
2774 int indent
= strm
.precision() + 2;
2776 strm
<< setw(indent
+11) << "tokenOID = " << setprecision(indent
) << m_tokenOID
<< '\n';
2777 strm
<< setw(indent
+8) << "token = " << setprecision(indent
) << m_token
<< '\n';
2778 strm
<< setw(indent
-1) << setprecision(indent
-2) << "}";
2783 PObject::Comparison
H235_CryptoToken_cryptoSignedToken::Compare(const PObject
& obj
) const
2785 #ifndef PASN_LEANANDMEAN
2786 PAssert(PIsDescendant(&obj
, H235_CryptoToken_cryptoSignedToken
), PInvalidCast
);
2788 const H235_CryptoToken_cryptoSignedToken
& other
= (const H235_CryptoToken_cryptoSignedToken
&)obj
;
2792 if ((result
= m_tokenOID
.Compare(other
.m_tokenOID
)) != EqualTo
)
2794 if ((result
= m_token
.Compare(other
.m_token
)) != EqualTo
)
2797 return PASN_Sequence::Compare(other
);
2801 PINDEX
H235_CryptoToken_cryptoSignedToken::GetDataLength() const
2804 length
+= m_tokenOID
.GetObjectLength();
2805 length
+= m_token
.GetObjectLength();
2810 BOOL
H235_CryptoToken_cryptoSignedToken::Decode(PASN_Stream
& strm
)
2812 if (!PreambleDecode(strm
))
2815 if (!m_tokenOID
.Decode(strm
))
2817 if (!m_token
.Decode(strm
))
2820 return UnknownExtensionsDecode(strm
);
2824 void H235_CryptoToken_cryptoSignedToken::Encode(PASN_Stream
& strm
) const
2826 PreambleEncode(strm
);
2828 m_tokenOID
.Encode(strm
);
2829 m_token
.Encode(strm
);
2831 UnknownExtensionsEncode(strm
);
2835 PObject
* H235_CryptoToken_cryptoSignedToken::Clone() const
2837 #ifndef PASN_LEANANDMEAN
2838 PAssert(IsClass(H235_CryptoToken_cryptoSignedToken::Class()), PInvalidCast
);
2840 return new H235_CryptoToken_cryptoSignedToken(*this);
2845 // CryptoToken_cryptoHashedToken
2848 H235_CryptoToken_cryptoHashedToken::H235_CryptoToken_cryptoHashedToken(unsigned tag
, PASN_Object::TagClass tagClass
)
2849 : PASN_Sequence(tag
, tagClass
, 0, FALSE
, 0)
2854 #ifndef PASN_NOPRINTON
2855 void H235_CryptoToken_cryptoHashedToken::PrintOn(ostream
& strm
) const
2857 int indent
= strm
.precision() + 2;
2859 strm
<< setw(indent
+11) << "tokenOID = " << setprecision(indent
) << m_tokenOID
<< '\n';
2860 strm
<< setw(indent
+13) << "hashedVals = " << setprecision(indent
) << m_hashedVals
<< '\n';
2861 strm
<< setw(indent
+8) << "token = " << setprecision(indent
) << m_token
<< '\n';
2862 strm
<< setw(indent
-1) << setprecision(indent
-2) << "}";
2867 PObject::Comparison
H235_CryptoToken_cryptoHashedToken::Compare(const PObject
& obj
) const
2869 #ifndef PASN_LEANANDMEAN
2870 PAssert(PIsDescendant(&obj
, H235_CryptoToken_cryptoHashedToken
), PInvalidCast
);
2872 const H235_CryptoToken_cryptoHashedToken
& other
= (const H235_CryptoToken_cryptoHashedToken
&)obj
;
2876 if ((result
= m_tokenOID
.Compare(other
.m_tokenOID
)) != EqualTo
)
2878 if ((result
= m_hashedVals
.Compare(other
.m_hashedVals
)) != EqualTo
)
2880 if ((result
= m_token
.Compare(other
.m_token
)) != EqualTo
)
2883 return PASN_Sequence::Compare(other
);
2887 PINDEX
H235_CryptoToken_cryptoHashedToken::GetDataLength() const
2890 length
+= m_tokenOID
.GetObjectLength();
2891 length
+= m_hashedVals
.GetObjectLength();
2892 length
+= m_token
.GetObjectLength();
2897 BOOL
H235_CryptoToken_cryptoHashedToken::Decode(PASN_Stream
& strm
)
2899 if (!PreambleDecode(strm
))
2902 if (!m_tokenOID
.Decode(strm
))
2904 if (!m_hashedVals
.Decode(strm
))
2906 if (!m_token
.Decode(strm
))
2909 return UnknownExtensionsDecode(strm
);
2913 void H235_CryptoToken_cryptoHashedToken::Encode(PASN_Stream
& strm
) const
2915 PreambleEncode(strm
);
2917 m_tokenOID
.Encode(strm
);
2918 m_hashedVals
.Encode(strm
);
2919 m_token
.Encode(strm
);
2921 UnknownExtensionsEncode(strm
);
2925 PObject
* H235_CryptoToken_cryptoHashedToken::Clone() const
2927 #ifndef PASN_LEANANDMEAN
2928 PAssert(IsClass(H235_CryptoToken_cryptoHashedToken::Class()), PInvalidCast
);
2930 return new H235_CryptoToken_cryptoHashedToken(*this);
2934 #endif // if ! H323_DISABLE_H235