This commit is contained in:
2026-06-15 18:18:16 +08:00
parent 97c9fba14e
commit 2b9f134e5f
4164 changed files with 386922 additions and 79 deletions

View File

@@ -0,0 +1,111 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Utilities;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Ocsp
{
public class BasicOcspResponse
: Asn1Encodable
{
private readonly ResponseData tbsResponseData;
private readonly AlgorithmIdentifier signatureAlgorithm;
private readonly DerBitString signature;
private readonly Asn1Sequence certs;
public static BasicOcspResponse GetInstance(
Asn1TaggedObject obj,
bool explicitly)
{
return GetInstance(Asn1Sequence.GetInstance(obj, explicitly));
}
public static BasicOcspResponse GetInstance(
object obj)
{
if (obj == null || obj is BasicOcspResponse)
{
return (BasicOcspResponse)obj;
}
if (obj is Asn1Sequence)
{
return new BasicOcspResponse((Asn1Sequence)obj);
}
throw new ArgumentException("unknown object in factory: " + Org.BouncyCastle.Utilities.Platform.GetTypeName(obj), "obj");
}
public BasicOcspResponse(
ResponseData tbsResponseData,
AlgorithmIdentifier signatureAlgorithm,
DerBitString signature,
Asn1Sequence certs)
{
this.tbsResponseData = tbsResponseData;
this.signatureAlgorithm = signatureAlgorithm;
this.signature = signature;
this.certs = certs;
}
private BasicOcspResponse(
Asn1Sequence seq)
{
this.tbsResponseData = ResponseData.GetInstance(seq[0]);
this.signatureAlgorithm = AlgorithmIdentifier.GetInstance(seq[1]);
this.signature = (DerBitString)seq[2];
if (seq.Count > 3)
{
this.certs = Asn1Sequence.GetInstance((Asn1TaggedObject)seq[3], true);
}
}
public ResponseData TbsResponseData
{
get { return tbsResponseData; }
}
public AlgorithmIdentifier SignatureAlgorithm
{
get { return signatureAlgorithm; }
}
public DerBitString Signature
{
get { return signature; }
}
public byte[] GetSignatureOctets()
{
return signature.GetOctets();
}
public Asn1Sequence Certs
{
get { return certs; }
}
/**
* Produce an object suitable for an Asn1OutputStream.
* <pre>
* BasicOcspResponse ::= Sequence {
* tbsResponseData ResponseData,
* signatureAlgorithm AlgorithmIdentifier,
* signature BIT STRING,
* certs [0] EXPLICIT Sequence OF Certificate OPTIONAL }
* </pre>
*/
public override Asn1Object ToAsn1Object()
{
Asn1EncodableVector v = new Asn1EncodableVector(tbsResponseData, signatureAlgorithm, signature);
v.AddOptionalTagged(true, 0, certs);
return new DerSequence(v);
}
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a78e148fa5ffe994ca6bb04d921c50ba
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,103 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Utilities;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Ocsp
{
public class CertID
: Asn1Encodable
{
private readonly AlgorithmIdentifier hashAlgorithm;
private readonly Asn1OctetString issuerNameHash;
private readonly Asn1OctetString issuerKeyHash;
private readonly DerInteger serialNumber;
public static CertID GetInstance(
Asn1TaggedObject obj,
bool explicitly)
{
return GetInstance(Asn1Sequence.GetInstance(obj, explicitly));
}
public static CertID GetInstance(
object obj)
{
if (obj == null || obj is CertID)
{
return (CertID)obj;
}
if (obj is Asn1Sequence)
{
return new CertID((Asn1Sequence)obj);
}
throw new ArgumentException("unknown object in factory: " + Org.BouncyCastle.Utilities.Platform.GetTypeName(obj), "obj");
}
public CertID(
AlgorithmIdentifier hashAlgorithm,
Asn1OctetString issuerNameHash,
Asn1OctetString issuerKeyHash,
DerInteger serialNumber)
{
this.hashAlgorithm = hashAlgorithm;
this.issuerNameHash = issuerNameHash;
this.issuerKeyHash = issuerKeyHash;
this.serialNumber = serialNumber;
}
private CertID(
Asn1Sequence seq)
{
if (seq.Count != 4)
throw new ArgumentException("Wrong number of elements in sequence", "seq");
this.hashAlgorithm = AlgorithmIdentifier.GetInstance(seq[0]);
this.issuerNameHash = Asn1OctetString.GetInstance(seq[1]);
this.issuerKeyHash = Asn1OctetString.GetInstance(seq[2]);
this.serialNumber = DerInteger.GetInstance(seq[3]);
}
public AlgorithmIdentifier HashAlgorithm
{
get { return hashAlgorithm; }
}
public Asn1OctetString IssuerNameHash
{
get { return issuerNameHash; }
}
public Asn1OctetString IssuerKeyHash
{
get { return issuerKeyHash; }
}
public DerInteger SerialNumber
{
get { return serialNumber; }
}
/**
* Produce an object suitable for an Asn1OutputStream.
* <pre>
* CertID ::= Sequence {
* hashAlgorithm AlgorithmIdentifier,
* issuerNameHash OCTET STRING, -- Hash of Issuer's DN
* issuerKeyHash OCTET STRING, -- Hash of Issuers public key
* serialNumber CertificateSerialNumber }
* </pre>
*/
public override Asn1Object ToAsn1Object()
{
return new DerSequence(hashAlgorithm, issuerNameHash, issuerKeyHash, serialNumber);
}
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 7bd00837f4fea0643a1b2ebd06c721b3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,101 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Utilities;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Ocsp
{
public class CertStatus
: Asn1Encodable, IAsn1Choice
{
private readonly int tagNo;
private readonly Asn1Encodable value;
/**
* create a CertStatus object with a tag of zero.
*/
public CertStatus()
{
tagNo = 0;
value = DerNull.Instance;
}
public CertStatus(
RevokedInfo info)
{
tagNo = 1;
value = info;
}
public CertStatus(
int tagNo,
Asn1Encodable value)
{
this.tagNo = tagNo;
this.value = value;
}
public CertStatus(Asn1TaggedObject choice)
{
this.tagNo = choice.TagNo;
switch (choice.TagNo)
{
case 0:
value = Asn1Null.GetInstance(choice, false);
break;
case 1:
value = RevokedInfo.GetInstance(choice, false);
break;
case 2:
value = Asn1Null.GetInstance(choice, false);
break;
default:
throw new ArgumentException("Unknown tag encountered: " + Asn1Utilities.GetTagText(choice));
}
}
public static CertStatus GetInstance(
object obj)
{
if (obj == null || obj is CertStatus)
{
return (CertStatus)obj;
}
if (obj is Asn1TaggedObject)
{
return new CertStatus((Asn1TaggedObject)obj);
}
throw new ArgumentException("unknown object in factory: " + Org.BouncyCastle.Utilities.Platform.GetTypeName(obj), "obj");
}
public int TagNo
{
get { return tagNo; }
}
public Asn1Encodable Status
{
get { return value; }
}
/**
* Produce an object suitable for an Asn1OutputStream.
* <pre>
* CertStatus ::= CHOICE {
* good [0] IMPLICIT Null,
* revoked [1] IMPLICIT RevokedInfo,
* unknown [2] IMPLICIT UnknownInfo }
* </pre>
*/
public override Asn1Object ToAsn1Object()
{
return new DerTaggedObject(false, tagNo, value);
}
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 4d3ba235321f4a0499f25d3aaca6e1ad
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,71 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Ocsp
{
public class CrlID
: Asn1Encodable
{
private readonly DerIA5String crlUrl;
private readonly DerInteger crlNum;
private readonly Asn1GeneralizedTime crlTime;
// TODO Add GetInstance method(s) and make this private?
public CrlID(Asn1Sequence seq)
{
foreach (Asn1TaggedObject o in seq)
{
switch (o.TagNo)
{
case 0:
crlUrl = DerIA5String.GetInstance(o, true);
break;
case 1:
crlNum = DerInteger.GetInstance(o, true);
break;
case 2:
crlTime = Asn1GeneralizedTime.GetInstance(o, true);
break;
default:
throw new ArgumentException("unknown tag number: " + o.TagNo);
}
}
}
public DerIA5String CrlUrl
{
get { return crlUrl; }
}
public DerInteger CrlNum
{
get { return crlNum; }
}
public Asn1GeneralizedTime CrlTime
{
get { return crlTime; }
}
/**
* Produce an object suitable for an Asn1OutputStream.
* <pre>
* CrlID ::= Sequence {
* crlUrl [0] EXPLICIT IA5String OPTIONAL,
* crlNum [1] EXPLICIT Integer OPTIONAL,
* crlTime [2] EXPLICIT GeneralizedTime OPTIONAL }
* </pre>
*/
public override Asn1Object ToAsn1Object()
{
Asn1EncodableVector v = new Asn1EncodableVector();
v.AddOptionalTagged(true, 0, crlUrl);
v.AddOptionalTagged(true, 1, crlNum);
v.AddOptionalTagged(true, 2, crlTime);
return new DerSequence(v);
}
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9a270ddb13f9b024e8328f62d7a75ede
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,27 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Ocsp
{
public abstract class OcspObjectIdentifiers
{
internal const string PkixOcspId = "1.3.6.1.5.5.7.48.1";
public static readonly DerObjectIdentifier PkixOcsp = new DerObjectIdentifier(PkixOcspId);
public static readonly DerObjectIdentifier PkixOcspBasic = new DerObjectIdentifier(PkixOcspId + ".1");
//
// extensions
//
public static readonly DerObjectIdentifier PkixOcspNonce = new DerObjectIdentifier(PkixOcsp + ".2");
public static readonly DerObjectIdentifier PkixOcspCrl = new DerObjectIdentifier(PkixOcsp + ".3");
public static readonly DerObjectIdentifier PkixOcspResponse = new DerObjectIdentifier(PkixOcsp + ".4");
public static readonly DerObjectIdentifier PkixOcspNocheck = new DerObjectIdentifier(PkixOcsp + ".5");
public static readonly DerObjectIdentifier PkixOcspArchiveCutoff = new DerObjectIdentifier(PkixOcsp + ".6");
public static readonly DerObjectIdentifier PkixOcspServiceLocator = new DerObjectIdentifier(PkixOcsp + ".7");
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 3cdf3f483bd239a438f365b5c7116bfd
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,88 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Utilities;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Ocsp
{
public class OcspRequest
: Asn1Encodable
{
private readonly TbsRequest tbsRequest;
private readonly Signature optionalSignature;
public static OcspRequest GetInstance(
Asn1TaggedObject obj,
bool explicitly)
{
return GetInstance(Asn1Sequence.GetInstance(obj, explicitly));
}
public static OcspRequest GetInstance(
object obj)
{
if (obj == null || obj is OcspRequest)
{
return (OcspRequest)obj;
}
if (obj is Asn1Sequence)
{
return new OcspRequest((Asn1Sequence)obj);
}
throw new ArgumentException("unknown object in factory: " + Org.BouncyCastle.Utilities.Platform.GetTypeName(obj), "obj");
}
public OcspRequest(
TbsRequest tbsRequest,
Signature optionalSignature)
{
if (tbsRequest == null)
throw new ArgumentNullException("tbsRequest");
this.tbsRequest = tbsRequest;
this.optionalSignature = optionalSignature;
}
private OcspRequest(
Asn1Sequence seq)
{
tbsRequest = TbsRequest.GetInstance(seq[0]);
if (seq.Count == 2)
{
optionalSignature = Signature.GetInstance(
(Asn1TaggedObject)seq[1], true);
}
}
public TbsRequest TbsRequest
{
get { return tbsRequest; }
}
public Signature OptionalSignature
{
get { return optionalSignature; }
}
/**
* Produce an object suitable for an Asn1OutputStream.
* <pre>
* OcspRequest ::= Sequence {
* tbsRequest TBSRequest,
* optionalSignature [0] EXPLICIT Signature OPTIONAL }
* </pre>
*/
public override Asn1Object ToAsn1Object()
{
Asn1EncodableVector v = new Asn1EncodableVector(tbsRequest);
v.AddOptionalTagged(true, 0, optionalSignature);
return new DerSequence(v);
}
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 0f00ee9eee897a047869c0862e6022e5
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,89 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Utilities;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Ocsp
{
public class OcspResponse
: Asn1Encodable
{
private readonly OcspResponseStatus responseStatus;
private readonly ResponseBytes responseBytes;
public static OcspResponse GetInstance(
Asn1TaggedObject obj,
bool explicitly)
{
return GetInstance(Asn1Sequence.GetInstance(obj, explicitly));
}
public static OcspResponse GetInstance(
object obj)
{
if (obj == null || obj is OcspResponse)
{
return (OcspResponse)obj;
}
if (obj is Asn1Sequence)
{
return new OcspResponse((Asn1Sequence)obj);
}
throw new ArgumentException("unknown object in factory: " + Org.BouncyCastle.Utilities.Platform.GetTypeName(obj), "obj");
}
public OcspResponse(
OcspResponseStatus responseStatus,
ResponseBytes responseBytes)
{
if (responseStatus == null)
throw new ArgumentNullException("responseStatus");
this.responseStatus = responseStatus;
this.responseBytes = responseBytes;
}
private OcspResponse(
Asn1Sequence seq)
{
responseStatus = new OcspResponseStatus(
DerEnumerated.GetInstance(seq[0]));
if (seq.Count == 2)
{
responseBytes = ResponseBytes.GetInstance(
(Asn1TaggedObject)seq[1], true);
}
}
public OcspResponseStatus ResponseStatus
{
get { return responseStatus; }
}
public ResponseBytes ResponseBytes
{
get { return responseBytes; }
}
/**
* Produce an object suitable for an Asn1OutputStream.
* <pre>
* OcspResponse ::= Sequence {
* responseStatus OcspResponseStatus,
* responseBytes [0] EXPLICIT ResponseBytes OPTIONAL }
* </pre>
*/
public override Asn1Object ToAsn1Object()
{
Asn1EncodableVector v = new Asn1EncodableVector(responseStatus);
v.AddOptionalTagged(true, 0, responseBytes);
return new DerSequence(v);
}
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 25f607595e44d8f468452cba8e765218
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,45 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Ocsp
{
public class OcspResponseStatus
: DerEnumerated
{
public const int Successful = 0;
public const int MalformedRequest = 1;
public const int InternalError = 2;
public const int TryLater = 3;
public const int SignatureRequired = 5;
public const int Unauthorized = 6;
/**
* The OcspResponseStatus enumeration.
* <pre>
* OcspResponseStatus ::= Enumerated {
* successful (0), --Response has valid confirmations
* malformedRequest (1), --Illegal confirmation request
* internalError (2), --Internal error in issuer
* tryLater (3), --Try again later
* --(4) is not used
* sigRequired (5), --Must sign the request
* unauthorized (6) --Request unauthorized
* }
* </pre>
*/
public OcspResponseStatus(int value)
: base(value)
{
}
public OcspResponseStatus(DerEnumerated value)
: base(value.IntValueExact)
{
}
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 343e1dfaaabbf324faae98c0b4ca3016
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,90 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Utilities;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Ocsp
{
public class Request
: Asn1Encodable
{
private readonly CertID reqCert;
private readonly X509Extensions singleRequestExtensions;
public static Request GetInstance(
Asn1TaggedObject obj,
bool explicitly)
{
return GetInstance(Asn1Sequence.GetInstance(obj, explicitly));
}
public static Request GetInstance(
object obj)
{
if (obj == null || obj is Request)
{
return (Request)obj;
}
if (obj is Asn1Sequence)
{
return new Request((Asn1Sequence)obj);
}
throw new ArgumentException("unknown object in factory: " + Org.BouncyCastle.Utilities.Platform.GetTypeName(obj), "obj");
}
public Request(
CertID reqCert,
X509Extensions singleRequestExtensions)
{
if (reqCert == null)
throw new ArgumentNullException("reqCert");
this.reqCert = reqCert;
this.singleRequestExtensions = singleRequestExtensions;
}
private Request(
Asn1Sequence seq)
{
reqCert = CertID.GetInstance(seq[0]);
if (seq.Count == 2)
{
singleRequestExtensions = X509Extensions.GetInstance(
(Asn1TaggedObject)seq[1], true);
}
}
public CertID ReqCert
{
get { return reqCert; }
}
public X509Extensions SingleRequestExtensions
{
get { return singleRequestExtensions; }
}
/**
* Produce an object suitable for an Asn1OutputStream.
* <pre>
* Request ::= Sequence {
* reqCert CertID,
* singleRequestExtensions [0] EXPLICIT Extensions OPTIONAL }
* </pre>
*/
public override Asn1Object ToAsn1Object()
{
Asn1EncodableVector v = new Asn1EncodableVector(reqCert);
v.AddOptionalTagged(true, 0, singleRequestExtensions);
return new DerSequence(v);
}
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 33c7d75991000524cbad39572f8566f8
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,111 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Ocsp
{
public class ResponderID
: Asn1Encodable, IAsn1Choice
{
private readonly Asn1Encodable id;
public static ResponderID GetInstance(
object obj)
{
if (obj == null || obj is ResponderID)
{
return (ResponderID)obj;
}
if (obj is DerOctetString)
{
return new ResponderID((DerOctetString)obj);
}
if (obj is Asn1TaggedObject)
{
Asn1TaggedObject o = (Asn1TaggedObject)obj;
if (o.TagNo == 1)
{
return new ResponderID(X509Name.GetInstance(o, true));
}
return new ResponderID(Asn1OctetString.GetInstance(o, true));
}
return new ResponderID(X509Name.GetInstance(obj));
}
public ResponderID(
Asn1OctetString id)
{
if (id == null)
throw new ArgumentNullException("id");
this.id = id;
}
public ResponderID(
X509Name id)
{
if (id == null)
throw new ArgumentNullException("id");
this.id = id;
}
public static ResponderID GetInstance(
Asn1TaggedObject obj,
bool isExplicit)
{
return GetInstance(obj.GetObject()); // must be explicitly tagged
}
public virtual byte[] GetKeyHash()
{
if (id is Asn1OctetString)
{
return ((Asn1OctetString)id).GetOctets();
}
return null;
}
public virtual X509Name Name
{
get
{
if (id is Asn1OctetString)
{
return null;
}
return X509Name.GetInstance(id);
}
}
/**
* Produce an object suitable for an Asn1OutputStream.
* <pre>
* ResponderID ::= CHOICE {
* byName [1] Name,
* byKey [2] KeyHash }
* </pre>
*/
public override Asn1Object ToAsn1Object()
{
if (id is Asn1OctetString)
{
return new DerTaggedObject(true, 2, id);
}
return new DerTaggedObject(true, 1, id);
}
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: fc63b7779ff0c61439730ae8bba82848
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,86 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Utilities;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Ocsp
{
public class ResponseBytes
: Asn1Encodable
{
private readonly DerObjectIdentifier responseType;
private readonly Asn1OctetString response;
public static ResponseBytes GetInstance(
Asn1TaggedObject obj,
bool explicitly)
{
return GetInstance(Asn1Sequence.GetInstance(obj, explicitly));
}
public static ResponseBytes GetInstance(
object obj)
{
if (obj == null || obj is ResponseBytes)
{
return (ResponseBytes)obj;
}
if (obj is Asn1Sequence)
{
return new ResponseBytes((Asn1Sequence)obj);
}
throw new ArgumentException("unknown object in factory: " + Org.BouncyCastle.Utilities.Platform.GetTypeName(obj), "obj");
}
public ResponseBytes(
DerObjectIdentifier responseType,
Asn1OctetString response)
{
if (responseType == null)
throw new ArgumentNullException("responseType");
if (response == null)
throw new ArgumentNullException("response");
this.responseType = responseType;
this.response = response;
}
private ResponseBytes(
Asn1Sequence seq)
{
if (seq.Count != 2)
throw new ArgumentException("Wrong number of elements in sequence", "seq");
this.responseType = DerObjectIdentifier.GetInstance(seq[0]);
this.response = Asn1OctetString.GetInstance(seq[1]);
}
public DerObjectIdentifier ResponseType
{
get { return responseType; }
}
public Asn1OctetString Response
{
get { return response; }
}
/**
* Produce an object suitable for an Asn1OutputStream.
* <pre>
* ResponseBytes ::= Sequence {
* responseType OBJECT IDENTIFIER,
* response OCTET STRING }
* </pre>
*/
public override Asn1Object ToAsn1Object()
{
return new DerSequence(responseType, response);
}
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a810ad92acb00f242af349509d44cb4b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,157 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Utilities;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Ocsp
{
public class ResponseData
: Asn1Encodable
{
private static readonly DerInteger V1 = new DerInteger(0);
private readonly bool versionPresent;
private readonly DerInteger version;
private readonly ResponderID responderID;
private readonly Asn1GeneralizedTime producedAt;
private readonly Asn1Sequence responses;
private readonly X509Extensions responseExtensions;
public static ResponseData GetInstance(
Asn1TaggedObject obj,
bool explicitly)
{
return GetInstance(Asn1Sequence.GetInstance(obj, explicitly));
}
public static ResponseData GetInstance(
object obj)
{
if (obj == null || obj is ResponseData)
{
return (ResponseData)obj;
}
if (obj is Asn1Sequence)
{
return new ResponseData((Asn1Sequence)obj);
}
throw new ArgumentException("unknown object in factory: " + Org.BouncyCastle.Utilities.Platform.GetTypeName(obj), "obj");
}
public ResponseData(
DerInteger version,
ResponderID responderID,
Asn1GeneralizedTime producedAt,
Asn1Sequence responses,
X509Extensions responseExtensions)
{
this.version = version;
this.responderID = responderID;
this.producedAt = producedAt;
this.responses = responses;
this.responseExtensions = responseExtensions;
}
public ResponseData(
ResponderID responderID,
Asn1GeneralizedTime producedAt,
Asn1Sequence responses,
X509Extensions responseExtensions)
: this(V1, responderID, producedAt, responses, responseExtensions)
{
}
private ResponseData(
Asn1Sequence seq)
{
int index = 0;
Asn1Encodable enc = seq[0];
if (enc is Asn1TaggedObject)
{
Asn1TaggedObject o = (Asn1TaggedObject)enc;
if (o.TagNo == 0)
{
this.versionPresent = true;
this.version = DerInteger.GetInstance(o, true);
index++;
}
else
{
this.version = V1;
}
}
else
{
this.version = V1;
}
this.responderID = ResponderID.GetInstance(seq[index++]);
this.producedAt = (Asn1GeneralizedTime)seq[index++];
this.responses = (Asn1Sequence)seq[index++];
if (seq.Count > index)
{
this.responseExtensions = X509Extensions.GetInstance(
(Asn1TaggedObject)seq[index], true);
}
}
public DerInteger Version
{
get { return version; }
}
public ResponderID ResponderID
{
get { return responderID; }
}
public Asn1GeneralizedTime ProducedAt
{
get { return producedAt; }
}
public Asn1Sequence Responses
{
get { return responses; }
}
public X509Extensions ResponseExtensions
{
get { return responseExtensions; }
}
/**
* Produce an object suitable for an Asn1OutputStream.
* <pre>
* ResponseData ::= Sequence {
* version [0] EXPLICIT Version DEFAULT v1,
* responderID ResponderID,
* producedAt GeneralizedTime,
* responses Sequence OF SingleResponse,
* responseExtensions [1] EXPLICIT Extensions OPTIONAL }
* </pre>
*/
public override Asn1Object ToAsn1Object()
{
Asn1EncodableVector v = new Asn1EncodableVector();
if (versionPresent || !version.Equals(V1))
{
v.Add(new DerTaggedObject(true, 0, version));
}
v.Add(responderID, producedAt, responses);
v.AddOptionalTagged(true, 1, responseExtensions);
return new DerSequence(v);
}
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 73f04262b993eaa4cb9f283fef37a601
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,95 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Utilities;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Ocsp
{
public class RevokedInfo
: Asn1Encodable
{
private readonly Asn1GeneralizedTime revocationTime;
private readonly CrlReason revocationReason;
public static RevokedInfo GetInstance(
Asn1TaggedObject obj,
bool explicitly)
{
return GetInstance(Asn1Sequence.GetInstance(obj, explicitly));
}
public static RevokedInfo GetInstance(
object obj)
{
if (obj == null || obj is RevokedInfo)
{
return (RevokedInfo) obj;
}
if (obj is Asn1Sequence)
{
return new RevokedInfo((Asn1Sequence) obj);
}
throw new ArgumentException("unknown object in factory: " + Org.BouncyCastle.Utilities.Platform.GetTypeName(obj), "obj");
}
public RevokedInfo(
Asn1GeneralizedTime revocationTime)
: this(revocationTime, null)
{
}
public RevokedInfo(
Asn1GeneralizedTime revocationTime,
CrlReason revocationReason)
{
if (revocationTime == null)
throw new ArgumentNullException("revocationTime");
this.revocationTime = revocationTime;
this.revocationReason = revocationReason;
}
private RevokedInfo(
Asn1Sequence seq)
{
this.revocationTime = (Asn1GeneralizedTime)seq[0];
if (seq.Count > 1)
{
this.revocationReason = new CrlReason(
DerEnumerated.GetInstance((Asn1TaggedObject) seq[1], true));
}
}
public Asn1GeneralizedTime RevocationTime
{
get { return revocationTime; }
}
public CrlReason RevocationReason
{
get { return revocationReason; }
}
/**
* Produce an object suitable for an Asn1OutputStream.
* <pre>
* RevokedInfo ::= Sequence {
* revocationTime GeneralizedTime,
* revocationReason [0] EXPLICIT CRLReason OPTIONAL }
* </pre>
*/
public override Asn1Object ToAsn1Object()
{
Asn1EncodableVector v = new Asn1EncodableVector(revocationTime);
v.AddOptionalTagged(true, 0, revocationReason);
return new DerSequence(v);
}
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 74e47e4f5d7ee1348a13175e36afb12a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,94 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Utilities;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Ocsp
{
public class ServiceLocator
: Asn1Encodable
{
private readonly X509Name issuer;
private readonly Asn1Object locator;
public static ServiceLocator GetInstance(
Asn1TaggedObject obj,
bool explicitly)
{
return GetInstance(Asn1Sequence.GetInstance(obj, explicitly));
}
public static ServiceLocator GetInstance(
object obj)
{
if (obj == null || obj is ServiceLocator)
{
return (ServiceLocator) obj;
}
if (obj is Asn1Sequence)
{
return new ServiceLocator((Asn1Sequence) obj);
}
throw new ArgumentException("unknown object in factory: " + Org.BouncyCastle.Utilities.Platform.GetTypeName(obj), "obj");
}
public ServiceLocator(
X509Name issuer)
: this(issuer, null)
{
}
public ServiceLocator(
X509Name issuer,
Asn1Object locator)
{
if (issuer == null)
throw new ArgumentNullException("issuer");
this.issuer = issuer;
this.locator = locator;
}
private ServiceLocator(
Asn1Sequence seq)
{
this.issuer = X509Name.GetInstance(seq[0]);
if (seq.Count > 1)
{
this.locator = seq[1].ToAsn1Object();
}
}
public X509Name Issuer
{
get { return issuer; }
}
public Asn1Object Locator
{
get { return locator; }
}
/**
* Produce an object suitable for an Asn1OutputStream.
* <pre>
* ServiceLocator ::= Sequence {
* issuer Name,
* locator AuthorityInfoAccessSyntax OPTIONAL }
* </pre>
*/
public override Asn1Object ToAsn1Object()
{
Asn1EncodableVector v = new Asn1EncodableVector(issuer);
v.AddOptional(locator);
return new DerSequence(v);
}
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c91e3d6069fb0e84d8c206a1f2213771
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,113 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Utilities;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Ocsp
{
public class Signature
: Asn1Encodable
{
internal AlgorithmIdentifier signatureAlgorithm;
internal DerBitString signatureValue;
internal Asn1Sequence certs;
public static Signature GetInstance(
Asn1TaggedObject obj,
bool explicitly)
{
return GetInstance(Asn1Sequence.GetInstance(obj, explicitly));
}
public static Signature GetInstance(
object obj)
{
if (obj == null || obj is Signature)
{
return (Signature)obj;
}
if (obj is Asn1Sequence)
{
return new Signature((Asn1Sequence)obj);
}
throw new ArgumentException("unknown object in factory: " + Org.BouncyCastle.Utilities.Platform.GetTypeName(obj), "obj");
}
public Signature(
AlgorithmIdentifier signatureAlgorithm,
DerBitString signatureValue)
: this(signatureAlgorithm, signatureValue, null)
{
}
public Signature(
AlgorithmIdentifier signatureAlgorithm,
DerBitString signatureValue,
Asn1Sequence certs)
{
if (signatureAlgorithm == null)
throw new ArgumentException("signatureAlgorithm");
if (signatureValue == null)
throw new ArgumentException("signatureValue");
this.signatureAlgorithm = signatureAlgorithm;
this.signatureValue = signatureValue;
this.certs = certs;
}
private Signature(
Asn1Sequence seq)
{
signatureAlgorithm = AlgorithmIdentifier.GetInstance(seq[0]);
signatureValue = (DerBitString)seq[1];
if (seq.Count == 3)
{
certs = Asn1Sequence.GetInstance(
(Asn1TaggedObject)seq[2], true);
}
}
public AlgorithmIdentifier SignatureAlgorithm
{
get { return signatureAlgorithm; }
}
public DerBitString SignatureValue
{
get { return signatureValue; }
}
public byte[] GetSignatureOctets()
{
return signatureValue.GetOctets();
}
public Asn1Sequence Certs
{
get { return certs; }
}
/**
* Produce an object suitable for an Asn1OutputStream.
* <pre>
* Signature ::= Sequence {
* signatureAlgorithm AlgorithmIdentifier,
* signature BIT STRING,
* certs [0] EXPLICIT Sequence OF Certificate OPTIONAL}
* </pre>
*/
public override Asn1Object ToAsn1Object()
{
Asn1EncodableVector v = new Asn1EncodableVector(signatureAlgorithm, signatureValue);
v.AddOptionalTagged(true, 0, certs);
return new DerSequence(v);
}
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9cb8d71b9385de8418b5a722d2d9579a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,131 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Utilities;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Ocsp
{
public class SingleResponse
: Asn1Encodable
{
private readonly CertID certID;
private readonly CertStatus certStatus;
private readonly Asn1GeneralizedTime thisUpdate;
private readonly Asn1GeneralizedTime nextUpdate;
private readonly X509Extensions singleExtensions;
public SingleResponse(
CertID certID,
CertStatus certStatus,
Asn1GeneralizedTime thisUpdate,
Asn1GeneralizedTime nextUpdate,
X509Extensions singleExtensions)
{
this.certID = certID;
this.certStatus = certStatus;
this.thisUpdate = thisUpdate;
this.nextUpdate = nextUpdate;
this.singleExtensions = singleExtensions;
}
public SingleResponse(
Asn1Sequence seq)
{
this.certID = CertID.GetInstance(seq[0]);
this.certStatus = CertStatus.GetInstance(seq[1]);
this.thisUpdate = (Asn1GeneralizedTime)seq[2];
if (seq.Count > 4)
{
this.nextUpdate = Asn1GeneralizedTime.GetInstance(
(Asn1TaggedObject) seq[3], true);
this.singleExtensions = X509Extensions.GetInstance(
(Asn1TaggedObject) seq[4], true);
}
else if (seq.Count > 3)
{
Asn1TaggedObject o = (Asn1TaggedObject) seq[3];
if (o.TagNo == 0)
{
this.nextUpdate = Asn1GeneralizedTime.GetInstance(o, true);
}
else
{
this.singleExtensions = X509Extensions.GetInstance(o, true);
}
}
}
public static SingleResponse GetInstance(
Asn1TaggedObject obj,
bool explicitly)
{
return GetInstance(Asn1Sequence.GetInstance(obj, explicitly));
}
public static SingleResponse GetInstance(
object obj)
{
if (obj == null || obj is SingleResponse)
{
return (SingleResponse)obj;
}
if (obj is Asn1Sequence)
{
return new SingleResponse((Asn1Sequence)obj);
}
throw new ArgumentException("unknown object in factory: " + Org.BouncyCastle.Utilities.Platform.GetTypeName(obj), "obj");
}
public CertID CertId
{
get { return certID; }
}
public CertStatus CertStatus
{
get { return certStatus; }
}
public Asn1GeneralizedTime ThisUpdate
{
get { return thisUpdate; }
}
public Asn1GeneralizedTime NextUpdate
{
get { return nextUpdate; }
}
public X509Extensions SingleExtensions
{
get { return singleExtensions; }
}
/**
* Produce an object suitable for an Asn1OutputStream.
* <pre>
* SingleResponse ::= Sequence {
* certID CertID,
* certStatus CertStatus,
* thisUpdate GeneralizedTime,
* nextUpdate [0] EXPLICIT GeneralizedTime OPTIONAL,
* singleExtensions [1] EXPLICIT Extensions OPTIONAL }
* </pre>
*/
public override Asn1Object ToAsn1Object()
{
Asn1EncodableVector v = new Asn1EncodableVector(certID, certStatus, thisUpdate);
v.AddOptionalTagged(true, 0, nextUpdate);
v.AddOptionalTagged(true, 1, singleExtensions);
return new DerSequence(v);
}
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 4214d46efe910cc4b854520cc23d9fa8
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,146 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Utilities;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Ocsp
{
public class TbsRequest
: Asn1Encodable
{
private static readonly DerInteger V1 = new DerInteger(0);
private readonly DerInteger version;
private readonly GeneralName requestorName;
private readonly Asn1Sequence requestList;
private readonly X509Extensions requestExtensions;
private bool versionSet;
public static TbsRequest GetInstance(
Asn1TaggedObject obj,
bool explicitly)
{
return GetInstance(Asn1Sequence.GetInstance(obj, explicitly));
}
public static TbsRequest GetInstance(
object obj)
{
if (obj == null || obj is TbsRequest)
{
return (TbsRequest)obj;
}
if (obj is Asn1Sequence)
{
return new TbsRequest((Asn1Sequence)obj);
}
throw new ArgumentException("unknown object in factory: " + Org.BouncyCastle.Utilities.Platform.GetTypeName(obj), "obj");
}
public TbsRequest(
GeneralName requestorName,
Asn1Sequence requestList,
X509Extensions requestExtensions)
{
this.version = V1;
this.requestorName = requestorName;
this.requestList = requestList;
this.requestExtensions = requestExtensions;
}
private TbsRequest(
Asn1Sequence seq)
{
int index = 0;
Asn1Encodable enc = seq[0];
if (enc is Asn1TaggedObject)
{
Asn1TaggedObject o = (Asn1TaggedObject) enc;
if (o.TagNo == 0)
{
versionSet = true;
version = DerInteger.GetInstance(o, true);
index++;
}
else
{
version = V1;
}
}
else
{
version = V1;
}
if (seq[index] is Asn1TaggedObject)
{
requestorName = GeneralName.GetInstance((Asn1TaggedObject) seq[index++], true);
}
requestList = (Asn1Sequence) seq[index++];
if (seq.Count == (index + 1))
{
requestExtensions = X509Extensions.GetInstance((Asn1TaggedObject) seq[index], true);
}
}
public DerInteger Version
{
get { return version; }
}
public GeneralName RequestorName
{
get { return requestorName; }
}
public Asn1Sequence RequestList
{
get { return requestList; }
}
public X509Extensions RequestExtensions
{
get { return requestExtensions; }
}
/**
* Produce an object suitable for an Asn1OutputStream.
* <pre>
* TBSRequest ::= Sequence {
* version [0] EXPLICIT Version DEFAULT v1,
* requestorName [1] EXPLICIT GeneralName OPTIONAL,
* requestList Sequence OF Request,
* requestExtensions [2] EXPLICIT Extensions OPTIONAL }
* </pre>
*/
public override Asn1Object ToAsn1Object()
{
Asn1EncodableVector v = new Asn1EncodableVector();
//
// if default don't include - unless explicitly provided. Not strictly correct
// but required for some requests
//
if (!version.Equals(V1) || versionSet)
{
v.Add(new DerTaggedObject(true, 0, version));
}
v.AddOptionalTagged(true, 1, requestorName);
v.Add(requestList);
v.AddOptionalTagged(true, 2, requestExtensions);
return new DerSequence(v);
}
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6e4f53713011703448927be09e3bfbd3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: