1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- using System;
- using System.IO;
- namespace Org.BouncyCastle.Crypto.Tls
- {
- public class DigitallySigned
- {
- protected readonly SignatureAndHashAlgorithm mAlgorithm;
- protected readonly byte[] mSignature;
- public DigitallySigned(SignatureAndHashAlgorithm algorithm, byte[] signature)
- {
- if (signature == null)
- throw new ArgumentNullException("signature");
- this.mAlgorithm = algorithm;
- this.mSignature = signature;
- }
- /**
- * @return a {@link SignatureAndHashAlgorithm} (or null before TLS 1.2).
- */
- public virtual SignatureAndHashAlgorithm Algorithm
- {
- get { return mAlgorithm; }
- }
- public virtual byte[] Signature
- {
- get { return mSignature; }
- }
- /**
- * Encode this {@link DigitallySigned} to a {@link Stream}.
- *
- * @param output
- * the {@link Stream} to encode to.
- * @throws IOException
- */
- public virtual void Encode(Stream output)
- {
- if (mAlgorithm != null)
- {
- mAlgorithm.Encode(output);
- }
- TlsUtilities.WriteOpaque16(mSignature, output);
- }
- /**
- * Parse a {@link DigitallySigned} from a {@link Stream}.
- *
- * @param context
- * the {@link TlsContext} of the current connection.
- * @param input
- * the {@link Stream} to parse from.
- * @return a {@link DigitallySigned} object.
- * @throws IOException
- */
- public static DigitallySigned Parse(TlsContext context, Stream input)
- {
- SignatureAndHashAlgorithm algorithm = null;
- if (TlsUtilities.IsTlsV12(context))
- {
- algorithm = SignatureAndHashAlgorithm.Parse(input);
- }
- byte[] signature = TlsUtilities.ReadOpaque16(input);
- return new DigitallySigned(algorithm, signature);
- }
- }
- }
- #endif
|