123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- using System;
- using System.IO;
- namespace Org.BouncyCastle.Crypto.Tls
- {
- public class CertificateStatusRequest
- {
- protected readonly byte mStatusType;
- protected readonly object mRequest;
- public CertificateStatusRequest(byte statusType, Object request)
- {
- if (!IsCorrectType(statusType, request))
- throw new ArgumentException("not an instance of the correct type", "request");
- this.mStatusType = statusType;
- this.mRequest = request;
- }
- public virtual byte StatusType
- {
- get { return mStatusType; }
- }
- public virtual object Request
- {
- get { return mRequest; }
- }
- public virtual OcspStatusRequest GetOcspStatusRequest()
- {
- if (!IsCorrectType(CertificateStatusType.ocsp, mRequest))
- throw new InvalidOperationException("'request' is not an OCSPStatusRequest");
- return (OcspStatusRequest)mRequest;
- }
- /**
- * Encode this {@link CertificateStatusRequest} to a {@link Stream}.
- *
- * @param output
- * the {@link Stream} to encode to.
- * @throws IOException
- */
- public virtual void Encode(Stream output)
- {
- TlsUtilities.WriteUint8(mStatusType, output);
- switch (mStatusType)
- {
- case CertificateStatusType.ocsp:
- ((OcspStatusRequest)mRequest).Encode(output);
- break;
- default:
- throw new TlsFatalAlert(AlertDescription.internal_error);
- }
- }
- /**
- * Parse a {@link CertificateStatusRequest} from a {@link Stream}.
- *
- * @param input
- * the {@link Stream} to parse from.
- * @return a {@link CertificateStatusRequest} object.
- * @throws IOException
- */
- public static CertificateStatusRequest Parse(Stream input)
- {
- byte status_type = TlsUtilities.ReadUint8(input);
- object result;
- switch (status_type)
- {
- case CertificateStatusType.ocsp:
- result = OcspStatusRequest.Parse(input);
- break;
- default:
- throw new TlsFatalAlert(AlertDescription.decode_error);
- }
- return new CertificateStatusRequest(status_type, result);
- }
- protected static bool IsCorrectType(byte statusType, object request)
- {
- switch (statusType)
- {
- case CertificateStatusType.ocsp:
- return request is OcspStatusRequest;
- default:
- throw new ArgumentException("unsupported value", "statusType");
- }
- }
- }
- }
- #endif
|