12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- #pragma warning disable
- using System;
- using System.IO;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.IO;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.IO;
- namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Tls.Crypto.Impl.BC
- {
- internal sealed class BcVerifyingStreamSigner
- : TlsStreamSigner
- {
- private readonly ISigner m_signer;
- private readonly ISigner m_verifier;
- private readonly TeeOutputStream m_output;
- internal BcVerifyingStreamSigner(ISigner signer, ISigner verifier)
- {
- Stream outputSigner = new SignerSink(signer);
- Stream outputVerifier = new SignerSink(verifier);
- this.m_signer = signer;
- this.m_verifier = verifier;
- this.m_output = new TeeOutputStream(outputSigner, outputVerifier);
- }
- public Stream GetOutputStream()
- {
- return m_output;
- }
- public byte[] GetSignature()
- {
- try
- {
- byte[] signature = m_signer.GenerateSignature();
- if (m_verifier.VerifySignature(signature))
- return signature;
- }
- catch (CryptoException e)
- {
- throw new TlsFatalAlert(AlertDescription.internal_error, e);
- }
- throw new TlsFatalAlert(AlertDescription.internal_error);
- }
- }
- }
- #pragma warning restore
- #endif
|