
com.gc.iotools.fmt.decoders.Pkcs7Decoder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of wazformat Show documentation
Show all versions of wazformat Show documentation
Format identification utilities
The newest version!
package com.gc.iotools.fmt.decoders;
/*
* Copyright (c) 2008, 2014 Gabriele Contini. This source code is released
* under the BSD License.
*/
import java.io.IOException;
import java.io.InputStream;
import org.bouncycastle.cms.CMSException;
import org.bouncycastle.cms.CMSSignedDataParser;
import org.bouncycastle.cms.CMSTypedStream;
import org.bouncycastle.operator.OperatorCreationException;
import org.bouncycastle.operator.jcajce.JcaDigestCalculatorProviderBuilder;
import com.gc.iotools.fmt.base.Decoder;
import com.gc.iotools.fmt.base.FormatEnum;
/**
* Extract original document from a PKCS#7 signed document.
*
* @author dvd.smnt
* @since 1.2.0
* @see Decoder
*/
public class Pkcs7Decoder implements Decoder {
/**
* {@inheritDoc}
*/
@Override
public InputStream decode(final InputStream istream) throws IOException {
CMSSignedDataParser sdp;
try {
sdp = new CMSSignedDataParser(
new JcaDigestCalculatorProviderBuilder().setProvider("BC")
.build(), istream);
} catch (final CMSException e) {
final IOException e1 = new IOException(
"Error parsing PKCS7 content");
e1.initCause(e);
throw e1;
} catch (OperatorCreationException e) {
final IOException e1 = new IOException(
"Error initializing PKCS7 decoder.");
e1.initCause(e);
throw e1;
}
final CMSTypedStream ts = sdp.getSignedContent();
return ts.getContentStream();
}
/**
* {@inheritDoc}
*/
@Override
public FormatEnum getFormat() {
return FormatEnum.PKCS7;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy