diff options
author | Bartosz Gardziejewski <bartosz.gardziejewski@nokia.com> | 2021-01-12 10:33:18 +0100 |
---|---|---|
committer | Bartosz Gardziejewski <bartosz.gardziejewski@nokia.com> | 2021-01-13 09:14:31 +0100 |
commit | 2b9a4f35e2e50fca4304107b5033b6216af0124d (patch) | |
tree | 554c86f5ddadd2610f5ac554770dede4b3d2b7b8 /csarvalidation/src/main/java/org/onap/cvc/csar/security/CmsSignatureDataFactory.java | |
parent | 6aab2c816dad5fa8dda7c1fb4597ad5433c6181c (diff) |
Add support for signature in PCKS7 format.
Signed-off-by: Bartosz Gardziejewski <bartosz.gardziejewski@nokia.com>
Change-Id: Ic98d1b9c93c11c484c86338588922c2f347b7c02
Issue-ID: VNFSDK-714
Diffstat (limited to 'csarvalidation/src/main/java/org/onap/cvc/csar/security/CmsSignatureDataFactory.java')
-rw-r--r-- | csarvalidation/src/main/java/org/onap/cvc/csar/security/CmsSignatureDataFactory.java | 25 |
1 files changed, 7 insertions, 18 deletions
diff --git a/csarvalidation/src/main/java/org/onap/cvc/csar/security/CmsSignatureDataFactory.java b/csarvalidation/src/main/java/org/onap/cvc/csar/security/CmsSignatureDataFactory.java index 2744bc6..834f0ad 100644 --- a/csarvalidation/src/main/java/org/onap/cvc/csar/security/CmsSignatureDataFactory.java +++ b/csarvalidation/src/main/java/org/onap/cvc/csar/security/CmsSignatureDataFactory.java @@ -24,23 +24,21 @@ import org.bouncycastle.cms.CMSProcessableByteArray; import org.bouncycastle.cms.CMSSignedData; import org.bouncycastle.cms.CMSTypedData; import org.bouncycastle.cms.SignerInformation; -import org.bouncycastle.openssl.PEMParser; import org.bouncycastle.util.Store; -import java.io.ByteArrayInputStream; import java.io.IOException; -import java.io.InputStreamReader; -import java.nio.charset.Charset; import java.util.Collection; import java.util.Optional; public class CmsSignatureDataFactory { + private final SignatureFactory signatureFactory = new SignatureFactory(); + public CmsSignatureData createForFirstSigner(final byte[] cmsSignature, final byte[] fileContent) - throws CmsSignatureLoadingException{ + throws CmsSignatureLoadingException { - try (ByteArrayInputStream cmsSignatureStream = new ByteArrayInputStream(cmsSignature)) { - CMSSignedData signedData = getCMSSignedData(fileContent, cmsSignatureStream); + try { + CMSSignedData signedData = getCMSSignedData(fileContent, cmsSignature); Collection<SignerInformation> signers = signedData.getSignerInfos().getSigners(); Store<X509CertificateHolder> certificates = signedData.getCertificates(); SignerInformation firstSigner = getFirstSigner(signers); @@ -73,19 +71,10 @@ public class CmsSignatureDataFactory { return cert; } - - private CMSSignedData getCMSSignedData(byte[] innerPackageFileCSAR, ByteArrayInputStream signatureStream) throws IOException, CmsSignatureLoadingException, CMSException { - ContentInfo signature = produceSignature(signatureStream); + private CMSSignedData getCMSSignedData(byte[] innerPackageFileCSAR, byte[] signatureStream) throws IOException, CmsSignatureLoadingException, CMSException { + ContentInfo signature = signatureFactory.createSignature(signatureStream); CMSTypedData signedContent = new CMSProcessableByteArray(innerPackageFileCSAR); return new CMSSignedData(signedContent, signature); } - private ContentInfo produceSignature(ByteArrayInputStream signatureStream) throws IOException, CmsSignatureLoadingException { - Object parsedObject = new PEMParser(new InputStreamReader(signatureStream, Charset.defaultCharset())).readObject(); - if (!(parsedObject instanceof ContentInfo)) { - throw new CmsSignatureLoadingException("Signature is not recognized!"); - } - return ContentInfo.getInstance(parsedObject); - } - } |