diff options
Diffstat (limited to 'csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004')
-rw-r--r-- | csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR146092.java | 29 | ||||
-rw-r--r-- | csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR787965.java | 75 |
2 files changed, 73 insertions, 31 deletions
diff --git a/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR146092.java b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR146092.java index 6150a04..b84dea7 100644 --- a/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR146092.java +++ b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR146092.java @@ -31,13 +31,12 @@ import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; -import java.util.stream.Collectors; @OnapCommandSchema(schema = "vtp-validate-csar-r146092.yaml") public class VTPValidateCSARR146092 extends VTPValidateCSARBase { private static final int UNKNOWN_LINE_NUMBER = -1; - private static final String SOURCE_ELEMENT_TAG = "source"; + private static final String SOURCE_ELEMENT_TAG = "Source"; private static class MissingSourceElementUnderAttributeError extends PnfCSARError { private MissingSourceElementUnderAttributeError(String attributeName, String fileName) { @@ -96,7 +95,7 @@ public class VTPValidateCSARR146092 extends VTPValidateCSARBase { List<String> attributeNames = Arrays.asList( "onap_ves_events", "onap_pm_dictionary", - "onap_yang_module", + "onap_yang_modules", "onap_others" ); @@ -123,21 +122,23 @@ public class VTPValidateCSARR146092 extends VTPValidateCSARBase { private void validateSourceElementsUnderAttribute(String attributeName) { Map<String, List<String>> attributeElements = this.nonMano.get(attributeName); - List<String> attributeElementNames = attributeElements.keySet().stream() - .map(String::toLowerCase) - .collect(Collectors.toList()); + Set<String> attributeElementNames = attributeElements.keySet(); if (!attributeElementNames.contains(SOURCE_ELEMENT_TAG)) { this.errors.add(new MissingSourceElementUnderAttributeError(attributeName, this.fileName)); } else { - for (String pathToFile : attributeElements.get(SOURCE_ELEMENT_TAG)) { - File fileFromCsar = this.csar.getFileFromCsar(pathToFile); - if (!fileFromCsar.exists()) { - this.errors.add( - new InvalidPathToFileError(attributeName, - pathToFile, this.fileName) - ); - } + validateThatSourceFileExists(attributeName, attributeElements); + } + } + + private void validateThatSourceFileExists(String attributeName, Map<String, List<String>> attributeElements) { + for (String pathToFile : attributeElements.get(SOURCE_ELEMENT_TAG)) { + File fileFromCsar = this.csar.getFileFromCsar(pathToFile); + if (!fileFromCsar.exists()) { + this.errors.add( + new InvalidPathToFileError(attributeName, + pathToFile, this.fileName) + ); } } } diff --git a/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR787965.java b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR787965.java index 621ede0..97efd11 100644 --- a/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR787965.java +++ b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR787965.java @@ -36,34 +36,46 @@ public class VTPValidateCSARR787965 extends VTPValidateCSARBase { private static final Logger LOG = LoggerFactory.getLogger(VTPValidateCSARR787965.class); - public static class CSARErrorInvalidSignature extends CSARArchive.CSARError { + static class CSARErrorInvalidSignature extends CSARArchive.CSARError { CSARErrorInvalidSignature() { super("0x3001"); this.message = "Invalid CSAR signature!"; } } - @Override - protected void validateCSAR(CSARArchive csar) throws OnapCommandException { + static class CsarFileNotAvailableError extends CSARArchive.CSARError { + CsarFileNotAvailableError() { + super("0x3002"); + this.message = "Missing. Csar file is not available!"; + } + } - try { - final CmsSignatureValidator securityManager = new CmsSignatureValidator(); + static class SignatureWithCertificationOnlyWarning extends CSARArchive.CSARError { + SignatureWithCertificationOnlyWarning() { + super("0x3003"); + this.message = "Warning. Zip package probably is valid. " + + "It contains only signature with certification cms and csar package. " + + "Unable to verify csar signature."; + } + } - FileArchive.Workspace workspace = csar.getWorkspace(); - final Optional<Path> pathToCsarFile = workspace.getPathToCsarFile(); - final Optional<Path> pathToCertFile = workspace.getPathToCertFile(); - final Optional<Path> pathToCmsFile = workspace.getPathToCmsFile(); - if (workspace.isZip() && pathToCsarFile.isPresent() && pathToCertFile.isPresent() && pathToCmsFile.isPresent()) { - byte[] csarContent = Files.readAllBytes(pathToCsarFile.get()); - byte[] signature = Files.readAllBytes(pathToCmsFile.get()); - byte[] publicCertification = Files.readAllBytes(pathToCertFile.get()); + static class BrokenZipPackageError extends CSARArchive.CSARError { + BrokenZipPackageError() { + super("0x3004"); + this.message = "Missing. Unable to find certification files."; + } + } - if (!securityManager.verifySignedData(signature, publicCertification,csarContent)) { - this.errors.add(new CSARErrorInvalidSignature()); - } - } + @Override + protected void validateCSAR(CSARArchive csar) throws OnapCommandException { + + try { + FileArchive.Workspace workspace = csar.getWorkspace(); + if (workspace.isZip()) { + verifyZipStructure(workspace); + } } catch (Exception e) { LOG.error("Internal VTPValidateCSARR787965 command error", e); throw new OnapCommandException("0x3000", "Internal VTPValidateCSARR787965 command error. See logs."); @@ -71,6 +83,35 @@ public class VTPValidateCSARR787965 extends VTPValidateCSARBase { } + private void verifyZipStructure(FileArchive.Workspace workspace) throws Exception { + final Optional<Path> pathToCsarFile = workspace.getPathToCsarFile(); + final Optional<Path> pathToCertFile = workspace.getPathToCertFile(); + final Optional<Path> pathToCmsFile = workspace.getPathToCmsFile(); + if(!pathToCsarFile.isPresent()) { + this.errors.add(new CsarFileNotAvailableError()); + } else { + if (pathToCertFile.isPresent() && pathToCmsFile.isPresent()) { + verifyTwoFileCertification(pathToCsarFile.get(), pathToCertFile.get(), pathToCmsFile.get()); + } else if (pathToCmsFile.isPresent()) { + this.errors.add(new SignatureWithCertificationOnlyWarning()); + } else { + this.errors.add(new BrokenZipPackageError()); + } + } + } + + private void verifyTwoFileCertification(Path pathToCsarFile, Path pathToCertFile, Path pathToCmsFile) throws Exception { + final CmsSignatureValidator securityManager = new CmsSignatureValidator(); + + byte[] csarContent = Files.readAllBytes(pathToCsarFile); + byte[] signature = Files.readAllBytes(pathToCmsFile); + byte[] publicCertification = Files.readAllBytes(pathToCertFile); + + if (!securityManager.verifySignedData(signature, publicCertification,csarContent)) { + this.errors.add(new CSARErrorInvalidSignature()); + } + } + @Override protected String getVnfReqsNo() { return "R787965"; |