diff --git a/crypto/src/asn1/cms/Evidence.cs b/crypto/src/asn1/cms/Evidence.cs
index 8374aed55..b12f090a9 100644
--- a/crypto/src/asn1/cms/Evidence.cs
+++ b/crypto/src/asn1/cms/Evidence.cs
@@ -8,6 +8,7 @@ namespace Org.BouncyCastle.Asn1.Cms
: Asn1Encodable, IAsn1Choice
{
private TimeStampTokenEvidence tstEvidence;
+ private Asn1Sequence otherEvidence;
public Evidence(TimeStampTokenEvidence tstEvidence)
{
@@ -16,11 +17,23 @@ namespace Org.BouncyCastle.Asn1.Cms
private Evidence(Asn1TaggedObject tagged)
{
- if (tagged.TagNo == 0)
- {
- this.tstEvidence = TimeStampTokenEvidence.GetInstance(tagged, false);
- }
- }
+ if (tagged.TagNo == 0)
+ {
+ this.tstEvidence = TimeStampTokenEvidence.GetInstance(tagged, false);
+ }
+ //else if (tagged.TagNo == 1)
+ //{
+ // this.ersEvidence = EvidenceRecord.GetInstance(tagged, false);
+ //}
+ else if (tagged.TagNo == 2)
+ {
+ this.otherEvidence = Asn1Sequence.GetInstance(tagged, false);
+ }
+ else
+ {
+ throw new ArgumentException("unknown tag in Evidence", "tagged");
+ }
+ }
public static Evidence GetInstance(object obj)
{
@@ -33,17 +46,28 @@ namespace Org.BouncyCastle.Asn1.Cms
throw new ArgumentException("Unknown object in GetInstance: " + Platform.GetTypeName(obj), "obj");
}
+ public static Evidence GetInstance(Asn1TaggedObject obj, bool isExplicit)
+ {
+ return GetInstance(obj.GetObject()); // must be explicitly tagged
+ }
+
public virtual TimeStampTokenEvidence TstEvidence
{
get { return tstEvidence; }
}
+ //public EvidenceRecord ErsEvidence
+ //{
+ // get { return ersEvidence; }
+ //}
+
public override Asn1Object ToAsn1Object()
{
if (tstEvidence != null)
return new DerTaggedObject(false, 0, tstEvidence);
-
- return null;
+ //if (ersEvidence != null)
+ // return new DerTaggedObject(false, 1, ersEvidence);
+ return new DerTaggedObject(false, 2, otherEvidence);
}
}
}
|