aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/ber_dec.h4
-rw-r--r--src/ber_dec.cpp8
2 files changed, 7 insertions, 5 deletions
diff --git a/include/ber_dec.h b/include/ber_dec.h
index 1ea880595..9fec75832 100644
--- a/include/ber_dec.h
+++ b/include/ber_dec.h
@@ -1,6 +1,6 @@
/*************************************************
* BER Decoder Header File *
-* (C) 1999-2007 Jack Lloyd *
+* (C) 1999-2008 Jack Lloyd *
*************************************************/
#ifndef BOTAN_BER_DECODER_H__
@@ -25,7 +25,7 @@ class BOTAN_DLL BER_Decoder
BER_Decoder& verify_end();
BER_Decoder& discard_remaining();
- BER_Decoder start_cons(ASN1_Tag);
+ BER_Decoder start_cons(ASN1_Tag, ASN1_Tag = UNIVERSAL);
BER_Decoder& end_cons();
BER_Decoder& raw_bytes(MemoryRegion<byte>&);
diff --git a/src/ber_dec.cpp b/src/ber_dec.cpp
index 83414ea01..c725a5af9 100644
--- a/src/ber_dec.cpp
+++ b/src/ber_dec.cpp
@@ -1,6 +1,6 @@
/*************************************************
* BER Decoder Source File *
-* (C) 1999-2007 Jack Lloyd *
+* (C) 1999-2008 Jack Lloyd *
*************************************************/
#include <botan/ber_dec.h>
@@ -226,10 +226,12 @@ void BER_Decoder::push_back(const BER_Object& obj)
/*************************************************
* Begin decoding a CONSTRUCTED type *
*************************************************/
-BER_Decoder BER_Decoder::start_cons(ASN1_Tag type_tag)
+BER_Decoder BER_Decoder::start_cons(ASN1_Tag type_tag,
+ ASN1_Tag class_tag)
{
BER_Object obj = get_next_object();
- obj.assert_is_a(type_tag, CONSTRUCTED);
+ obj.assert_is_a(type_tag, ASN1_Tag(class_tag | CONSTRUCTED));
+
BER_Decoder result(obj.value, obj.value.size());
result.parent = this;
return result;