package org.bouncycastle.crypto.tls;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class DigitallySigned
{
    protected SignatureAndHashAlgorithm algorithm;
    protected byte[] signature;

    public DigitallySigned(SignatureAndHashAlgorithm algorithm, byte[] signature)
    {
        if (signature == null)
        {
            throw new IllegalArgumentException("'signature' cannot be null");
        }

        this.algorithm = algorithm;
        this.signature = signature;
    }

    
Returns:a SignatureAndHashAlgorithm (or null before TLS 1.2).
/** * @return a {@link SignatureAndHashAlgorithm} (or null before TLS 1.2). */
public SignatureAndHashAlgorithm getAlgorithm() { return algorithm; } public byte[] getSignature() { return signature; }
Encode this DigitallySigned to an OutputStream.
Params:
Throws:
/** * Encode this {@link DigitallySigned} to an {@link OutputStream}. * * @param output * the {@link OutputStream} to encode to. * @throws IOException */
public void encode(OutputStream output) throws IOException { if (algorithm != null) { algorithm.encode(output); } TlsUtils.writeOpaque16(signature, output); }
Parse a DigitallySigned from an InputStream.
Params:
Throws:
Returns:a DigitallySigned object.
/** * Parse a {@link DigitallySigned} from an {@link InputStream}. * * @param context * the {@link TlsContext} of the current connection. * @param input * the {@link InputStream} to parse from. * @return a {@link DigitallySigned} object. * @throws IOException */
public static DigitallySigned parse(TlsContext context, InputStream input) throws IOException { SignatureAndHashAlgorithm algorithm = null; if (TlsUtils.isTLSv12(context)) { algorithm = SignatureAndHashAlgorithm.parse(input); } byte[] signature = TlsUtils.readOpaque16(input); return new DigitallySigned(algorithm, signature); } }