// 
// Decompiled by Procyon v0.6.0
// 

package org.bouncycastle.cms;

import java.io.OutputStream;
import org.bouncycastle.operator.InputAEADDecryptor;
import org.bouncycastle.util.io.TeeInputStream;
import java.io.InputStream;
import org.bouncycastle.operator.MacCalculator;
import org.bouncycastle.operator.InputDecryptor;

public class RecipientOperator
{
    private final Object operator;
    
    public RecipientOperator(final InputDecryptor operator) {
        this.operator = operator;
    }
    
    public RecipientOperator(final MacCalculator operator) {
        this.operator = operator;
    }
    
    public InputStream getInputStream(final InputStream inputStream) {
        if (this.operator instanceof InputDecryptor) {
            return ((InputDecryptor)this.operator).getInputStream(inputStream);
        }
        return new TeeInputStream(inputStream, ((MacCalculator)this.operator).getOutputStream());
    }
    
    public boolean isAEADBased() {
        return this.operator instanceof InputAEADDecryptor;
    }
    
    public OutputStream getAADStream() {
        return ((InputAEADDecryptor)this.operator).getAADStream();
    }
    
    public boolean isMacBased() {
        return this.operator instanceof MacCalculator;
    }
    
    public byte[] getMac() {
        if (this.operator instanceof MacCalculator) {
            return ((MacCalculator)this.operator).getMac();
        }
        if (this.operator instanceof InputAEADDecryptor) {
            return ((InputAEADDecryptor)this.operator).getMAC();
        }
        return null;
    }
}
