Initial Commit
This commit is contained in:
85
iTechSharp/srcbc/asn1/esf/CertificateValues.cs
Normal file
85
iTechSharp/srcbc/asn1/esf/CertificateValues.cs
Normal file
@@ -0,0 +1,85 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
|
||||
using Org.BouncyCastle.Asn1.X509;
|
||||
using Org.BouncyCastle.Utilities.Collections;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
/// <remarks>
|
||||
/// RFC 3126: 4.3.1 Certificate Values Attribute Definition
|
||||
/// <code>
|
||||
/// CertificateValues ::= SEQUENCE OF Certificate
|
||||
/// </code>
|
||||
/// </remarks>
|
||||
public class CertificateValues
|
||||
: Asn1Encodable
|
||||
{
|
||||
private readonly Asn1Sequence certificates;
|
||||
|
||||
public static CertificateValues GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is CertificateValues)
|
||||
return (CertificateValues) obj;
|
||||
|
||||
if (obj is Asn1Sequence)
|
||||
return new CertificateValues((Asn1Sequence) obj);
|
||||
|
||||
throw new ArgumentException(
|
||||
"Unknown object in 'CertificateValues' factory: "
|
||||
+ obj.GetType().Name,
|
||||
"obj");
|
||||
}
|
||||
|
||||
private CertificateValues(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
if (seq == null)
|
||||
throw new ArgumentNullException("seq");
|
||||
|
||||
foreach (Asn1Encodable ae in seq)
|
||||
{
|
||||
X509CertificateStructure.GetInstance(ae.ToAsn1Object());
|
||||
}
|
||||
|
||||
this.certificates = seq;
|
||||
}
|
||||
|
||||
public CertificateValues(
|
||||
params X509CertificateStructure[] certificates)
|
||||
{
|
||||
if (certificates == null)
|
||||
throw new ArgumentNullException("certificates");
|
||||
|
||||
this.certificates = new DerSequence(certificates);
|
||||
}
|
||||
|
||||
public CertificateValues(
|
||||
IEnumerable certificates)
|
||||
{
|
||||
if (certificates == null)
|
||||
throw new ArgumentNullException("certificates");
|
||||
if (!CollectionUtilities.CheckElementsAreOfType(certificates, typeof(X509CertificateStructure)))
|
||||
throw new ArgumentException("Must contain only 'X509CertificateStructure' objects", "certificates");
|
||||
|
||||
this.certificates = new DerSequence(
|
||||
Asn1EncodableVector.FromEnumerable(certificates));
|
||||
}
|
||||
|
||||
public X509CertificateStructure[] GetCertificates()
|
||||
{
|
||||
X509CertificateStructure[] result = new X509CertificateStructure[certificates.Count];
|
||||
for (int i = 0; i < certificates.Count; ++i)
|
||||
{
|
||||
result[i] = X509CertificateStructure.GetInstance(certificates[i]);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
return certificates;
|
||||
}
|
||||
}
|
||||
}
|
17
iTechSharp/srcbc/asn1/esf/CommitmentTypeIdentifier.cs
Normal file
17
iTechSharp/srcbc/asn1/esf/CommitmentTypeIdentifier.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using System;
|
||||
|
||||
using Org.BouncyCastle.Asn1;
|
||||
using Org.BouncyCastle.Asn1.Pkcs;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
public abstract class CommitmentTypeIdentifier
|
||||
{
|
||||
public static readonly DerObjectIdentifier ProofOfOrigin = PkcsObjectIdentifiers.IdCtiEtsProofOfOrigin;
|
||||
public static readonly DerObjectIdentifier ProofOfReceipt = PkcsObjectIdentifiers.IdCtiEtsProofOfReceipt;
|
||||
public static readonly DerObjectIdentifier ProofOfDelivery = PkcsObjectIdentifiers.IdCtiEtsProofOfDelivery;
|
||||
public static readonly DerObjectIdentifier ProofOfSender = PkcsObjectIdentifiers.IdCtiEtsProofOfSender;
|
||||
public static readonly DerObjectIdentifier ProofOfApproval = PkcsObjectIdentifiers.IdCtiEtsProofOfApproval;
|
||||
public static readonly DerObjectIdentifier ProofOfCreation = PkcsObjectIdentifiers.IdCtiEtsProofOfCreation;
|
||||
}
|
||||
}
|
95
iTechSharp/srcbc/asn1/esf/CommitmentTypeIndication.cs
Normal file
95
iTechSharp/srcbc/asn1/esf/CommitmentTypeIndication.cs
Normal file
@@ -0,0 +1,95 @@
|
||||
using System;
|
||||
|
||||
using Org.BouncyCastle.Asn1;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
public class CommitmentTypeIndication
|
||||
: Asn1Encodable
|
||||
{
|
||||
private readonly DerObjectIdentifier commitmentTypeId;
|
||||
private readonly Asn1Sequence commitmentTypeQualifier;
|
||||
|
||||
public static CommitmentTypeIndication GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is CommitmentTypeIndication)
|
||||
return (CommitmentTypeIndication) obj;
|
||||
|
||||
if (obj is Asn1Sequence)
|
||||
return new CommitmentTypeIndication((Asn1Sequence) obj);
|
||||
|
||||
throw new ArgumentException(
|
||||
"Unknown object in 'CommitmentTypeIndication' factory: "
|
||||
+ obj.GetType().Name,
|
||||
"obj");
|
||||
}
|
||||
|
||||
public CommitmentTypeIndication(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
if (seq == null)
|
||||
throw new ArgumentNullException("seq");
|
||||
if (seq.Count < 1 || seq.Count > 2)
|
||||
throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
|
||||
|
||||
this.commitmentTypeId = (DerObjectIdentifier) seq[0].ToAsn1Object();
|
||||
|
||||
if (seq.Count > 1)
|
||||
{
|
||||
this.commitmentTypeQualifier = (Asn1Sequence) seq[1].ToAsn1Object();
|
||||
}
|
||||
}
|
||||
|
||||
public CommitmentTypeIndication(
|
||||
DerObjectIdentifier commitmentTypeId)
|
||||
: this(commitmentTypeId, null)
|
||||
{
|
||||
}
|
||||
|
||||
public CommitmentTypeIndication(
|
||||
DerObjectIdentifier commitmentTypeId,
|
||||
Asn1Sequence commitmentTypeQualifier)
|
||||
{
|
||||
if (commitmentTypeId == null)
|
||||
throw new ArgumentNullException("commitmentTypeId");
|
||||
|
||||
this.commitmentTypeId = commitmentTypeId;
|
||||
|
||||
if (commitmentTypeQualifier != null)
|
||||
{
|
||||
this.commitmentTypeQualifier = commitmentTypeQualifier;
|
||||
}
|
||||
}
|
||||
|
||||
public DerObjectIdentifier CommitmentTypeID
|
||||
{
|
||||
get { return commitmentTypeId; }
|
||||
}
|
||||
|
||||
public Asn1Sequence CommitmentTypeQualifier
|
||||
{
|
||||
get { return commitmentTypeQualifier; }
|
||||
}
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* CommitmentTypeIndication ::= SEQUENCE {
|
||||
* commitmentTypeId CommitmentTypeIdentifier,
|
||||
* commitmentTypeQualifier SEQUENCE SIZE (1..MAX) OF
|
||||
* CommitmentTypeQualifier OPTIONAL }
|
||||
* </pre>
|
||||
*/
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
Asn1EncodableVector v = new Asn1EncodableVector(commitmentTypeId);
|
||||
|
||||
if (commitmentTypeQualifier != null)
|
||||
{
|
||||
v.Add(commitmentTypeQualifier);
|
||||
}
|
||||
|
||||
return new DerSequence(v);
|
||||
}
|
||||
}
|
||||
}
|
119
iTechSharp/srcbc/asn1/esf/CommitmentTypeQualifier.cs
Normal file
119
iTechSharp/srcbc/asn1/esf/CommitmentTypeQualifier.cs
Normal file
@@ -0,0 +1,119 @@
|
||||
using System;
|
||||
|
||||
using Org.BouncyCastle.Asn1;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
/**
|
||||
* Commitment type qualifiers, used in the Commitment-Type-Indication attribute (RFC3126).
|
||||
*
|
||||
* <pre>
|
||||
* CommitmentTypeQualifier ::= SEQUENCE {
|
||||
* commitmentTypeIdentifier CommitmentTypeIdentifier,
|
||||
* qualifier ANY DEFINED BY commitmentTypeIdentifier OPTIONAL }
|
||||
* </pre>
|
||||
*/
|
||||
public class CommitmentTypeQualifier
|
||||
: Asn1Encodable
|
||||
{
|
||||
private readonly DerObjectIdentifier commitmentTypeIdentifier;
|
||||
private readonly Asn1Object qualifier;
|
||||
|
||||
/**
|
||||
* Creates a new <code>CommitmentTypeQualifier</code> instance.
|
||||
*
|
||||
* @param commitmentTypeIdentifier a <code>CommitmentTypeIdentifier</code> value
|
||||
*/
|
||||
public CommitmentTypeQualifier(
|
||||
DerObjectIdentifier commitmentTypeIdentifier)
|
||||
: this(commitmentTypeIdentifier, null)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new <code>CommitmentTypeQualifier</code> instance.
|
||||
*
|
||||
* @param commitmentTypeIdentifier a <code>CommitmentTypeIdentifier</code> value
|
||||
* @param qualifier the qualifier, defined by the above field.
|
||||
*/
|
||||
public CommitmentTypeQualifier(
|
||||
DerObjectIdentifier commitmentTypeIdentifier,
|
||||
Asn1Encodable qualifier)
|
||||
{
|
||||
if (commitmentTypeIdentifier == null)
|
||||
throw new ArgumentNullException("commitmentTypeIdentifier");
|
||||
|
||||
this.commitmentTypeIdentifier = commitmentTypeIdentifier;
|
||||
|
||||
if (qualifier != null)
|
||||
{
|
||||
this.qualifier = qualifier.ToAsn1Object();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new <code>CommitmentTypeQualifier</code> instance.
|
||||
*
|
||||
* @param as <code>CommitmentTypeQualifier</code> structure
|
||||
* encoded as an Asn1Sequence.
|
||||
*/
|
||||
public CommitmentTypeQualifier(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
if (seq == null)
|
||||
throw new ArgumentNullException("seq");
|
||||
if (seq.Count < 1 || seq.Count > 2)
|
||||
throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
|
||||
|
||||
commitmentTypeIdentifier = (DerObjectIdentifier) seq[0].ToAsn1Object();
|
||||
|
||||
if (seq.Count > 1)
|
||||
{
|
||||
qualifier = seq[1].ToAsn1Object();
|
||||
}
|
||||
}
|
||||
|
||||
public static CommitmentTypeQualifier GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is CommitmentTypeQualifier)
|
||||
return (CommitmentTypeQualifier) obj;
|
||||
|
||||
if (obj is Asn1Sequence)
|
||||
return new CommitmentTypeQualifier((Asn1Sequence) obj);
|
||||
|
||||
throw new ArgumentException(
|
||||
"Unknown object in 'CommitmentTypeQualifier' factory: "
|
||||
+ obj.GetType().Name,
|
||||
"obj");
|
||||
}
|
||||
|
||||
public DerObjectIdentifier CommitmentTypeIdentifier
|
||||
{
|
||||
get { return commitmentTypeIdentifier; }
|
||||
}
|
||||
|
||||
public Asn1Object Qualifier
|
||||
{
|
||||
get { return qualifier; }
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a DER-encodable representation of this instance.
|
||||
*
|
||||
* @return a <code>Asn1Object</code> value
|
||||
*/
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
Asn1EncodableVector v = new Asn1EncodableVector(
|
||||
commitmentTypeIdentifier);
|
||||
|
||||
if (qualifier != null)
|
||||
{
|
||||
v.Add(qualifier);
|
||||
}
|
||||
|
||||
return new DerSequence(v);
|
||||
}
|
||||
}
|
||||
}
|
84
iTechSharp/srcbc/asn1/esf/CompleteCertificateRefs.cs
Normal file
84
iTechSharp/srcbc/asn1/esf/CompleteCertificateRefs.cs
Normal file
@@ -0,0 +1,84 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
|
||||
using Org.BouncyCastle.Utilities.Collections;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
/// <remarks>
|
||||
/// RFC 3126: 4.2.1 Complete Certificate Refs Attribute Definition
|
||||
/// <code>
|
||||
/// CompleteCertificateRefs ::= SEQUENCE OF OtherCertID
|
||||
/// </code>
|
||||
/// </remarks>
|
||||
public class CompleteCertificateRefs
|
||||
: Asn1Encodable
|
||||
{
|
||||
private readonly Asn1Sequence otherCertIDs;
|
||||
|
||||
public static CompleteCertificateRefs GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is CompleteCertificateRefs)
|
||||
return (CompleteCertificateRefs) obj;
|
||||
|
||||
if (obj is Asn1Sequence)
|
||||
return new CompleteCertificateRefs((Asn1Sequence) obj);
|
||||
|
||||
throw new ArgumentException(
|
||||
"Unknown object in 'CompleteCertificateRefs' factory: "
|
||||
+ obj.GetType().Name,
|
||||
"obj");
|
||||
}
|
||||
|
||||
private CompleteCertificateRefs(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
if (seq == null)
|
||||
throw new ArgumentNullException("seq");
|
||||
|
||||
foreach (Asn1Encodable ae in seq)
|
||||
{
|
||||
OtherCertID.GetInstance(ae.ToAsn1Object());
|
||||
}
|
||||
|
||||
this.otherCertIDs = seq;
|
||||
}
|
||||
|
||||
public CompleteCertificateRefs(
|
||||
params OtherCertID[] otherCertIDs)
|
||||
{
|
||||
if (otherCertIDs == null)
|
||||
throw new ArgumentNullException("otherCertIDs");
|
||||
|
||||
this.otherCertIDs = new DerSequence(otherCertIDs);
|
||||
}
|
||||
|
||||
public CompleteCertificateRefs(
|
||||
IEnumerable otherCertIDs)
|
||||
{
|
||||
if (otherCertIDs == null)
|
||||
throw new ArgumentNullException("otherCertIDs");
|
||||
if (!CollectionUtilities.CheckElementsAreOfType(otherCertIDs, typeof(OtherCertID)))
|
||||
throw new ArgumentException("Must contain only 'OtherCertID' objects", "otherCertIDs");
|
||||
|
||||
this.otherCertIDs = new DerSequence(
|
||||
Asn1EncodableVector.FromEnumerable(otherCertIDs));
|
||||
}
|
||||
|
||||
public OtherCertID[] GetOtherCertIDs()
|
||||
{
|
||||
OtherCertID[] result = new OtherCertID[otherCertIDs.Count];
|
||||
for (int i = 0; i < otherCertIDs.Count; ++i)
|
||||
{
|
||||
result[i] = OtherCertID.GetInstance(otherCertIDs[i].ToAsn1Object());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
return otherCertIDs;
|
||||
}
|
||||
}
|
||||
}
|
84
iTechSharp/srcbc/asn1/esf/CompleteRevocationRefs.cs
Normal file
84
iTechSharp/srcbc/asn1/esf/CompleteRevocationRefs.cs
Normal file
@@ -0,0 +1,84 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
|
||||
using Org.BouncyCastle.Utilities.Collections;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
/// <remarks>
|
||||
/// RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
|
||||
/// <code>
|
||||
/// CompleteRevocationRefs ::= SEQUENCE OF CrlOcspRef
|
||||
/// </code>
|
||||
/// </remarks>
|
||||
public class CompleteRevocationRefs
|
||||
: Asn1Encodable
|
||||
{
|
||||
private readonly Asn1Sequence crlOcspRefs;
|
||||
|
||||
public static CompleteRevocationRefs GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is CompleteRevocationRefs)
|
||||
return (CompleteRevocationRefs) obj;
|
||||
|
||||
if (obj is Asn1Sequence)
|
||||
return new CompleteRevocationRefs((Asn1Sequence) obj);
|
||||
|
||||
throw new ArgumentException(
|
||||
"Unknown object in 'CompleteRevocationRefs' factory: "
|
||||
+ obj.GetType().Name,
|
||||
"obj");
|
||||
}
|
||||
|
||||
private CompleteRevocationRefs(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
if (seq == null)
|
||||
throw new ArgumentNullException("seq");
|
||||
|
||||
foreach (Asn1Encodable ae in seq)
|
||||
{
|
||||
CrlOcspRef.GetInstance(ae.ToAsn1Object());
|
||||
}
|
||||
|
||||
this.crlOcspRefs = seq;
|
||||
}
|
||||
|
||||
public CompleteRevocationRefs(
|
||||
params CrlOcspRef[] crlOcspRefs)
|
||||
{
|
||||
if (crlOcspRefs == null)
|
||||
throw new ArgumentNullException("crlOcspRefs");
|
||||
|
||||
this.crlOcspRefs = new DerSequence(crlOcspRefs);
|
||||
}
|
||||
|
||||
public CompleteRevocationRefs(
|
||||
IEnumerable crlOcspRefs)
|
||||
{
|
||||
if (crlOcspRefs == null)
|
||||
throw new ArgumentNullException("crlOcspRefs");
|
||||
if (!CollectionUtilities.CheckElementsAreOfType(crlOcspRefs, typeof(CrlOcspRef)))
|
||||
throw new ArgumentException("Must contain only 'CrlOcspRef' objects", "crlOcspRefs");
|
||||
|
||||
this.crlOcspRefs = new DerSequence(
|
||||
Asn1EncodableVector.FromEnumerable(crlOcspRefs));
|
||||
}
|
||||
|
||||
public CrlOcspRef[] GetCrlOcspRefs()
|
||||
{
|
||||
CrlOcspRef[] result = new CrlOcspRef[crlOcspRefs.Count];
|
||||
for (int i = 0; i < crlOcspRefs.Count; ++i)
|
||||
{
|
||||
result[i] = CrlOcspRef.GetInstance(crlOcspRefs[i].ToAsn1Object());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
return crlOcspRefs;
|
||||
}
|
||||
}
|
||||
}
|
110
iTechSharp/srcbc/asn1/esf/CrlIdentifier.cs
Normal file
110
iTechSharp/srcbc/asn1/esf/CrlIdentifier.cs
Normal file
@@ -0,0 +1,110 @@
|
||||
using System;
|
||||
|
||||
using Org.BouncyCastle.Asn1.X509;
|
||||
using Org.BouncyCastle.Math;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
/// <remarks>
|
||||
/// RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
|
||||
/// <code>
|
||||
/// CrlIdentifier ::= SEQUENCE
|
||||
/// {
|
||||
/// crlissuer Name,
|
||||
/// crlIssuedTime UTCTime,
|
||||
/// crlNumber INTEGER OPTIONAL
|
||||
/// }
|
||||
/// </code>
|
||||
/// </remarks>
|
||||
public class CrlIdentifier
|
||||
: Asn1Encodable
|
||||
{
|
||||
private readonly X509Name crlIssuer;
|
||||
private readonly DerUtcTime crlIssuedTime;
|
||||
private readonly DerInteger crlNumber;
|
||||
|
||||
public static CrlIdentifier GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is CrlIdentifier)
|
||||
return (CrlIdentifier) obj;
|
||||
|
||||
if (obj is Asn1Sequence)
|
||||
return new CrlIdentifier((Asn1Sequence) obj);
|
||||
|
||||
throw new ArgumentException(
|
||||
"Unknown object in 'CrlIdentifier' factory: "
|
||||
+ obj.GetType().Name,
|
||||
"obj");
|
||||
}
|
||||
|
||||
private CrlIdentifier(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
if (seq == null)
|
||||
throw new ArgumentNullException("seq");
|
||||
if (seq.Count < 2 || seq.Count > 3)
|
||||
throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
|
||||
|
||||
this.crlIssuer = X509Name.GetInstance(seq[0]);
|
||||
this.crlIssuedTime = DerUtcTime.GetInstance(seq[1]);
|
||||
|
||||
if (seq.Count > 2)
|
||||
{
|
||||
this.crlNumber = DerInteger.GetInstance(seq[2]);
|
||||
}
|
||||
}
|
||||
|
||||
public CrlIdentifier(
|
||||
X509Name crlIssuer,
|
||||
DateTime crlIssuedTime)
|
||||
: this(crlIssuer, crlIssuedTime, null)
|
||||
{
|
||||
}
|
||||
|
||||
public CrlIdentifier(
|
||||
X509Name crlIssuer,
|
||||
DateTime crlIssuedTime,
|
||||
BigInteger crlNumber)
|
||||
{
|
||||
if (crlIssuer == null)
|
||||
throw new ArgumentNullException("crlIssuer");
|
||||
|
||||
this.crlIssuer = crlIssuer;
|
||||
this.crlIssuedTime = new DerUtcTime(crlIssuedTime);
|
||||
|
||||
if (crlNumber != null)
|
||||
{
|
||||
this.crlNumber = new DerInteger(crlNumber);
|
||||
}
|
||||
}
|
||||
|
||||
public X509Name CrlIssuer
|
||||
{
|
||||
get { return crlIssuer; }
|
||||
}
|
||||
|
||||
public DateTime CrlIssuedTime
|
||||
{
|
||||
get { return crlIssuedTime.ToAdjustedDateTime(); }
|
||||
}
|
||||
|
||||
public BigInteger CrlNumber
|
||||
{
|
||||
get { return crlNumber == null ? null : crlNumber.Value; }
|
||||
}
|
||||
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
Asn1EncodableVector v = new Asn1EncodableVector(
|
||||
crlIssuer.ToAsn1Object(), crlIssuedTime);
|
||||
|
||||
if (crlNumber != null)
|
||||
{
|
||||
v.Add(crlNumber);
|
||||
}
|
||||
|
||||
return new DerSequence(v);
|
||||
}
|
||||
}
|
||||
}
|
89
iTechSharp/srcbc/asn1/esf/CrlListID.cs
Normal file
89
iTechSharp/srcbc/asn1/esf/CrlListID.cs
Normal file
@@ -0,0 +1,89 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
|
||||
using Org.BouncyCastle.Utilities.Collections;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
/// <remarks>
|
||||
/// RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
|
||||
/// <code>
|
||||
/// CRLListID ::= SEQUENCE
|
||||
/// {
|
||||
/// crls SEQUENCE OF CrlValidatedID
|
||||
/// }
|
||||
/// </code>
|
||||
/// </remarks>
|
||||
public class CrlListID
|
||||
: Asn1Encodable
|
||||
{
|
||||
private readonly Asn1Sequence crls;
|
||||
|
||||
public static CrlListID GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is CrlListID)
|
||||
return (CrlListID) obj;
|
||||
|
||||
if (obj is Asn1Sequence)
|
||||
return new CrlListID((Asn1Sequence) obj);
|
||||
|
||||
throw new ArgumentException(
|
||||
"Unknown object in 'CrlListID' factory: "
|
||||
+ obj.GetType().Name,
|
||||
"obj");
|
||||
}
|
||||
|
||||
private CrlListID(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
if (seq == null)
|
||||
throw new ArgumentNullException("seq");
|
||||
if (seq.Count != 1)
|
||||
throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
|
||||
|
||||
this.crls = (Asn1Sequence) seq[0].ToAsn1Object();
|
||||
|
||||
foreach (Asn1Encodable ae in this.crls)
|
||||
{
|
||||
CrlValidatedID.GetInstance(ae.ToAsn1Object());
|
||||
}
|
||||
}
|
||||
|
||||
public CrlListID(
|
||||
params CrlValidatedID[] crls)
|
||||
{
|
||||
if (crls == null)
|
||||
throw new ArgumentNullException("crls");
|
||||
|
||||
this.crls = new DerSequence(crls);
|
||||
}
|
||||
|
||||
public CrlListID(
|
||||
IEnumerable crls)
|
||||
{
|
||||
if (crls == null)
|
||||
throw new ArgumentNullException("crls");
|
||||
if (!CollectionUtilities.CheckElementsAreOfType(crls, typeof(CrlValidatedID)))
|
||||
throw new ArgumentException("Must contain only 'CrlValidatedID' objects", "crls");
|
||||
|
||||
this.crls = new DerSequence(
|
||||
Asn1EncodableVector.FromEnumerable(crls));
|
||||
}
|
||||
|
||||
public CrlValidatedID[] GetCrls()
|
||||
{
|
||||
CrlValidatedID[] result = new CrlValidatedID[crls.Count];
|
||||
for (int i = 0; i < crls.Count; ++i)
|
||||
{
|
||||
result[i] = CrlValidatedID.GetInstance(crls[i].ToAsn1Object());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
return new DerSequence(crls);
|
||||
}
|
||||
}
|
||||
}
|
111
iTechSharp/srcbc/asn1/esf/CrlOcspRef.cs
Normal file
111
iTechSharp/srcbc/asn1/esf/CrlOcspRef.cs
Normal file
@@ -0,0 +1,111 @@
|
||||
using System;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
/// <remarks>
|
||||
/// RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
|
||||
/// <code>
|
||||
/// CrlOcspRef ::= SEQUENCE {
|
||||
/// crlids [0] CRLListID OPTIONAL,
|
||||
/// ocspids [1] OcspListID OPTIONAL,
|
||||
/// otherRev [2] OtherRevRefs OPTIONAL
|
||||
/// }
|
||||
/// </code>
|
||||
/// </remarks>
|
||||
public class CrlOcspRef
|
||||
: Asn1Encodable
|
||||
{
|
||||
private readonly CrlListID crlids;
|
||||
private readonly OcspListID ocspids;
|
||||
private readonly OtherRevRefs otherRev;
|
||||
|
||||
public static CrlOcspRef GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is CrlOcspRef)
|
||||
return (CrlOcspRef) obj;
|
||||
|
||||
if (obj is Asn1Sequence)
|
||||
return new CrlOcspRef((Asn1Sequence) obj);
|
||||
|
||||
throw new ArgumentException(
|
||||
"Unknown object in 'CrlOcspRef' factory: "
|
||||
+ obj.GetType().Name,
|
||||
"obj");
|
||||
}
|
||||
|
||||
private CrlOcspRef(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
if (seq == null)
|
||||
throw new ArgumentNullException("seq");
|
||||
|
||||
foreach (Asn1TaggedObject taggedObj in seq)
|
||||
{
|
||||
Asn1Object asn1Obj = taggedObj.GetObject();
|
||||
|
||||
switch (taggedObj.TagNo)
|
||||
{
|
||||
case 0:
|
||||
this.crlids = CrlListID.GetInstance(asn1Obj);
|
||||
break;
|
||||
case 1:
|
||||
this.ocspids = OcspListID.GetInstance(asn1Obj);
|
||||
break;
|
||||
case 2:
|
||||
this.otherRev = OtherRevRefs.GetInstance(asn1Obj);
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentException("Illegal tag in CrlOcspRef", "seq");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public CrlOcspRef(
|
||||
CrlListID crlids,
|
||||
OcspListID ocspids,
|
||||
OtherRevRefs otherRev)
|
||||
{
|
||||
this.crlids = crlids;
|
||||
this.ocspids = ocspids;
|
||||
this.otherRev = otherRev;
|
||||
}
|
||||
|
||||
public CrlListID CrlIDs
|
||||
{
|
||||
get { return crlids; }
|
||||
}
|
||||
|
||||
public OcspListID OcspIDs
|
||||
{
|
||||
get { return ocspids; }
|
||||
}
|
||||
|
||||
public OtherRevRefs OtherRev
|
||||
{
|
||||
get { return otherRev; }
|
||||
}
|
||||
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
Asn1EncodableVector v = new Asn1EncodableVector();
|
||||
|
||||
if (crlids != null)
|
||||
{
|
||||
v.Add(new DerTaggedObject(true, 0, crlids.ToAsn1Object()));
|
||||
}
|
||||
|
||||
if (ocspids != null)
|
||||
{
|
||||
v.Add(new DerTaggedObject(true, 1, ocspids.ToAsn1Object()));
|
||||
}
|
||||
|
||||
if (otherRev != null)
|
||||
{
|
||||
v.Add(new DerTaggedObject(true, 2, otherRev.ToAsn1Object()));
|
||||
}
|
||||
|
||||
return new DerSequence(v);
|
||||
}
|
||||
}
|
||||
}
|
89
iTechSharp/srcbc/asn1/esf/CrlValidatedID.cs
Normal file
89
iTechSharp/srcbc/asn1/esf/CrlValidatedID.cs
Normal file
@@ -0,0 +1,89 @@
|
||||
using System;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
/// <remarks>
|
||||
/// RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
|
||||
/// <code>
|
||||
/// CrlValidatedID ::= SEQUENCE {
|
||||
/// crlHash OtherHash,
|
||||
/// crlIdentifier CrlIdentifier OPTIONAL}
|
||||
/// </code>
|
||||
/// </remarks>
|
||||
public class CrlValidatedID
|
||||
: Asn1Encodable
|
||||
{
|
||||
private readonly OtherHash crlHash;
|
||||
private readonly CrlIdentifier crlIdentifier;
|
||||
|
||||
public static CrlValidatedID GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is CrlValidatedID)
|
||||
return (CrlValidatedID) obj;
|
||||
|
||||
if (obj is Asn1Sequence)
|
||||
return new CrlValidatedID((Asn1Sequence) obj);
|
||||
|
||||
throw new ArgumentException(
|
||||
"Unknown object in 'CrlValidatedID' factory: "
|
||||
+ obj.GetType().Name,
|
||||
"obj");
|
||||
}
|
||||
|
||||
private CrlValidatedID(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
if (seq == null)
|
||||
throw new ArgumentNullException("seq");
|
||||
if (seq.Count < 1 || seq.Count > 2)
|
||||
throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
|
||||
|
||||
this.crlHash = OtherHash.GetInstance(seq[0].ToAsn1Object());
|
||||
|
||||
if (seq.Count > 1)
|
||||
{
|
||||
this.crlIdentifier = CrlIdentifier.GetInstance(seq[1].ToAsn1Object());
|
||||
}
|
||||
}
|
||||
|
||||
public CrlValidatedID(
|
||||
OtherHash crlHash)
|
||||
: this(crlHash, null)
|
||||
{
|
||||
}
|
||||
|
||||
public CrlValidatedID(
|
||||
OtherHash crlHash,
|
||||
CrlIdentifier crlIdentifier)
|
||||
{
|
||||
if (crlHash == null)
|
||||
throw new ArgumentNullException("crlHash");
|
||||
|
||||
this.crlHash = crlHash;
|
||||
this.crlIdentifier = crlIdentifier;
|
||||
}
|
||||
|
||||
public OtherHash CrlHash
|
||||
{
|
||||
get { return crlHash; }
|
||||
}
|
||||
|
||||
public CrlIdentifier CrlIdentifier
|
||||
{
|
||||
get { return crlIdentifier; }
|
||||
}
|
||||
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
Asn1EncodableVector v = new Asn1EncodableVector(crlHash.ToAsn1Object());
|
||||
|
||||
if (crlIdentifier != null)
|
||||
{
|
||||
v.Add(crlIdentifier.ToAsn1Object());
|
||||
}
|
||||
|
||||
return new DerSequence(v);
|
||||
}
|
||||
}
|
||||
}
|
24
iTechSharp/srcbc/asn1/esf/ESFAttributes.cs
Normal file
24
iTechSharp/srcbc/asn1/esf/ESFAttributes.cs
Normal file
@@ -0,0 +1,24 @@
|
||||
using System;
|
||||
|
||||
using Org.BouncyCastle.Asn1;
|
||||
using Org.BouncyCastle.Asn1.Pkcs;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
public abstract class EsfAttributes
|
||||
{
|
||||
public static readonly DerObjectIdentifier SigPolicyId = PkcsObjectIdentifiers.IdAAEtsSigPolicyID;
|
||||
public static readonly DerObjectIdentifier CommitmentType = PkcsObjectIdentifiers.IdAAEtsCommitmentType;
|
||||
public static readonly DerObjectIdentifier SignerLocation = PkcsObjectIdentifiers.IdAAEtsSignerLocation;
|
||||
public static readonly DerObjectIdentifier SignerAttr = PkcsObjectIdentifiers.IdAAEtsSignerAttr;
|
||||
public static readonly DerObjectIdentifier OtherSigCert = PkcsObjectIdentifiers.IdAAEtsOtherSigCert;
|
||||
public static readonly DerObjectIdentifier ContentTimestamp = PkcsObjectIdentifiers.IdAAEtsContentTimestamp;
|
||||
public static readonly DerObjectIdentifier CertificateRefs = PkcsObjectIdentifiers.IdAAEtsCertificateRefs;
|
||||
public static readonly DerObjectIdentifier RevocationRefs = PkcsObjectIdentifiers.IdAAEtsRevocationRefs;
|
||||
public static readonly DerObjectIdentifier CertValues = PkcsObjectIdentifiers.IdAAEtsCertValues;
|
||||
public static readonly DerObjectIdentifier RevocationValues = PkcsObjectIdentifiers.IdAAEtsRevocationValues;
|
||||
public static readonly DerObjectIdentifier EscTimeStamp = PkcsObjectIdentifiers.IdAAEtsEscTimeStamp;
|
||||
public static readonly DerObjectIdentifier CertCrlTimestamp = PkcsObjectIdentifiers.IdAAEtsCertCrlTimestamp;
|
||||
public static readonly DerObjectIdentifier ArchiveTimestamp = PkcsObjectIdentifiers.IdAAEtsArchiveTimestamp;
|
||||
}
|
||||
}
|
77
iTechSharp/srcbc/asn1/esf/OcspIdentifier.cs
Normal file
77
iTechSharp/srcbc/asn1/esf/OcspIdentifier.cs
Normal file
@@ -0,0 +1,77 @@
|
||||
using System;
|
||||
|
||||
using Org.BouncyCastle.Asn1.Ocsp;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
/// <remarks>
|
||||
/// RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
|
||||
/// <code>
|
||||
/// OcspIdentifier ::= SEQUENCE {
|
||||
/// ocspResponderID ResponderID,
|
||||
/// -- As in OCSP response data
|
||||
/// producedAt GeneralizedTime
|
||||
/// -- As in OCSP response data
|
||||
/// }
|
||||
/// </code>
|
||||
/// </remarks>
|
||||
public class OcspIdentifier
|
||||
: Asn1Encodable
|
||||
{
|
||||
private readonly ResponderID ocspResponderID;
|
||||
private readonly DerGeneralizedTime producedAt;
|
||||
|
||||
public static OcspIdentifier GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is OcspIdentifier)
|
||||
return (OcspIdentifier) obj;
|
||||
|
||||
if (obj is Asn1Sequence)
|
||||
return new OcspIdentifier((Asn1Sequence) obj);
|
||||
|
||||
throw new ArgumentException(
|
||||
"Unknown object in 'OcspIdentifier' factory: "
|
||||
+ obj.GetType().Name,
|
||||
"obj");
|
||||
}
|
||||
|
||||
private OcspIdentifier(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
if (seq == null)
|
||||
throw new ArgumentNullException("seq");
|
||||
if (seq.Count != 2)
|
||||
throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
|
||||
|
||||
this.ocspResponderID = ResponderID.GetInstance(seq[0].ToAsn1Object());
|
||||
this.producedAt = (DerGeneralizedTime) seq[1].ToAsn1Object();
|
||||
}
|
||||
|
||||
public OcspIdentifier(
|
||||
ResponderID ocspResponderID,
|
||||
DateTime producedAt)
|
||||
{
|
||||
if (ocspResponderID == null)
|
||||
throw new ArgumentNullException();
|
||||
|
||||
this.ocspResponderID = ocspResponderID;
|
||||
this.producedAt = new DerGeneralizedTime(producedAt);
|
||||
}
|
||||
|
||||
public ResponderID OcspResponderID
|
||||
{
|
||||
get { return ocspResponderID; }
|
||||
}
|
||||
|
||||
public DateTime ProducedAt
|
||||
{
|
||||
get { return producedAt.ToDateTime(); }
|
||||
}
|
||||
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
return new DerSequence(ocspResponderID, producedAt);
|
||||
}
|
||||
}
|
||||
}
|
88
iTechSharp/srcbc/asn1/esf/OcspListID.cs
Normal file
88
iTechSharp/srcbc/asn1/esf/OcspListID.cs
Normal file
@@ -0,0 +1,88 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
|
||||
using Org.BouncyCastle.Utilities.Collections;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
/// <remarks>
|
||||
/// RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
|
||||
/// <code>
|
||||
/// OcspListID ::= SEQUENCE {
|
||||
/// ocspResponses SEQUENCE OF OcspResponsesID
|
||||
/// }
|
||||
/// </code>
|
||||
/// </remarks>
|
||||
public class OcspListID
|
||||
: Asn1Encodable
|
||||
{
|
||||
private readonly Asn1Sequence ocspResponses;
|
||||
|
||||
public static OcspListID GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is OcspListID)
|
||||
return (OcspListID) obj;
|
||||
|
||||
if (obj is Asn1Sequence)
|
||||
return new OcspListID((Asn1Sequence) obj);
|
||||
|
||||
throw new ArgumentException(
|
||||
"Unknown object in 'OcspListID' factory: "
|
||||
+ obj.GetType().Name,
|
||||
"obj");
|
||||
}
|
||||
|
||||
private OcspListID(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
if (seq == null)
|
||||
throw new ArgumentNullException("seq");
|
||||
if (seq.Count != 1)
|
||||
throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
|
||||
|
||||
this.ocspResponses = (Asn1Sequence) seq[0].ToAsn1Object();
|
||||
|
||||
foreach (Asn1Encodable ae in this.ocspResponses)
|
||||
{
|
||||
OcspResponsesID.GetInstance(ae.ToAsn1Object());
|
||||
}
|
||||
}
|
||||
|
||||
public OcspListID(
|
||||
params OcspResponsesID[] ocspResponses)
|
||||
{
|
||||
if (ocspResponses == null)
|
||||
throw new ArgumentNullException("ocspResponses");
|
||||
|
||||
this.ocspResponses = new DerSequence(ocspResponses);
|
||||
}
|
||||
|
||||
public OcspListID(
|
||||
IEnumerable ocspResponses)
|
||||
{
|
||||
if (ocspResponses == null)
|
||||
throw new ArgumentNullException("ocspResponses");
|
||||
if (!CollectionUtilities.CheckElementsAreOfType(ocspResponses, typeof(OcspResponsesID)))
|
||||
throw new ArgumentException("Must contain only 'OcspResponsesID' objects", "ocspResponses");
|
||||
|
||||
this.ocspResponses = new DerSequence(
|
||||
Asn1EncodableVector.FromEnumerable(ocspResponses));
|
||||
}
|
||||
|
||||
public OcspResponsesID[] GetOcspResponses()
|
||||
{
|
||||
OcspResponsesID[] result = new OcspResponsesID[ocspResponses.Count];
|
||||
for (int i = 0; i < ocspResponses.Count; ++i)
|
||||
{
|
||||
result[i] = OcspResponsesID.GetInstance(ocspResponses[i].ToAsn1Object());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
return new DerSequence(ocspResponses);
|
||||
}
|
||||
}
|
||||
}
|
92
iTechSharp/srcbc/asn1/esf/OcspResponsesID.cs
Normal file
92
iTechSharp/srcbc/asn1/esf/OcspResponsesID.cs
Normal file
@@ -0,0 +1,92 @@
|
||||
using System;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
/// <remarks>
|
||||
/// RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
|
||||
/// <code>
|
||||
/// OcspResponsesID ::= SEQUENCE {
|
||||
/// ocspIdentifier OcspIdentifier,
|
||||
/// ocspRepHash OtherHash OPTIONAL
|
||||
/// }
|
||||
/// </code>
|
||||
/// </remarks>
|
||||
public class OcspResponsesID
|
||||
: Asn1Encodable
|
||||
{
|
||||
private readonly OcspIdentifier ocspIdentifier;
|
||||
private readonly OtherHash ocspRepHash;
|
||||
|
||||
public static OcspResponsesID GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is OcspResponsesID)
|
||||
return (OcspResponsesID) obj;
|
||||
|
||||
if (obj is Asn1Sequence)
|
||||
return new OcspResponsesID((Asn1Sequence) obj);
|
||||
|
||||
throw new ArgumentException(
|
||||
"Unknown object in 'OcspResponsesID' factory: "
|
||||
+ obj.GetType().Name,
|
||||
"obj");
|
||||
}
|
||||
|
||||
private OcspResponsesID(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
if (seq == null)
|
||||
throw new ArgumentNullException("seq");
|
||||
if (seq.Count < 1 || seq.Count > 2)
|
||||
throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
|
||||
|
||||
this.ocspIdentifier = OcspIdentifier.GetInstance(seq[0].ToAsn1Object());
|
||||
|
||||
if (seq.Count > 1)
|
||||
{
|
||||
this.ocspRepHash = OtherHash.GetInstance(seq[1].ToAsn1Object());
|
||||
}
|
||||
}
|
||||
|
||||
public OcspResponsesID(
|
||||
OcspIdentifier ocspIdentifier)
|
||||
: this(ocspIdentifier, null)
|
||||
{
|
||||
}
|
||||
|
||||
public OcspResponsesID(
|
||||
OcspIdentifier ocspIdentifier,
|
||||
OtherHash ocspRepHash)
|
||||
{
|
||||
if (ocspIdentifier == null)
|
||||
throw new ArgumentNullException("ocspIdentifier");
|
||||
|
||||
this.ocspIdentifier = ocspIdentifier;
|
||||
this.ocspRepHash = ocspRepHash;
|
||||
}
|
||||
|
||||
public OcspIdentifier OcspIdentifier
|
||||
{
|
||||
get { return ocspIdentifier; }
|
||||
}
|
||||
|
||||
public OtherHash OcspRepHash
|
||||
{
|
||||
get { return ocspRepHash; }
|
||||
}
|
||||
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
Asn1EncodableVector v = new Asn1EncodableVector(
|
||||
ocspIdentifier.ToAsn1Object());
|
||||
|
||||
if (ocspRepHash != null)
|
||||
{
|
||||
v.Add(ocspRepHash.ToAsn1Object());
|
||||
}
|
||||
|
||||
return new DerSequence(v);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
93
iTechSharp/srcbc/asn1/esf/OtherCertID.cs
Normal file
93
iTechSharp/srcbc/asn1/esf/OtherCertID.cs
Normal file
@@ -0,0 +1,93 @@
|
||||
using System;
|
||||
|
||||
using Org.BouncyCastle.Asn1.X509;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
/// <remarks>
|
||||
/// <code>
|
||||
/// OtherCertID ::= SEQUENCE {
|
||||
/// otherCertHash OtherHash,
|
||||
/// issuerSerial IssuerSerial OPTIONAL
|
||||
/// }
|
||||
/// </code>
|
||||
/// </remarks>
|
||||
public class OtherCertID
|
||||
: Asn1Encodable
|
||||
{
|
||||
private readonly OtherHash otherCertHash;
|
||||
private readonly IssuerSerial issuerSerial;
|
||||
|
||||
public static OtherCertID GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is OtherCertID)
|
||||
return (OtherCertID) obj;
|
||||
|
||||
if (obj is Asn1Sequence)
|
||||
return new OtherCertID((Asn1Sequence) obj);
|
||||
|
||||
throw new ArgumentException(
|
||||
"Unknown object in 'OtherCertID' factory: "
|
||||
+ obj.GetType().Name,
|
||||
"obj");
|
||||
}
|
||||
|
||||
private OtherCertID(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
if (seq == null)
|
||||
throw new ArgumentNullException("seq");
|
||||
if (seq.Count < 1 || seq.Count > 2)
|
||||
throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
|
||||
|
||||
this.otherCertHash = OtherHash.GetInstance(seq[0].ToAsn1Object());
|
||||
|
||||
if (seq.Count > 1)
|
||||
{
|
||||
this.issuerSerial = IssuerSerial.GetInstance(seq[1].ToAsn1Object());
|
||||
}
|
||||
}
|
||||
|
||||
public OtherCertID(
|
||||
OtherHash otherCertHash)
|
||||
: this(otherCertHash, null)
|
||||
{
|
||||
}
|
||||
|
||||
public OtherCertID(
|
||||
OtherHash otherCertHash,
|
||||
IssuerSerial issuerSerial)
|
||||
{
|
||||
if (otherCertHash == null)
|
||||
throw new ArgumentNullException("otherCertHash");
|
||||
|
||||
this.otherCertHash = otherCertHash;
|
||||
this.issuerSerial = issuerSerial;
|
||||
}
|
||||
|
||||
public OtherHash OtherCertHash
|
||||
{
|
||||
get { return otherCertHash; }
|
||||
}
|
||||
|
||||
public IssuerSerial IssuerSerial
|
||||
{
|
||||
get { return issuerSerial; }
|
||||
}
|
||||
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
Asn1EncodableVector v = new Asn1EncodableVector(
|
||||
otherCertHash.ToAsn1Object());
|
||||
|
||||
if (issuerSerial != null)
|
||||
{
|
||||
v.Add(issuerSerial.ToAsn1Object());
|
||||
}
|
||||
|
||||
return new DerSequence(v);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
89
iTechSharp/srcbc/asn1/esf/OtherHash.cs
Normal file
89
iTechSharp/srcbc/asn1/esf/OtherHash.cs
Normal file
@@ -0,0 +1,89 @@
|
||||
using System;
|
||||
|
||||
using Org.BouncyCastle.Asn1.Oiw;
|
||||
using Org.BouncyCastle.Asn1.X509;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
/// <remarks>
|
||||
/// <code>
|
||||
/// OtherHash ::= CHOICE {
|
||||
/// sha1Hash OtherHashValue, -- This contains a SHA-1 hash
|
||||
/// otherHash OtherHashAlgAndValue
|
||||
/// }
|
||||
///
|
||||
/// OtherHashValue ::= OCTET STRING
|
||||
/// </code>
|
||||
/// </remarks>
|
||||
public class OtherHash
|
||||
: Asn1Encodable
|
||||
//, Asn1Choice
|
||||
{
|
||||
private readonly Asn1OctetString sha1Hash;
|
||||
private readonly OtherHashAlgAndValue otherHash;
|
||||
|
||||
public static OtherHash GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is OtherHash)
|
||||
return (OtherHash) obj;
|
||||
|
||||
if (obj is Asn1OctetString)
|
||||
return new OtherHash((Asn1OctetString) obj);
|
||||
|
||||
return new OtherHash(
|
||||
OtherHashAlgAndValue.GetInstance(obj));
|
||||
}
|
||||
|
||||
public OtherHash(
|
||||
byte[] sha1Hash)
|
||||
{
|
||||
if (sha1Hash == null)
|
||||
throw new ArgumentNullException("sha1Hash");
|
||||
|
||||
this.sha1Hash = new DerOctetString(sha1Hash);
|
||||
}
|
||||
|
||||
public OtherHash(
|
||||
Asn1OctetString sha1Hash)
|
||||
{
|
||||
if (sha1Hash == null)
|
||||
throw new ArgumentNullException("sha1Hash");
|
||||
|
||||
this.sha1Hash = sha1Hash;
|
||||
}
|
||||
|
||||
public OtherHash(
|
||||
OtherHashAlgAndValue otherHash)
|
||||
{
|
||||
if (otherHash == null)
|
||||
throw new ArgumentNullException("otherHash");
|
||||
|
||||
this.otherHash = otherHash;
|
||||
}
|
||||
|
||||
public AlgorithmIdentifier HashAlgorithm
|
||||
{
|
||||
get
|
||||
{
|
||||
return otherHash == null
|
||||
? new AlgorithmIdentifier(OiwObjectIdentifiers.IdSha1)
|
||||
: otherHash.HashAlgorithm;
|
||||
}
|
||||
}
|
||||
|
||||
public byte[] GetHashValue()
|
||||
{
|
||||
return otherHash == null
|
||||
? sha1Hash.GetOctets()
|
||||
: otherHash.GetHashValue();
|
||||
}
|
||||
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
return otherHash == null
|
||||
? sha1Hash
|
||||
: otherHash.ToAsn1Object();
|
||||
}
|
||||
}
|
||||
}
|
94
iTechSharp/srcbc/asn1/esf/OtherHashAlgAndValue.cs
Normal file
94
iTechSharp/srcbc/asn1/esf/OtherHashAlgAndValue.cs
Normal file
@@ -0,0 +1,94 @@
|
||||
using System;
|
||||
|
||||
using Org.BouncyCastle.Asn1.X509;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
/// <summary>
|
||||
/// Summary description for OtherHashAlgAndValue.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <code>
|
||||
/// OtherHashAlgAndValue ::= SEQUENCE {
|
||||
/// hashAlgorithm AlgorithmIdentifier,
|
||||
/// hashValue OtherHashValue
|
||||
/// }
|
||||
///
|
||||
/// OtherHashValue ::= OCTET STRING
|
||||
/// </code>
|
||||
/// </remarks>
|
||||
public class OtherHashAlgAndValue
|
||||
: Asn1Encodable
|
||||
{
|
||||
private readonly AlgorithmIdentifier hashAlgorithm;
|
||||
private readonly Asn1OctetString hashValue;
|
||||
|
||||
public static OtherHashAlgAndValue GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is OtherHashAlgAndValue)
|
||||
return (OtherHashAlgAndValue) obj;
|
||||
|
||||
if (obj is Asn1Sequence)
|
||||
return new OtherHashAlgAndValue((Asn1Sequence) obj);
|
||||
|
||||
throw new ArgumentException(
|
||||
"Unknown object in 'OtherHashAlgAndValue' factory: "
|
||||
+ obj.GetType().Name,
|
||||
"obj");
|
||||
}
|
||||
|
||||
private OtherHashAlgAndValue(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
if (seq == null)
|
||||
throw new ArgumentNullException("seq");
|
||||
if (seq.Count != 2)
|
||||
throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
|
||||
|
||||
this.hashAlgorithm = AlgorithmIdentifier.GetInstance(seq[0].ToAsn1Object());
|
||||
this.hashValue = (Asn1OctetString) seq[1].ToAsn1Object();
|
||||
}
|
||||
|
||||
public OtherHashAlgAndValue(
|
||||
AlgorithmIdentifier hashAlgorithm,
|
||||
byte[] hashValue)
|
||||
{
|
||||
if (hashAlgorithm == null)
|
||||
throw new ArgumentNullException("hashAlgorithm");
|
||||
if (hashValue == null)
|
||||
throw new ArgumentNullException("hashValue");
|
||||
|
||||
this.hashAlgorithm = hashAlgorithm;
|
||||
this.hashValue = new DerOctetString(hashValue);
|
||||
}
|
||||
|
||||
public OtherHashAlgAndValue(
|
||||
AlgorithmIdentifier hashAlgorithm,
|
||||
Asn1OctetString hashValue)
|
||||
{
|
||||
if (hashAlgorithm == null)
|
||||
throw new ArgumentNullException("hashAlgorithm");
|
||||
if (hashValue == null)
|
||||
throw new ArgumentNullException("hashValue");
|
||||
|
||||
this.hashAlgorithm = hashAlgorithm;
|
||||
this.hashValue = hashValue;
|
||||
}
|
||||
|
||||
public AlgorithmIdentifier HashAlgorithm
|
||||
{
|
||||
get { return hashAlgorithm; }
|
||||
}
|
||||
|
||||
public byte[] GetHashValue()
|
||||
{
|
||||
return hashValue.GetOctets();
|
||||
}
|
||||
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
return new DerSequence(hashAlgorithm, hashValue);
|
||||
}
|
||||
}
|
||||
}
|
78
iTechSharp/srcbc/asn1/esf/OtherRevRefs.cs
Normal file
78
iTechSharp/srcbc/asn1/esf/OtherRevRefs.cs
Normal file
@@ -0,0 +1,78 @@
|
||||
using System;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
/// <remarks>
|
||||
/// RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
|
||||
/// <code>
|
||||
/// OtherRevRefs ::= SEQUENCE
|
||||
/// {
|
||||
/// otherRevRefType OtherRevRefType,
|
||||
/// otherRevRefs ANY DEFINED BY otherRevRefType
|
||||
/// }
|
||||
///
|
||||
/// OtherRevRefType ::= OBJECT IDENTIFIER
|
||||
/// </code>
|
||||
/// </remarks>
|
||||
public class OtherRevRefs
|
||||
: Asn1Encodable
|
||||
{
|
||||
private readonly DerObjectIdentifier otherRevRefType;
|
||||
private readonly Asn1Object otherRevRefs;
|
||||
|
||||
public static OtherRevRefs GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is OtherRevRefs)
|
||||
return (OtherRevRefs) obj;
|
||||
|
||||
if (obj is Asn1Sequence)
|
||||
return new OtherRevRefs((Asn1Sequence) obj);
|
||||
|
||||
throw new ArgumentException(
|
||||
"Unknown object in 'OtherRevRefs' factory: "
|
||||
+ obj.GetType().Name,
|
||||
"obj");
|
||||
}
|
||||
|
||||
private OtherRevRefs(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
if (seq == null)
|
||||
throw new ArgumentNullException("seq");
|
||||
if (seq.Count != 2)
|
||||
throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
|
||||
|
||||
this.otherRevRefType = (DerObjectIdentifier) seq[0].ToAsn1Object();
|
||||
this.otherRevRefs = seq[1].ToAsn1Object();
|
||||
}
|
||||
|
||||
public OtherRevRefs(
|
||||
DerObjectIdentifier otherRevRefType,
|
||||
Asn1Encodable otherRevRefs)
|
||||
{
|
||||
if (otherRevRefType == null)
|
||||
throw new ArgumentNullException("otherRevRefType");
|
||||
if (otherRevRefs == null)
|
||||
throw new ArgumentNullException("otherRevRefs");
|
||||
|
||||
this.otherRevRefType = otherRevRefType;
|
||||
this.otherRevRefs = otherRevRefs.ToAsn1Object();
|
||||
}
|
||||
|
||||
public DerObjectIdentifier OtherRevRefType
|
||||
{
|
||||
get { return otherRevRefType; }
|
||||
}
|
||||
|
||||
public Asn1Object OtherRevRefsObject
|
||||
{
|
||||
get { return otherRevRefs; }
|
||||
}
|
||||
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
return new DerSequence(otherRevRefType, otherRevRefs);
|
||||
}
|
||||
}
|
||||
}
|
78
iTechSharp/srcbc/asn1/esf/OtherRevVals.cs
Normal file
78
iTechSharp/srcbc/asn1/esf/OtherRevVals.cs
Normal file
@@ -0,0 +1,78 @@
|
||||
using System;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
/// <remarks>
|
||||
/// RFC 3126: 4.3.2 Revocation Values Attribute Definition
|
||||
/// <code>
|
||||
/// OtherRevVals ::= SEQUENCE
|
||||
/// {
|
||||
/// otherRevValType OtherRevValType,
|
||||
/// otherRevVals ANY DEFINED BY otherRevValType
|
||||
/// }
|
||||
///
|
||||
/// OtherRevValType ::= OBJECT IDENTIFIER
|
||||
/// </code>
|
||||
/// </remarks>
|
||||
public class OtherRevVals
|
||||
: Asn1Encodable
|
||||
{
|
||||
private readonly DerObjectIdentifier otherRevValType;
|
||||
private readonly Asn1Object otherRevVals;
|
||||
|
||||
public static OtherRevVals GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is OtherRevVals)
|
||||
return (OtherRevVals) obj;
|
||||
|
||||
if (obj is Asn1Sequence)
|
||||
return new OtherRevVals((Asn1Sequence) obj);
|
||||
|
||||
throw new ArgumentException(
|
||||
"Unknown object in 'OtherRevVals' factory: "
|
||||
+ obj.GetType().Name,
|
||||
"obj");
|
||||
}
|
||||
|
||||
private OtherRevVals(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
if (seq == null)
|
||||
throw new ArgumentNullException("seq");
|
||||
if (seq.Count != 2)
|
||||
throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
|
||||
|
||||
this.otherRevValType = (DerObjectIdentifier) seq[0].ToAsn1Object();
|
||||
this.otherRevVals = seq[1].ToAsn1Object();
|
||||
}
|
||||
|
||||
public OtherRevVals(
|
||||
DerObjectIdentifier otherRevValType,
|
||||
Asn1Encodable otherRevVals)
|
||||
{
|
||||
if (otherRevValType == null)
|
||||
throw new ArgumentNullException("otherRevValType");
|
||||
if (otherRevVals == null)
|
||||
throw new ArgumentNullException("otherRevVals");
|
||||
|
||||
this.otherRevValType = otherRevValType;
|
||||
this.otherRevVals = otherRevVals.ToAsn1Object();
|
||||
}
|
||||
|
||||
public DerObjectIdentifier OtherRevValType
|
||||
{
|
||||
get { return otherRevValType; }
|
||||
}
|
||||
|
||||
public Asn1Object OtherRevValsObject
|
||||
{
|
||||
get { return otherRevVals; }
|
||||
}
|
||||
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
return new DerSequence(otherRevValType, otherRevVals);
|
||||
}
|
||||
}
|
||||
}
|
138
iTechSharp/srcbc/asn1/esf/OtherSigningCertificate.cs
Normal file
138
iTechSharp/srcbc/asn1/esf/OtherSigningCertificate.cs
Normal file
@@ -0,0 +1,138 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
|
||||
using Org.BouncyCastle.Asn1.X509;
|
||||
using Org.BouncyCastle.Utilities.Collections;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
/// <remarks>
|
||||
/// <code>
|
||||
/// OtherSigningCertificate ::= SEQUENCE {
|
||||
/// certs SEQUENCE OF OtherCertID,
|
||||
/// policies SEQUENCE OF PolicyInformation OPTIONAL
|
||||
/// }
|
||||
/// </code>
|
||||
/// </remarks>
|
||||
public class OtherSigningCertificate
|
||||
: Asn1Encodable
|
||||
{
|
||||
private readonly Asn1Sequence certs;
|
||||
private readonly Asn1Sequence policies;
|
||||
|
||||
public static OtherSigningCertificate GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is OtherSigningCertificate)
|
||||
return (OtherSigningCertificate) obj;
|
||||
|
||||
if (obj is Asn1Sequence)
|
||||
return new OtherSigningCertificate((Asn1Sequence) obj);
|
||||
|
||||
throw new ArgumentException(
|
||||
"Unknown object in 'OtherSigningCertificate' factory: "
|
||||
+ obj.GetType().Name,
|
||||
"obj");
|
||||
}
|
||||
|
||||
private OtherSigningCertificate(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
if (seq == null)
|
||||
throw new ArgumentNullException("seq");
|
||||
if (seq.Count < 1 || seq.Count > 2)
|
||||
throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
|
||||
|
||||
this.certs = Asn1Sequence.GetInstance(seq[0].ToAsn1Object());
|
||||
|
||||
if (seq.Count > 1)
|
||||
{
|
||||
this.policies = Asn1Sequence.GetInstance(seq[1].ToAsn1Object());
|
||||
}
|
||||
}
|
||||
|
||||
public OtherSigningCertificate(
|
||||
params OtherCertID[] certs)
|
||||
: this(certs, null)
|
||||
{
|
||||
}
|
||||
|
||||
public OtherSigningCertificate(
|
||||
OtherCertID[] certs,
|
||||
params PolicyInformation[] policies)
|
||||
{
|
||||
if (certs == null)
|
||||
throw new ArgumentNullException("certs");
|
||||
|
||||
this.certs = new DerSequence(certs);
|
||||
|
||||
if (policies != null)
|
||||
{
|
||||
this.policies = new DerSequence(policies);
|
||||
}
|
||||
}
|
||||
|
||||
public OtherSigningCertificate(
|
||||
IEnumerable certs)
|
||||
: this(certs, null)
|
||||
{
|
||||
}
|
||||
|
||||
public OtherSigningCertificate(
|
||||
IEnumerable certs,
|
||||
IEnumerable policies)
|
||||
{
|
||||
if (certs == null)
|
||||
throw new ArgumentNullException("certs");
|
||||
if (!CollectionUtilities.CheckElementsAreOfType(certs, typeof(OtherCertID)))
|
||||
throw new ArgumentException("Must contain only 'OtherCertID' objects", "certs");
|
||||
|
||||
this.certs = new DerSequence(
|
||||
Asn1EncodableVector.FromEnumerable(certs));
|
||||
|
||||
if (policies != null)
|
||||
{
|
||||
if (!CollectionUtilities.CheckElementsAreOfType(policies, typeof(PolicyInformation)))
|
||||
throw new ArgumentException("Must contain only 'PolicyInformation' objects", "policies");
|
||||
|
||||
this.policies = new DerSequence(
|
||||
Asn1EncodableVector.FromEnumerable(policies));
|
||||
}
|
||||
}
|
||||
|
||||
public OtherCertID[] GetCerts()
|
||||
{
|
||||
OtherCertID[] cs = new OtherCertID[certs.Count];
|
||||
for (int i = 0; i < certs.Count; ++i)
|
||||
{
|
||||
cs[i] = OtherCertID.GetInstance(certs[i].ToAsn1Object());
|
||||
}
|
||||
return cs;
|
||||
}
|
||||
|
||||
public PolicyInformation[] GetPolicies()
|
||||
{
|
||||
if (policies == null)
|
||||
return null;
|
||||
|
||||
PolicyInformation[] ps = new PolicyInformation[policies.Count];
|
||||
for (int i = 0; i < policies.Count; ++i)
|
||||
{
|
||||
ps[i] = PolicyInformation.GetInstance(policies[i].ToAsn1Object());
|
||||
}
|
||||
return ps;
|
||||
}
|
||||
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
Asn1EncodableVector v = new Asn1EncodableVector(certs);
|
||||
|
||||
if (policies != null)
|
||||
{
|
||||
v.Add(policies);
|
||||
}
|
||||
|
||||
return new DerSequence(v);
|
||||
}
|
||||
}
|
||||
}
|
175
iTechSharp/srcbc/asn1/esf/RevocationValues.cs
Normal file
175
iTechSharp/srcbc/asn1/esf/RevocationValues.cs
Normal file
@@ -0,0 +1,175 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
|
||||
using Org.BouncyCastle.Asn1.Ocsp;
|
||||
using Org.BouncyCastle.Asn1.X509;
|
||||
using Org.BouncyCastle.Utilities.Collections;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
/// <remarks>
|
||||
/// RFC 3126: 4.3.2 Revocation Values Attribute Definition
|
||||
/// <code>
|
||||
/// RevocationValues ::= SEQUENCE {
|
||||
/// crlVals [0] SEQUENCE OF CertificateList OPTIONAL,
|
||||
/// ocspVals [1] SEQUENCE OF BasicOCSPResponse OPTIONAL,
|
||||
/// otherRevVals [2] OtherRevVals
|
||||
/// }
|
||||
/// </code>
|
||||
/// </remarks>
|
||||
public class RevocationValues
|
||||
: Asn1Encodable
|
||||
{
|
||||
private readonly Asn1Sequence crlVals;
|
||||
private readonly Asn1Sequence ocspVals;
|
||||
private readonly OtherRevVals otherRevVals;
|
||||
|
||||
public static RevocationValues GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is RevocationValues)
|
||||
return (RevocationValues) obj;
|
||||
|
||||
if (obj is Asn1Sequence)
|
||||
return new RevocationValues((Asn1Sequence) obj);
|
||||
|
||||
throw new ArgumentException(
|
||||
"Unknown object in 'RevocationValues' factory: "
|
||||
+ obj.GetType().Name,
|
||||
"obj");
|
||||
}
|
||||
|
||||
private RevocationValues(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
if (seq == null)
|
||||
throw new ArgumentNullException("seq");
|
||||
if (seq.Count < 1 || seq.Count > 3)
|
||||
throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
|
||||
|
||||
bool otherRevValsFound = false;
|
||||
|
||||
foreach (Asn1TaggedObject taggedObj in seq)
|
||||
{
|
||||
Asn1Object asn1Obj = taggedObj.GetObject();
|
||||
switch (taggedObj.TagNo)
|
||||
{
|
||||
case 0:
|
||||
Asn1Sequence crlValsSeq = (Asn1Sequence) asn1Obj;
|
||||
foreach (Asn1Encodable ae in crlValsSeq)
|
||||
{
|
||||
CertificateList.GetInstance(ae.ToAsn1Object());
|
||||
}
|
||||
this.crlVals = crlValsSeq;
|
||||
break;
|
||||
case 1:
|
||||
Asn1Sequence ocspValsSeq = (Asn1Sequence) asn1Obj;
|
||||
foreach (Asn1Encodable ae in ocspValsSeq)
|
||||
{
|
||||
BasicOcspResponse.GetInstance(ae.ToAsn1Object());
|
||||
}
|
||||
this.ocspVals = ocspValsSeq;
|
||||
break;
|
||||
case 2:
|
||||
this.otherRevVals = OtherRevVals.GetInstance(asn1Obj);
|
||||
otherRevValsFound = true;
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentException("Illegal tag in RevocationValues", "seq");
|
||||
}
|
||||
}
|
||||
|
||||
if (!otherRevValsFound)
|
||||
throw new ArgumentException("No otherRevVals found", "seq");
|
||||
}
|
||||
|
||||
public RevocationValues(
|
||||
CertificateList[] crlVals,
|
||||
BasicOcspResponse[] ocspVals,
|
||||
OtherRevVals otherRevVals)
|
||||
{
|
||||
if (otherRevVals == null)
|
||||
throw new ArgumentNullException("otherRevVals");
|
||||
|
||||
if (crlVals != null)
|
||||
{
|
||||
this.crlVals = new DerSequence(crlVals);
|
||||
}
|
||||
|
||||
if (ocspVals != null)
|
||||
{
|
||||
this.ocspVals = new DerSequence(ocspVals);
|
||||
}
|
||||
|
||||
this.otherRevVals = otherRevVals;
|
||||
}
|
||||
|
||||
public RevocationValues(
|
||||
IEnumerable crlVals,
|
||||
IEnumerable ocspVals,
|
||||
OtherRevVals otherRevVals)
|
||||
{
|
||||
if (otherRevVals == null)
|
||||
throw new ArgumentNullException("otherRevVals");
|
||||
|
||||
if (crlVals != null)
|
||||
{
|
||||
if (!CollectionUtilities.CheckElementsAreOfType(crlVals, typeof(CertificateList)))
|
||||
throw new ArgumentException("Must contain only 'CertificateList' objects", "crlVals");
|
||||
|
||||
this.crlVals = new DerSequence(
|
||||
Asn1EncodableVector.FromEnumerable(crlVals));
|
||||
}
|
||||
|
||||
if (ocspVals != null)
|
||||
{
|
||||
if (!CollectionUtilities.CheckElementsAreOfType(ocspVals, typeof(BasicOcspResponse)))
|
||||
throw new ArgumentException("Must contain only 'BasicOcspResponse' objects", "ocspVals");
|
||||
|
||||
this.ocspVals = new DerSequence(
|
||||
Asn1EncodableVector.FromEnumerable(ocspVals));
|
||||
}
|
||||
|
||||
this.otherRevVals = otherRevVals;
|
||||
}
|
||||
|
||||
public CertificateList[] GetCrlVals()
|
||||
{
|
||||
CertificateList[] result = new CertificateList[crlVals.Count];
|
||||
for (int i = 0; i < crlVals.Count; ++i)
|
||||
{
|
||||
result[i] = CertificateList.GetInstance(crlVals[i].ToAsn1Object());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public BasicOcspResponse[] GetOcspVals()
|
||||
{
|
||||
BasicOcspResponse[] result = new BasicOcspResponse[ocspVals.Count];
|
||||
for (int i = 0; i < ocspVals.Count; ++i)
|
||||
{
|
||||
result[i] = BasicOcspResponse.GetInstance(ocspVals[i].ToAsn1Object());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
Asn1EncodableVector v = new Asn1EncodableVector();
|
||||
|
||||
if (crlVals != null)
|
||||
{
|
||||
v.Add(new DerTaggedObject(true, 0, crlVals));
|
||||
}
|
||||
|
||||
if (ocspVals != null)
|
||||
{
|
||||
v.Add(new DerTaggedObject(true, 1, ocspVals));
|
||||
}
|
||||
|
||||
v.Add(new DerTaggedObject(true, 2, otherRevVals.ToAsn1Object()));
|
||||
|
||||
return new DerSequence(v);
|
||||
}
|
||||
}
|
||||
}
|
71
iTechSharp/srcbc/asn1/esf/SigPolicyQualifierInfo.cs
Normal file
71
iTechSharp/srcbc/asn1/esf/SigPolicyQualifierInfo.cs
Normal file
@@ -0,0 +1,71 @@
|
||||
using System;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
/// <remarks>
|
||||
/// <code>
|
||||
/// SigPolicyQualifierInfo ::= SEQUENCE {
|
||||
/// sigPolicyQualifierId SigPolicyQualifierId,
|
||||
/// sigQualifier ANY DEFINED BY sigPolicyQualifierId
|
||||
/// }
|
||||
///
|
||||
/// SigPolicyQualifierId ::= OBJECT IDENTIFIER
|
||||
/// </code>
|
||||
/// </remarks>
|
||||
public class SigPolicyQualifierInfo
|
||||
: Asn1Encodable
|
||||
{
|
||||
private readonly DerObjectIdentifier sigPolicyQualifierId;
|
||||
private readonly Asn1Object sigQualifier;
|
||||
|
||||
public static SigPolicyQualifierInfo GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is SigPolicyQualifierInfo)
|
||||
return (SigPolicyQualifierInfo) obj;
|
||||
|
||||
if (obj is Asn1Sequence)
|
||||
return new SigPolicyQualifierInfo((Asn1Sequence) obj);
|
||||
|
||||
throw new ArgumentException(
|
||||
"Unknown object in 'SigPolicyQualifierInfo' factory: "
|
||||
+ obj.GetType().Name,
|
||||
"obj");
|
||||
}
|
||||
|
||||
private SigPolicyQualifierInfo(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
if (seq == null)
|
||||
throw new ArgumentNullException("seq");
|
||||
if (seq.Count != 2)
|
||||
throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
|
||||
|
||||
this.sigPolicyQualifierId = (DerObjectIdentifier) seq[0].ToAsn1Object();
|
||||
this.sigQualifier = seq[1].ToAsn1Object();
|
||||
}
|
||||
|
||||
public SigPolicyQualifierInfo(
|
||||
DerObjectIdentifier sigPolicyQualifierId,
|
||||
Asn1Encodable sigQualifier)
|
||||
{
|
||||
this.sigPolicyQualifierId = sigPolicyQualifierId;
|
||||
this.sigQualifier = sigQualifier.ToAsn1Object();
|
||||
}
|
||||
|
||||
public DerObjectIdentifier SigPolicyQualifierId
|
||||
{
|
||||
get { return sigPolicyQualifierId; }
|
||||
}
|
||||
|
||||
public Asn1Object SigQualifier
|
||||
{
|
||||
get { return sigQualifier; }
|
||||
}
|
||||
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
return new DerSequence(sigPolicyQualifierId, sigQualifier);
|
||||
}
|
||||
}
|
||||
}
|
145
iTechSharp/srcbc/asn1/esf/SignaturePolicyId.cs
Normal file
145
iTechSharp/srcbc/asn1/esf/SignaturePolicyId.cs
Normal file
@@ -0,0 +1,145 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
|
||||
using Org.BouncyCastle.Utilities.Collections;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
/// <remarks>
|
||||
/// <code>
|
||||
/// SignaturePolicyId ::= SEQUENCE {
|
||||
/// sigPolicyIdentifier SigPolicyId,
|
||||
/// sigPolicyHash SigPolicyHash,
|
||||
/// sigPolicyQualifiers SEQUENCE SIZE (1..MAX) OF SigPolicyQualifierInfo OPTIONAL
|
||||
/// }
|
||||
///
|
||||
/// SigPolicyId ::= OBJECT IDENTIFIER
|
||||
///
|
||||
/// SigPolicyHash ::= OtherHashAlgAndValue
|
||||
/// </code>
|
||||
/// </remarks>
|
||||
public class SignaturePolicyId
|
||||
: Asn1Encodable
|
||||
{
|
||||
private readonly DerObjectIdentifier sigPolicyIdentifier;
|
||||
private readonly OtherHashAlgAndValue sigPolicyHash;
|
||||
private readonly Asn1Sequence sigPolicyQualifiers;
|
||||
|
||||
public static SignaturePolicyId GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is SignaturePolicyId)
|
||||
return (SignaturePolicyId) obj;
|
||||
|
||||
if (obj is Asn1Sequence)
|
||||
return new SignaturePolicyId((Asn1Sequence) obj);
|
||||
|
||||
throw new ArgumentException(
|
||||
"Unknown object in 'SignaturePolicyId' factory: "
|
||||
+ obj.GetType().Name,
|
||||
"obj");
|
||||
}
|
||||
|
||||
private SignaturePolicyId(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
if (seq == null)
|
||||
throw new ArgumentNullException("seq");
|
||||
if (seq.Count < 2 || seq.Count > 3)
|
||||
throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
|
||||
|
||||
this.sigPolicyIdentifier = (DerObjectIdentifier) seq[0].ToAsn1Object();
|
||||
this.sigPolicyHash = OtherHashAlgAndValue.GetInstance(seq[1].ToAsn1Object());
|
||||
|
||||
if (seq.Count > 2)
|
||||
{
|
||||
this.sigPolicyQualifiers = (Asn1Sequence) seq[2].ToAsn1Object();
|
||||
}
|
||||
}
|
||||
|
||||
public SignaturePolicyId(
|
||||
DerObjectIdentifier sigPolicyIdentifier,
|
||||
OtherHashAlgAndValue sigPolicyHash)
|
||||
: this(sigPolicyIdentifier, sigPolicyHash, null)
|
||||
{
|
||||
}
|
||||
|
||||
public SignaturePolicyId(
|
||||
DerObjectIdentifier sigPolicyIdentifier,
|
||||
OtherHashAlgAndValue sigPolicyHash,
|
||||
params SigPolicyQualifierInfo[] sigPolicyQualifiers)
|
||||
{
|
||||
if (sigPolicyIdentifier == null)
|
||||
throw new ArgumentNullException("sigPolicyIdentifier");
|
||||
if (sigPolicyHash == null)
|
||||
throw new ArgumentNullException("sigPolicyHash");
|
||||
|
||||
this.sigPolicyIdentifier = sigPolicyIdentifier;
|
||||
this.sigPolicyHash = sigPolicyHash;
|
||||
|
||||
if (sigPolicyQualifiers != null)
|
||||
{
|
||||
this.sigPolicyQualifiers = new DerSequence(sigPolicyQualifiers);
|
||||
}
|
||||
}
|
||||
|
||||
public SignaturePolicyId(
|
||||
DerObjectIdentifier sigPolicyIdentifier,
|
||||
OtherHashAlgAndValue sigPolicyHash,
|
||||
IEnumerable sigPolicyQualifiers)
|
||||
{
|
||||
if (sigPolicyIdentifier == null)
|
||||
throw new ArgumentNullException("sigPolicyIdentifier");
|
||||
if (sigPolicyHash == null)
|
||||
throw new ArgumentNullException("sigPolicyHash");
|
||||
|
||||
this.sigPolicyIdentifier = sigPolicyIdentifier;
|
||||
this.sigPolicyHash = sigPolicyHash;
|
||||
|
||||
if (sigPolicyQualifiers != null)
|
||||
{
|
||||
if (!CollectionUtilities.CheckElementsAreOfType(sigPolicyQualifiers, typeof(SigPolicyQualifierInfo)))
|
||||
throw new ArgumentException("Must contain only 'SigPolicyQualifierInfo' objects", "sigPolicyQualifiers");
|
||||
|
||||
this.sigPolicyQualifiers = new DerSequence(
|
||||
Asn1EncodableVector.FromEnumerable(sigPolicyQualifiers));
|
||||
}
|
||||
}
|
||||
|
||||
public DerObjectIdentifier SigPolicyIdentifier
|
||||
{
|
||||
get { return sigPolicyIdentifier; }
|
||||
}
|
||||
|
||||
public OtherHashAlgAndValue SigPolicyHash
|
||||
{
|
||||
get { return sigPolicyHash; }
|
||||
}
|
||||
|
||||
public SigPolicyQualifierInfo[] GetSigPolicyQualifiers()
|
||||
{
|
||||
if (sigPolicyQualifiers == null)
|
||||
return null;
|
||||
|
||||
SigPolicyQualifierInfo[] infos = new SigPolicyQualifierInfo[sigPolicyQualifiers.Count];
|
||||
for (int i = 0; i < sigPolicyQualifiers.Count; ++i)
|
||||
{
|
||||
infos[i] = SigPolicyQualifierInfo.GetInstance(sigPolicyQualifiers[i]);
|
||||
}
|
||||
return infos;
|
||||
}
|
||||
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
Asn1EncodableVector v = new Asn1EncodableVector(
|
||||
sigPolicyIdentifier, sigPolicyHash.ToAsn1Object());
|
||||
|
||||
if (sigPolicyQualifiers != null)
|
||||
{
|
||||
v.Add(sigPolicyQualifiers.ToAsn1Object());
|
||||
}
|
||||
|
||||
return new DerSequence(v);
|
||||
}
|
||||
}
|
||||
}
|
65
iTechSharp/srcbc/asn1/esf/SignaturePolicyIdentifier.cs
Normal file
65
iTechSharp/srcbc/asn1/esf/SignaturePolicyIdentifier.cs
Normal file
@@ -0,0 +1,65 @@
|
||||
using System;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
/// <remarks>
|
||||
/// <code>
|
||||
/// SignaturePolicyIdentifier ::= CHOICE {
|
||||
/// SignaturePolicyId SignaturePolicyId,
|
||||
/// SignaturePolicyImplied SignaturePolicyImplied
|
||||
/// }
|
||||
///
|
||||
/// SignaturePolicyImplied ::= NULL
|
||||
/// </code>
|
||||
/// </remarks>
|
||||
public class SignaturePolicyIdentifier
|
||||
: Asn1Encodable
|
||||
//, Asn1Choice
|
||||
{
|
||||
private readonly SignaturePolicyId sigPolicy;
|
||||
|
||||
public static SignaturePolicyIdentifier GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is SignaturePolicyIdentifier)
|
||||
return (SignaturePolicyIdentifier) obj;
|
||||
|
||||
if (obj is SignaturePolicyId)
|
||||
return new SignaturePolicyIdentifier((SignaturePolicyId) obj);
|
||||
|
||||
if (obj is Asn1Null)
|
||||
return new SignaturePolicyIdentifier();
|
||||
|
||||
throw new ArgumentException(
|
||||
"Unknown object in 'SignaturePolicyIdentifier' factory: "
|
||||
+ obj.GetType().Name,
|
||||
"obj");
|
||||
}
|
||||
|
||||
public SignaturePolicyIdentifier()
|
||||
{
|
||||
this.sigPolicy = null;
|
||||
}
|
||||
|
||||
public SignaturePolicyIdentifier(
|
||||
SignaturePolicyId signaturePolicyId)
|
||||
{
|
||||
if (signaturePolicyId == null)
|
||||
throw new ArgumentNullException("signaturePolicyId");
|
||||
|
||||
this.sigPolicy = signaturePolicyId;
|
||||
}
|
||||
|
||||
public SignaturePolicyId SignaturePolicyId
|
||||
{
|
||||
get { return sigPolicy; }
|
||||
}
|
||||
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
return sigPolicy == null
|
||||
? DerNull.Instance
|
||||
: sigPolicy.ToAsn1Object();
|
||||
}
|
||||
}
|
||||
}
|
144
iTechSharp/srcbc/asn1/esf/SignerLocation.cs
Normal file
144
iTechSharp/srcbc/asn1/esf/SignerLocation.cs
Normal file
@@ -0,0 +1,144 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
|
||||
using Org.BouncyCastle.Asn1;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Esf
|
||||
{
|
||||
/**
|
||||
* Signer-Location attribute (RFC3126).
|
||||
*
|
||||
* <pre>
|
||||
* SignerLocation ::= SEQUENCE {
|
||||
* countryName [0] DirectoryString OPTIONAL,
|
||||
* localityName [1] DirectoryString OPTIONAL,
|
||||
* postalAddress [2] PostalAddress OPTIONAL }
|
||||
*
|
||||
* PostalAddress ::= SEQUENCE SIZE(1..6) OF DirectoryString
|
||||
* </pre>
|
||||
*/
|
||||
public class SignerLocation
|
||||
: Asn1Encodable
|
||||
{
|
||||
// TODO Should these be using DirectoryString?
|
||||
private DerUtf8String countryName;
|
||||
private DerUtf8String localityName;
|
||||
private Asn1Sequence postalAddress;
|
||||
|
||||
public SignerLocation(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
foreach (Asn1TaggedObject obj in seq)
|
||||
{
|
||||
switch (obj.TagNo)
|
||||
{
|
||||
case 0:
|
||||
this.countryName = DerUtf8String.GetInstance(obj, true);
|
||||
break;
|
||||
case 1:
|
||||
this.localityName = DerUtf8String.GetInstance(obj, true);
|
||||
break;
|
||||
case 2:
|
||||
bool isExplicit = obj.IsExplicit(); // handle erroneous implicitly tagged sequences
|
||||
this.postalAddress = Asn1Sequence.GetInstance(obj, isExplicit);
|
||||
if (postalAddress != null && postalAddress.Count > 6)
|
||||
throw new ArgumentException("postal address must contain less than 6 strings");
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentException("illegal tag");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public SignerLocation(
|
||||
DerUtf8String countryName,
|
||||
DerUtf8String localityName,
|
||||
Asn1Sequence postalAddress)
|
||||
{
|
||||
if (postalAddress != null && postalAddress.Count > 6)
|
||||
{
|
||||
throw new ArgumentException("postal address must contain less than 6 strings");
|
||||
}
|
||||
|
||||
if (countryName != null)
|
||||
{
|
||||
this.countryName = DerUtf8String.GetInstance(countryName.ToAsn1Object());
|
||||
}
|
||||
|
||||
if (localityName != null)
|
||||
{
|
||||
this.localityName = DerUtf8String.GetInstance(localityName.ToAsn1Object());
|
||||
}
|
||||
|
||||
if (postalAddress != null)
|
||||
{
|
||||
this.postalAddress = (Asn1Sequence) postalAddress.ToAsn1Object();
|
||||
}
|
||||
}
|
||||
|
||||
public static SignerLocation GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj == null || obj is SignerLocation)
|
||||
{
|
||||
return (SignerLocation) obj;
|
||||
}
|
||||
|
||||
return new SignerLocation(Asn1Sequence.GetInstance(obj));
|
||||
}
|
||||
|
||||
public DerUtf8String CountryName
|
||||
{
|
||||
get { return countryName; }
|
||||
}
|
||||
|
||||
public DerUtf8String LocalityName
|
||||
{
|
||||
get { return localityName; }
|
||||
}
|
||||
|
||||
public Asn1Sequence PostalAddress
|
||||
{
|
||||
get { return postalAddress; }
|
||||
}
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* SignerLocation ::= SEQUENCE {
|
||||
* countryName [0] DirectoryString OPTIONAL,
|
||||
* localityName [1] DirectoryString OPTIONAL,
|
||||
* postalAddress [2] PostalAddress OPTIONAL }
|
||||
*
|
||||
* PostalAddress ::= SEQUENCE SIZE(1..6) OF DirectoryString
|
||||
*
|
||||
* DirectoryString ::= CHOICE {
|
||||
* teletexString TeletexString (SIZE (1..MAX)),
|
||||
* printableString PrintableString (SIZE (1..MAX)),
|
||||
* universalString UniversalString (SIZE (1..MAX)),
|
||||
* utf8String UTF8String (SIZE (1.. MAX)),
|
||||
* bmpString BMPString (SIZE (1..MAX)) }
|
||||
* </pre>
|
||||
*/
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
Asn1EncodableVector v = new Asn1EncodableVector();
|
||||
|
||||
if (countryName != null)
|
||||
{
|
||||
v.Add(new DerTaggedObject(true, 0, countryName));
|
||||
}
|
||||
|
||||
if (localityName != null)
|
||||
{
|
||||
v.Add(new DerTaggedObject(true, 1, localityName));
|
||||
}
|
||||
|
||||
if (postalAddress != null)
|
||||
{
|
||||
v.Add(new DerTaggedObject(true, 2, postalAddress));
|
||||
}
|
||||
|
||||
return new DerSequence(v);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user