Initial Commit
This commit is contained in:
73
iTechSharp/srcbc/asn1/cmp/PKIFailureInfo.cs
Normal file
73
iTechSharp/srcbc/asn1/cmp/PKIFailureInfo.cs
Normal file
@@ -0,0 +1,73 @@
|
||||
using System;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Cmp
|
||||
{
|
||||
/**
|
||||
* <pre>
|
||||
* PKIFailureInfo ::= BIT STRING {
|
||||
* badAlg (0),
|
||||
* -- unrecognized or unsupported Algorithm Identifier
|
||||
* badMessageCheck (1), -- integrity check failed (e.g., signature did not verify)
|
||||
* badRequest (2),
|
||||
* -- transaction not permitted or supported
|
||||
* badTime (3), -- messageTime was not sufficiently close to the system time, as defined by local policy
|
||||
* badCertId (4), -- no certificate could be found matching the provided criteria
|
||||
* badDataFormat (5),
|
||||
* -- the data submitted has the wrong format
|
||||
* wrongAuthority (6), -- the authority indicated in the request is different from the one creating the response token
|
||||
* incorrectData (7), -- the requester's data is incorrect (for notary services)
|
||||
* missingTimeStamp (8), -- when the timestamp is missing but should be there (by policy)
|
||||
* badPOP (9) -- the proof-of-possession failed
|
||||
* timeNotAvailable (14),
|
||||
* -- the TSA's time source is not available
|
||||
* unacceptedPolicy (15),
|
||||
* -- the requested TSA policy is not supported by the TSA
|
||||
* unacceptedExtension (16),
|
||||
* -- the requested extension is not supported by the TSA
|
||||
* addInfoNotAvailable (17)
|
||||
* -- the additional information requested could not be understood
|
||||
* -- or is not available
|
||||
* systemFailure (25)
|
||||
* -- the request cannot be handled due to system failure
|
||||
* </pre>
|
||||
*/
|
||||
public class PkiFailureInfo
|
||||
: DerBitString
|
||||
{
|
||||
public const int BadAlg = (1 << 7); // unrecognized or unsupported Algorithm Identifier
|
||||
public const int BadMessageCheck = (1 << 6); // integrity check failed (e.g., signature did not verify)
|
||||
public const int BadRequest = (1 << 5);
|
||||
public const int BadTime = (1 << 4); // -- messageTime was not sufficiently close to the system time, as defined by local policy
|
||||
public const int BadCertId = (1 << 3); // no certificate could be found matching the provided criteria
|
||||
public const int BadDataFormat = (1 << 2);
|
||||
public const int WrongAuthority = (1 << 1); // the authority indicated in the request is different from the one creating the response token
|
||||
public const int IncorrectData = 1; // the requester's data is incorrect (for notary services)
|
||||
public const int MissingTimeStamp = (1 << 15); // when the timestamp is missing but should be there (by policy)
|
||||
public const int BadPop = (1 << 14); // the proof-of-possession failed
|
||||
public const int TimeNotAvailable = (1 << 9); // the TSA's time source is not available
|
||||
public const int UnacceptedPolicy = (1 << 8); // the requested TSA policy is not supported by the TSA
|
||||
public const int UnacceptedExtension = (1 << 23); //the requested extension is not supported by the TSA
|
||||
public const int AddInfoNotAvailable = (1 << 22); //the additional information requested could not be understood or is not available
|
||||
public const int SystemFailure = (1 << 30); //the request cannot be handled due to system failure
|
||||
|
||||
/**
|
||||
* Basic constructor.
|
||||
*/
|
||||
public PkiFailureInfo(
|
||||
int info)
|
||||
: base(GetBytes(info), GetPadBits(info))
|
||||
{
|
||||
}
|
||||
|
||||
public PkiFailureInfo(
|
||||
DerBitString info)
|
||||
: base(info.GetBytes(), info.PadBits)
|
||||
{
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return "PkiFailureInfo: 0x" + this.IntValue.ToString("X");
|
||||
}
|
||||
}
|
||||
}
|
97
iTechSharp/srcbc/asn1/cmp/PKIFreeText.cs
Normal file
97
iTechSharp/srcbc/asn1/cmp/PKIFreeText.cs
Normal file
@@ -0,0 +1,97 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Cmp
|
||||
{
|
||||
public class PkiFreeText
|
||||
: Asn1Encodable
|
||||
{
|
||||
internal Asn1Sequence strings;
|
||||
|
||||
public static PkiFreeText GetInstance(
|
||||
Asn1TaggedObject obj,
|
||||
bool isExplicit)
|
||||
{
|
||||
return GetInstance(Asn1Sequence.GetInstance(obj, isExplicit));
|
||||
}
|
||||
|
||||
public static PkiFreeText GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj is PkiFreeText)
|
||||
{
|
||||
return (PkiFreeText)obj;
|
||||
}
|
||||
else if (obj is Asn1Sequence)
|
||||
{
|
||||
return new PkiFreeText((Asn1Sequence)obj);
|
||||
}
|
||||
|
||||
throw new ArgumentException("Unknown object in factory: " + obj.GetType().Name, "obj");
|
||||
}
|
||||
|
||||
public PkiFreeText(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
foreach (object o in seq)
|
||||
{
|
||||
if (!(o is DerUtf8String))
|
||||
{
|
||||
throw new ArgumentException("attempt to insert non UTF8 STRING into PkiFreeText");
|
||||
}
|
||||
}
|
||||
|
||||
this.strings = seq;
|
||||
}
|
||||
|
||||
public PkiFreeText(
|
||||
DerUtf8String p)
|
||||
{
|
||||
strings = new DerSequence(p);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the number of string elements present.
|
||||
*
|
||||
* @return number of elements present.
|
||||
*/
|
||||
[Obsolete("Use 'Count' property instead")]
|
||||
public int Size
|
||||
{
|
||||
get { return strings.Count; }
|
||||
}
|
||||
|
||||
public int Count
|
||||
{
|
||||
get { return strings.Count; }
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the UTF8STRING at index.
|
||||
*
|
||||
* @param index index of the string of interest
|
||||
* @return the string at index.
|
||||
*/
|
||||
public DerUtf8String this[int index]
|
||||
{
|
||||
get { return (DerUtf8String) strings[index]; }
|
||||
}
|
||||
|
||||
[Obsolete("Use 'object[index]' syntax instead")]
|
||||
public DerUtf8String GetStringAt(
|
||||
int index)
|
||||
{
|
||||
return this[index];
|
||||
}
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* PkiFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String
|
||||
* </pre>
|
||||
*/
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
return strings;
|
||||
}
|
||||
}
|
||||
}
|
14
iTechSharp/srcbc/asn1/cmp/PKIStatus.cs
Normal file
14
iTechSharp/srcbc/asn1/cmp/PKIStatus.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
using System;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Cmp
|
||||
{
|
||||
public enum PkiStatus
|
||||
{
|
||||
Granted = 0,
|
||||
GrantedWithMods = 1,
|
||||
Rejection = 2,
|
||||
Waiting = 3,
|
||||
RevocationWarning = 4,
|
||||
RevocationNotification = 5,
|
||||
}
|
||||
}
|
165
iTechSharp/srcbc/asn1/cmp/PKIStatusInfo.cs
Normal file
165
iTechSharp/srcbc/asn1/cmp/PKIStatusInfo.cs
Normal file
@@ -0,0 +1,165 @@
|
||||
using System;
|
||||
|
||||
using Org.BouncyCastle.Math;
|
||||
|
||||
namespace Org.BouncyCastle.Asn1.Cmp
|
||||
{
|
||||
public class PkiStatusInfo
|
||||
: Asn1Encodable
|
||||
{
|
||||
DerInteger status;
|
||||
PkiFreeText statusString;
|
||||
DerBitString failInfo;
|
||||
|
||||
public static PkiStatusInfo GetInstance(
|
||||
Asn1TaggedObject obj,
|
||||
bool isExplicit)
|
||||
{
|
||||
return GetInstance(Asn1Sequence.GetInstance(obj, isExplicit));
|
||||
}
|
||||
|
||||
public static PkiStatusInfo GetInstance(
|
||||
object obj)
|
||||
{
|
||||
if (obj is PkiStatusInfo)
|
||||
{
|
||||
return (PkiStatusInfo)obj;
|
||||
}
|
||||
else if (obj is Asn1Sequence)
|
||||
{
|
||||
return new PkiStatusInfo((Asn1Sequence)obj);
|
||||
}
|
||||
|
||||
throw new ArgumentException("Unknown object in factory: " + obj.GetType().Name, "obj");
|
||||
}
|
||||
|
||||
public PkiStatusInfo(
|
||||
Asn1Sequence seq)
|
||||
{
|
||||
this.status = DerInteger.GetInstance(seq[0]);
|
||||
|
||||
this.statusString = null;
|
||||
this.failInfo = null;
|
||||
|
||||
if (seq.Count > 2)
|
||||
{
|
||||
this.statusString = PkiFreeText.GetInstance(seq[1]);
|
||||
this.failInfo = DerBitString.GetInstance(seq[2]);
|
||||
}
|
||||
else if (seq.Count > 1)
|
||||
{
|
||||
object obj = seq[1];
|
||||
if (obj is DerBitString)
|
||||
{
|
||||
this.failInfo = DerBitString.GetInstance(obj);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.statusString = PkiFreeText.GetInstance(obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param status
|
||||
*/
|
||||
public PkiStatusInfo(int status)
|
||||
{
|
||||
this.status = new DerInteger(status);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param status
|
||||
* @param statusString
|
||||
*/
|
||||
public PkiStatusInfo(
|
||||
int status,
|
||||
PkiFreeText statusString)
|
||||
{
|
||||
this.status = new DerInteger(status);
|
||||
this.statusString = statusString;
|
||||
}
|
||||
|
||||
public PkiStatusInfo(
|
||||
int status,
|
||||
PkiFreeText statusString,
|
||||
PkiFailureInfo failInfo)
|
||||
{
|
||||
this.status = new DerInteger(status);
|
||||
this.statusString = statusString;
|
||||
this.failInfo = failInfo;
|
||||
}
|
||||
|
||||
public BigInteger Status
|
||||
{
|
||||
get
|
||||
{
|
||||
return status.Value;
|
||||
}
|
||||
}
|
||||
|
||||
public PkiFreeText StatusString
|
||||
{
|
||||
get
|
||||
{
|
||||
return statusString;
|
||||
}
|
||||
}
|
||||
|
||||
public DerBitString FailInfo
|
||||
{
|
||||
get
|
||||
{
|
||||
return failInfo;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* PkiStatusInfo ::= SEQUENCE {
|
||||
* status PKIStatus, (INTEGER)
|
||||
* statusString PkiFreeText OPTIONAL,
|
||||
* failInfo PkiFailureInfo OPTIONAL (BIT STRING)
|
||||
* }
|
||||
*
|
||||
* PKIStatus:
|
||||
* granted (0), -- you got exactly what you asked for
|
||||
* grantedWithMods (1), -- you got something like what you asked for
|
||||
* rejection (2), -- you don't get it, more information elsewhere in the message
|
||||
* waiting (3), -- the request body part has not yet been processed, expect to hear more later
|
||||
* revocationWarning (4), -- this message contains a warning that a revocation is imminent
|
||||
* revocationNotification (5), -- notification that a revocation has occurred
|
||||
* keyUpdateWarning (6) -- update already done for the oldCertId specified in CertReqMsg
|
||||
*
|
||||
* PkiFailureInfo:
|
||||
* badAlg (0), -- unrecognized or unsupported Algorithm Identifier
|
||||
* badMessageCheck (1), -- integrity check failed (e.g., signature did not verify)
|
||||
* badRequest (2), -- transaction not permitted or supported
|
||||
* badTime (3), -- messageTime was not sufficiently close to the system time, as defined by local policy
|
||||
* badCertId (4), -- no certificate could be found matching the provided criteria
|
||||
* badDataFormat (5), -- the data submitted has the wrong format
|
||||
* wrongAuthority (6), -- the authority indicated in the request is different from the one creating the response token
|
||||
* incorrectData (7), -- the requester's data is incorrect (for notary services)
|
||||
* missingTimeStamp (8), -- when the timestamp is missing but should be there (by policy)
|
||||
* badPOP (9) -- the proof-of-possession failed
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
Asn1EncodableVector v = new Asn1EncodableVector(status);
|
||||
|
||||
if (statusString != null)
|
||||
{
|
||||
v.Add(statusString);
|
||||
}
|
||||
|
||||
if (failInfo!= null)
|
||||
{
|
||||
v.Add(failInfo);
|
||||
}
|
||||
|
||||
return new DerSequence(v);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user