From 0562debfc5cdd31e61c016aea40272c6c02ad3cb Mon Sep 17 00:00:00 2001 From: Bogumil Zebek Date: Wed, 14 Aug 2019 10:52:37 +0200 Subject: CMS signature validation Change-Id: Ie5d1c835d0e6a760f1b7de651a3833cb87b727e0 Issue-ID: VNFSDK-396 Signed-off-by: Zebek Bogumil --- .../onap/cvc/csar/parser/ManifestFileModel.java | 39 ++++++++++++++ .../onap/cvc/csar/parser/ManifestFileSplitter.java | 62 ++++++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 csarvalidation/src/main/java/org/onap/cvc/csar/parser/ManifestFileModel.java create mode 100644 csarvalidation/src/main/java/org/onap/cvc/csar/parser/ManifestFileSplitter.java (limited to 'csarvalidation/src/main/java/org/onap/cvc/csar/parser') diff --git a/csarvalidation/src/main/java/org/onap/cvc/csar/parser/ManifestFileModel.java b/csarvalidation/src/main/java/org/onap/cvc/csar/parser/ManifestFileModel.java new file mode 100644 index 0000000..f6b42fd --- /dev/null +++ b/csarvalidation/src/main/java/org/onap/cvc/csar/parser/ManifestFileModel.java @@ -0,0 +1,39 @@ +/* + * Copyright 2019 Nokia + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.onap.cvc.csar.parser; + +import java.util.Collections; +import java.util.List; + +public class ManifestFileModel { + private final List data; + private final List cms; + + public ManifestFileModel(List data, List cms) { + this.data = data; + this.cms = cms; + } + + public List getData() { + return Collections.unmodifiableList(data); + } + + public List getCMS() { + return Collections.unmodifiableList(cms); + } +} diff --git a/csarvalidation/src/main/java/org/onap/cvc/csar/parser/ManifestFileSplitter.java b/csarvalidation/src/main/java/org/onap/cvc/csar/parser/ManifestFileSplitter.java new file mode 100644 index 0000000..03a628c --- /dev/null +++ b/csarvalidation/src/main/java/org/onap/cvc/csar/parser/ManifestFileSplitter.java @@ -0,0 +1,62 @@ +/* + * Copyright 2019 Nokia + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.onap.cvc.csar.parser; + + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class ManifestFileSplitter { + + public ManifestFileModel split(File manifestFile) { + String fileName = manifestFile.getAbsolutePath(); + List data = new ArrayList<>(); + List cms = new ArrayList<>(); + + try (Stream stream = Files.lines(Paths.get(fileName))) { + List lines = stream.collect(Collectors.toList()); + return createManifestFileModel(data, cms, lines); + + } catch (IOException e) { + throw new IllegalArgumentException(String.format("Unable to process manifest file! Wrong file path: '%s'", fileName)); + } + } + + private ManifestFileModel createManifestFileModel(List data, List cms, List lines) { + boolean isCmsSection = false; + + for (String line : lines) { + if (line.contains("BEGIN CMS")) { + isCmsSection = true; + } + + if (isCmsSection) { + cms.add(line); + } else { + data.add(line); + } + } + return new ManifestFileModel(data, cms); + } +} -- cgit 1.2.3-korg