diff options
Diffstat (limited to 'pkix/src/main/java/org/spongycastle/cms/RecipientOperator.java')
-rw-r--r-- | pkix/src/main/java/org/spongycastle/cms/RecipientOperator.java | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/pkix/src/main/java/org/spongycastle/cms/RecipientOperator.java b/pkix/src/main/java/org/spongycastle/cms/RecipientOperator.java new file mode 100644 index 00000000..c254dbf3 --- /dev/null +++ b/pkix/src/main/java/org/spongycastle/cms/RecipientOperator.java @@ -0,0 +1,48 @@ +package org.spongycastle.cms; + +import java.io.InputStream; + +import org.spongycastle.asn1.x509.AlgorithmIdentifier; +import org.spongycastle.operator.InputDecryptor; +import org.spongycastle.operator.MacCalculator; +import org.spongycastle.util.io.TeeInputStream; + +public class RecipientOperator +{ + private final AlgorithmIdentifier algorithmIdentifier; + private final Object operator; + + public RecipientOperator(InputDecryptor decryptor) + { + this.algorithmIdentifier = decryptor.getAlgorithmIdentifier(); + this.operator = decryptor; + } + + public RecipientOperator(MacCalculator macCalculator) + { + this.algorithmIdentifier = macCalculator.getAlgorithmIdentifier(); + this.operator = macCalculator; + } + + public InputStream getInputStream(InputStream dataIn) + { + if (operator instanceof InputDecryptor) + { + return ((InputDecryptor)operator).getInputStream(dataIn); + } + else + { + return new TeeInputStream(dataIn, ((MacCalculator)operator).getOutputStream()); + } + } + + public boolean isMacBased() + { + return operator instanceof MacCalculator; + } + + public byte[] getMac() + { + return ((MacCalculator)operator).getMac(); + } +} |