package org.bouncycastle.operator;

import java.io.InputStream;

import org.bouncycastle.asn1.x509.AlgorithmIdentifier;

/**
 * General interface for an operator that is able to produce
 * an InputStream that will decrypt a stream of encrypted data.
 */
public interface InputDecryptor
{
    /**
     * Return the algorithm identifier describing the encryption
     * algorithm and parameters this decryptor can process.
     *
     * @return algorithm oid and parameters.
     */
    AlgorithmIdentifier getAlgorithmIdentifier();

    /**
     * Wrap the passed in input stream encIn, returning an input stream
     * that decrypts what it reads from encIn before returning it.
     *
     * @param encIn InputStream containing encrypted input.
     * @return an decrypting InputStream
     */
    InputStream getInputStream(InputStream encIn);
}
