diff --git a/crypto/src/asn1/x509/NoticeReference.cs b/crypto/src/asn1/x509/NoticeReference.cs
index 86a51c5b7..f0d3a7b7f 100644
--- a/crypto/src/asn1/x509/NoticeReference.cs
+++ b/crypto/src/asn1/x509/NoticeReference.cs
@@ -1,138 +1,143 @@
using System;
using System.Collections;
+using Org.BouncyCastle.Math;
+
namespace Org.BouncyCastle.Asn1.X509
{
- /**
- * <code>NoticeReference</code> class, used in
- * <code>CertificatePolicies</code> X509 V3 extensions
- * (in policy qualifiers).
- *
- * <pre>
- * NoticeReference ::= Sequence {
- * organization DisplayText,
- * noticeNumbers Sequence OF Integer }
- *
- * </pre>
- *
- * @see PolicyQualifierInfo
- * @see PolicyInformation
- */
- public class NoticeReference
- : Asn1Encodable
- {
- internal readonly DisplayText organization;
- internal readonly Asn1Sequence noticeNumbers;
-
-#if !SILVERLIGHT
- [Obsolete]
- public NoticeReference(
- string orgName,
- ArrayList numbers)
- : this(orgName, (IList)numbers)
+ /**
+ * <code>NoticeReference</code> class, used in
+ * <code>CertificatePolicies</code> X509 V3 extensions
+ * (in policy qualifiers).
+ *
+ * <pre>
+ * NoticeReference ::= Sequence {
+ * organization DisplayText,
+ * noticeNumbers Sequence OF Integer }
+ *
+ * </pre>
+ *
+ * @see PolicyQualifierInfo
+ * @see PolicyInformation
+ */
+ public class NoticeReference
+ : Asn1Encodable
+ {
+ private readonly DisplayText organization;
+ private readonly Asn1Sequence noticeNumbers;
+
+ private static Asn1EncodableVector ConvertVector(IList numbers)
+ {
+ Asn1EncodableVector av = new Asn1EncodableVector();
+
+ foreach (object o in numbers)
+ {
+ DerInteger di;
+
+ if (o is BigInteger)
+ {
+ di = new DerInteger((BigInteger)o);
+ }
+ else if (o is int)
+ {
+ di = new DerInteger((int)o);
+ }
+ else
+ {
+ throw new ArgumentException();
+ }
+
+ av.Add(di);
+ }
+ return av;
+ }
+
+ /**
+ * Creates a new <code>NoticeReference</code> instance.
+ *
+ * @param organization a <code>String</code> value
+ * @param numbers a <code>Vector</code> value
+ */
+ public NoticeReference(string organization, IList numbers)
+ : this(organization, ConvertVector(numbers))
{
}
-#endif
/**
- * Creates a new <code>NoticeReference</code> instance.
- *
- * @param orgName a <code>string</code> value
- * @param numbers a <code>ArrayList</code> value
- */
- public NoticeReference(
- string orgName,
- IList numbers)
- {
- organization = new DisplayText(orgName);
-
- object o = numbers[0];
-
- Asn1EncodableVector av = new Asn1EncodableVector();
- if (o is int)
- {
- foreach (int nm in numbers)
- {
- av.Add(new DerInteger(nm));
- }
- }
-
- noticeNumbers = new DerSequence(av);
- }
-
- /**
- * Creates a new <code>NoticeReference</code> instance.
- *
- * @param orgName a <code>string</code> value
- * @param numbers an <code>Asn1Sequence</code> value
- */
- public NoticeReference(
- string orgName,
- Asn1Sequence numbers)
- {
- organization = new DisplayText(orgName);
- noticeNumbers = numbers;
- }
-
- /**
- * Creates a new <code>NoticeReference</code> instance.
- *
- * @param displayTextType an <code>int</code> value
- * @param orgName a <code>string</code> value
- * @param numbers an <code>Asn1Sequence</code> value
- */
- public NoticeReference(
- int displayTextType,
- string orgName,
- Asn1Sequence numbers)
- {
- organization = new DisplayText(displayTextType, orgName);
- noticeNumbers = numbers;
- }
-
- /**
- * Creates a new <code>NoticeReference</code> instance.
- * <p>Useful for reconstructing a <code>NoticeReference</code>
- * instance from its encodable/encoded form.</p>
- *
- * @param as an <code>Asn1Sequence</code> value obtained from either
- * calling @{link ToAsn1Object()} for a <code>NoticeReference</code>
- * instance or from parsing it from a Der-encoded stream.
- */
- private NoticeReference(
- Asn1Sequence seq)
- {
- if (seq.Count != 2)
- throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
-
- organization = DisplayText.GetInstance(seq[0]);
- noticeNumbers = Asn1Sequence.GetInstance(seq[1]);
- }
-
- public static NoticeReference GetInstance(
- object obj)
- {
- if (obj is NoticeReference)
- {
- return (NoticeReference) obj;
- }
-
- if (obj is Asn1Sequence)
- {
- return new NoticeReference((Asn1Sequence) obj);
- }
-
- throw new ArgumentException("unknown object in GetInstance: " + obj.GetType().FullName, "obj");
- }
-
- /**
- * Describe <code>ToAsn1Object</code> method here.
- *
- * @return a <code>Asn1Object</code> value
- */
- public override Asn1Object ToAsn1Object()
- {
- return new DerSequence(organization, noticeNumbers);
- }
- }
+ * Creates a new <code>NoticeReference</code> instance.
+ *
+ * @param organization a <code>String</code> value
+ * @param noticeNumbers an <code>ASN1EncodableVector</code> value
+ */
+ public NoticeReference(string organization, Asn1EncodableVector noticeNumbers)
+ : this(new DisplayText(organization), noticeNumbers)
+ {
+ }
+
+ /**
+ * Creates a new <code>NoticeReference</code> instance.
+ *
+ * @param organization displayText
+ * @param noticeNumbers an <code>ASN1EncodableVector</code> value
+ */
+ public NoticeReference(DisplayText organization, Asn1EncodableVector noticeNumbers)
+ {
+ this.organization = organization;
+ this.noticeNumbers = new DerSequence(noticeNumbers);
+ }
+
+ /**
+ * Creates a new <code>NoticeReference</code> instance.
+ * <p>Useful for reconstructing a <code>NoticeReference</code>
+ * instance from its encodable/encoded form.</p>
+ *
+ * @param as an <code>Asn1Sequence</code> value obtained from either
+ * calling @{link ToAsn1Object()} for a <code>NoticeReference</code>
+ * instance or from parsing it from a Der-encoded stream.
+ */
+ private NoticeReference(Asn1Sequence seq)
+ {
+ if (seq.Count != 2)
+ throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
+
+ organization = DisplayText.GetInstance(seq[0]);
+ noticeNumbers = Asn1Sequence.GetInstance(seq[1]);
+ }
+
+ public static NoticeReference GetInstance(object obj)
+ {
+ if (obj is NoticeReference)
+ return (NoticeReference)obj;
+ if (obj == null)
+ return null;
+ return new NoticeReference(Asn1Sequence.GetInstance(obj));
+ }
+
+ public virtual DisplayText Organization
+ {
+ get { return organization; }
+ }
+
+ public virtual DerInteger[] GetNoticeNumbers()
+ {
+ DerInteger[] tmp = new DerInteger[noticeNumbers.Count];
+
+ for (int i = 0; i != noticeNumbers.Count; ++i)
+ {
+ tmp[i] = DerInteger.GetInstance(noticeNumbers[i]);
+ }
+
+ return tmp;
+ }
+
+ /**
+ * Describe <code>ToAsn1Object</code> method here.
+ *
+ * @return a <code>Asn1Object</code> value
+ */
+ public override Asn1Object ToAsn1Object()
+ {
+ return new DerSequence(organization, noticeNumbers);
+ }
+ }
}
diff --git a/crypto/src/asn1/x509/PolicyQualifierInfo.cs b/crypto/src/asn1/x509/PolicyQualifierInfo.cs
index f2c617ff6..3cf6d7e10 100644
--- a/crypto/src/asn1/x509/PolicyQualifierInfo.cs
+++ b/crypto/src/asn1/x509/PolicyQualifierInfo.cs
@@ -2,81 +2,75 @@ using System;
namespace Org.BouncyCastle.Asn1.X509
{
- /**
- * Policy qualifiers, used in the X509V3 CertificatePolicies
- * extension.
- *
- * <pre>
- * PolicyQualifierInfo ::= Sequence {
- * policyQualifierId PolicyQualifierId,
- * qualifier ANY DEFINED BY policyQualifierId }
- * </pre>
- */
- public class PolicyQualifierInfo
- : Asn1Encodable
- {
- internal readonly DerObjectIdentifier policyQualifierId;
- internal readonly Asn1Encodable qualifier;
+ /**
+ * Policy qualifiers, used in the X509V3 CertificatePolicies
+ * extension.
+ *
+ * <pre>
+ * PolicyQualifierInfo ::= Sequence {
+ * policyQualifierId PolicyQualifierId,
+ * qualifier ANY DEFINED BY policyQualifierId }
+ * </pre>
+ */
+ public class PolicyQualifierInfo
+ : Asn1Encodable
+ {
+ private readonly DerObjectIdentifier policyQualifierId;
+ private readonly Asn1Encodable qualifier;
- /**
- * Creates a new <code>PolicyQualifierInfo</code> instance.
- *
- * @param policyQualifierId a <code>PolicyQualifierId</code> value
- * @param qualifier the qualifier, defined by the above field.
- */
- public PolicyQualifierInfo(
- DerObjectIdentifier policyQualifierId,
- Asn1Encodable qualifier)
- {
- this.policyQualifierId = policyQualifierId;
- this.qualifier = qualifier;
- }
-
- /**
- * Creates a new <code>PolicyQualifierInfo</code> containing a
- * cPSuri qualifier.
- *
- * @param cps the CPS (certification practice statement) uri as a
- * <code>string</code>.
- */
- public PolicyQualifierInfo(
- string cps)
- {
- policyQualifierId = PolicyQualifierID.IdQtCps;
- qualifier = new DerIA5String(cps);
- }
-
- /**
- * Creates a new <code>PolicyQualifierInfo</code> instance.
- *
- * @param as <code>PolicyQualifierInfo</code> X509 structure
- * encoded as an Asn1Sequence.
- */
- private PolicyQualifierInfo(
- Asn1Sequence seq)
- {
- if (seq.Count != 2)
- throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
+ /**
+ * Creates a new <code>PolicyQualifierInfo</code> instance.
+ *
+ * @param policyQualifierId a <code>PolicyQualifierId</code> value
+ * @param qualifier the qualifier, defined by the above field.
+ */
+ public PolicyQualifierInfo(
+ DerObjectIdentifier policyQualifierId,
+ Asn1Encodable qualifier)
+ {
+ this.policyQualifierId = policyQualifierId;
+ this.qualifier = qualifier;
+ }
- policyQualifierId = DerObjectIdentifier.GetInstance(seq[0]);
- qualifier = seq[1];
- }
+ /**
+ * Creates a new <code>PolicyQualifierInfo</code> containing a
+ * cPSuri qualifier.
+ *
+ * @param cps the CPS (certification practice statement) uri as a
+ * <code>string</code>.
+ */
+ public PolicyQualifierInfo(
+ string cps)
+ {
+ policyQualifierId = PolicyQualifierID.IdQtCps;
+ qualifier = new DerIA5String(cps);
+ }
- public static PolicyQualifierInfo GetInstance(
- object obj)
- {
- if (obj is PolicyQualifierInfo)
- {
- return (PolicyQualifierInfo) obj;
- }
+ /**
+ * Creates a new <code>PolicyQualifierInfo</code> instance.
+ *
+ * @param as <code>PolicyQualifierInfo</code> X509 structure
+ * encoded as an Asn1Sequence.
+ */
+ private PolicyQualifierInfo(
+ Asn1Sequence seq)
+ {
+ if (seq.Count != 2)
+ throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
- if (obj is Asn1Sequence)
- {
- return new PolicyQualifierInfo((Asn1Sequence) obj);
- }
+ policyQualifierId = DerObjectIdentifier.GetInstance(seq[0]);
+ qualifier = seq[1];
+ }
- throw new ArgumentException("unknown object in GetInstance: " + obj.GetType().FullName, "obj");
- }
+ public static PolicyQualifierInfo GetInstance(
+ object obj)
+ {
+ if (obj is PolicyQualifierInfo)
+ return (PolicyQualifierInfo)obj;
+ if (obj == null)
+ return null;
+ return new PolicyQualifierInfo(Asn1Sequence.GetInstance(obj));
+ }
public virtual DerObjectIdentifier PolicyQualifierId
{
@@ -89,13 +83,13 @@ namespace Org.BouncyCastle.Asn1.X509
}
/**
- * Returns a Der-encodable representation of this instance.
- *
- * @return a <code>Asn1Object</code> value
- */
- public override Asn1Object ToAsn1Object()
- {
- return new DerSequence(policyQualifierId, qualifier);
- }
- }
+ * Returns a Der-encodable representation of this instance.
+ *
+ * @return a <code>Asn1Object</code> value
+ */
+ public override Asn1Object ToAsn1Object()
+ {
+ return new DerSequence(policyQualifierId, qualifier);
+ }
+ }
}
diff --git a/crypto/src/asn1/x509/UserNotice.cs b/crypto/src/asn1/x509/UserNotice.cs
index 2878a180f..5938f7c49 100644
--- a/crypto/src/asn1/x509/UserNotice.cs
+++ b/crypto/src/asn1/x509/UserNotice.cs
@@ -19,10 +19,10 @@ namespace Org.BouncyCastle.Asn1.X509
public class UserNotice
: Asn1Encodable
{
- internal NoticeReference noticeRef;
- internal DisplayText explicitText;
+ private readonly NoticeReference noticeRef;
+ private readonly DisplayText explicitText;
- /**
+ /**
* Creates a new <code>UserNotice</code> instance.
*
* @param noticeRef a <code>NoticeReference</code> value
@@ -36,7 +36,7 @@ namespace Org.BouncyCastle.Asn1.X509
this.explicitText = explicitText;
}
- /**
+ /**
* Creates a new <code>UserNotice</code> instance.
*
* @param noticeRef a <code>NoticeReference</code> value
@@ -45,60 +45,78 @@ namespace Org.BouncyCastle.Asn1.X509
public UserNotice(
NoticeReference noticeRef,
string str)
+ : this(noticeRef, new DisplayText(str))
{
- this.noticeRef = noticeRef;
- this.explicitText = new DisplayText(str);
}
- /**
- * Creates a new <code>UserNotice</code> instance.
- * <p>Useful from reconstructing a <code>UserNotice</code> instance
- * from its encodable/encoded form.
- *
- * @param as an <code>ASN1Sequence</code> value obtained from either
- * calling @{link toASN1Object()} for a <code>UserNotice</code>
- * instance or from parsing it from a DER-encoded stream.</p>
- */
- public UserNotice(
- Asn1Sequence seq)
- {
- if (seq.Count == 2)
- {
- noticeRef = NoticeReference.GetInstance(seq[0]);
- explicitText = DisplayText.GetInstance(seq[1]);
- }
- else if (seq.Count == 1)
- {
- if (seq[0].ToAsn1Object() is Asn1Sequence)
- {
- noticeRef = NoticeReference.GetInstance(seq[0]);
- }
- else
- {
- explicitText = DisplayText.GetInstance(seq[0]);
- }
- }
- else
- {
- throw new ArgumentException("Bad sequence size: " + seq.Count);
- }
+ /**
+ * Creates a new <code>UserNotice</code> instance.
+ * <p>Useful from reconstructing a <code>UserNotice</code> instance
+ * from its encodable/encoded form.
+ *
+ * @param as an <code>ASN1Sequence</code> value obtained from either
+ * calling @{link toASN1Object()} for a <code>UserNotice</code>
+ * instance or from parsing it from a DER-encoded stream.</p>
+ */
+ public UserNotice(
+ Asn1Sequence seq)
+ {
+ if (seq.Count == 2)
+ {
+ noticeRef = NoticeReference.GetInstance(seq[0]);
+ explicitText = DisplayText.GetInstance(seq[1]);
+ }
+ else if (seq.Count == 1)
+ {
+ if (seq[0].ToAsn1Object() is Asn1Sequence)
+ {
+ noticeRef = NoticeReference.GetInstance(seq[0]);
+ }
+ else
+ {
+ explicitText = DisplayText.GetInstance(seq[0]);
+ }
+ }
+ else
+ {
+ throw new ArgumentException("Bad sequence size: " + seq.Count);
+ }
+ }
+
+ public static UserNotice GetInstance(object obj)
+ {
+ if (obj is UserNotice)
+ return (UserNotice)obj;
+ if (obj == null)
+ return null;
+ return new UserNotice(Asn1Sequence.GetInstance(obj));
+ }
+
+ public virtual NoticeReference NoticeRef
+ {
+ get { return noticeRef; }
+ }
+
+ public virtual DisplayText ExplicitText
+ {
+ get { return explicitText; }
}
- public override Asn1Object ToAsn1Object()
+ public override Asn1Object ToAsn1Object()
{
Asn1EncodableVector av = new Asn1EncodableVector();
- if (noticeRef != null)
+ if (noticeRef != null)
{
av.Add(noticeRef);
}
- if (explicitText != null)
+ if (explicitText != null)
{
av.Add(explicitText);
}
- return new DerSequence(av);
+ return new DerSequence(av);
}
}
}
|