LegacyTls13Verifier.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. using System.IO;
  5. namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Tls.Crypto.Impl
  6. {
  7. public sealed class LegacyTls13Verifier
  8. : TlsVerifier
  9. {
  10. private readonly int m_signatureScheme;
  11. private readonly Tls13Verifier m_tls13Verifier;
  12. public LegacyTls13Verifier(int signatureScheme, Tls13Verifier tls13Verifier)
  13. {
  14. if (!TlsUtilities.IsValidUint16(signatureScheme))
  15. throw new ArgumentException("signatureScheme");
  16. if (tls13Verifier == null)
  17. throw new ArgumentNullException("tls13Verifier");
  18. this.m_signatureScheme = signatureScheme;
  19. this.m_tls13Verifier = tls13Verifier;
  20. }
  21. public TlsStreamVerifier GetStreamVerifier(DigitallySigned digitallySigned)
  22. {
  23. SignatureAndHashAlgorithm algorithm = digitallySigned.Algorithm;
  24. if (algorithm == null || SignatureScheme.From(algorithm) != m_signatureScheme)
  25. throw new InvalidOperationException("Invalid algorithm: " + algorithm);
  26. return new TlsStreamVerifierImpl(m_tls13Verifier, digitallySigned.Signature);
  27. }
  28. public bool VerifyRawSignature(DigitallySigned digitallySigned, byte[] hash)
  29. {
  30. throw new NotSupportedException();
  31. }
  32. private class TlsStreamVerifierImpl
  33. : TlsStreamVerifier
  34. {
  35. private readonly Tls13Verifier m_tls13Verifier;
  36. private readonly byte[] m_signature;
  37. internal TlsStreamVerifierImpl(Tls13Verifier tls13Verifier, byte[] signature)
  38. {
  39. this.m_tls13Verifier = tls13Verifier;
  40. this.m_signature = signature;
  41. }
  42. public Stream Stream
  43. {
  44. get { return m_tls13Verifier.Stream; }
  45. }
  46. public bool IsVerified()
  47. {
  48. return m_tls13Verifier.VerifySignature(m_signature);
  49. }
  50. }
  51. }
  52. }
  53. #pragma warning restore
  54. #endif