From d862e9570870e6a7fbea04d1e6bd255e934142a1 Mon Sep 17 00:00:00 2001
From: iadgovuser26 <iadgovuser26@empire.eclipse.ncsc.mil>
Date: Tue, 14 Mar 2023 16:45:33 -0400
Subject: [PATCH 1/5] Added build and package creation for tcg_eventlog_tool
 [no ci]

---
 .../hirs/utils/tpm/eventlog/TCGEventLog.java  |  11 +-
 build.gradle                                  |  34 +++-
 settings.gradle                               |   9 +-
 tools/tcg_eventlog_tool/build.gradle          | 163 +++++++++---------
 .../src/main/java/hirs/tcg_eventlog/Main.java |   4 +-
 5 files changed, 130 insertions(+), 91 deletions(-)

diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TCGEventLog.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TCGEventLog.java
index ff5bdd2f..409b1182 100644
--- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TCGEventLog.java
+++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TCGEventLog.java
@@ -256,7 +256,16 @@ public final class TCGEventLog {
         }
         return pcrs;
     }
-
+    
+    /**
+     * Returns a flag which is set if the event log follows the "Crypto Agile" Format Type.
+     * A false implies the type is SHA1 format.
+     * @return true if log follows the Crypto Agile format.
+     */
+    public boolean  isCryptoAgile() {
+        return bCryptoAgile;
+    }
+    
     /**
      * Returns a list of event found in the Event Log.
      * @return an arraylist of event.
diff --git a/build.gradle b/build.gradle
index 763fbd69..f3ed7e76 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,5 +1,6 @@
-//import java.util.concurrent.TimeUnit
-//
+import java.util.concurrent.TimeUnit
+import org.gradle.api.tasks.Copy
+
 plugins {
     // Apply the application plugin to add support for building a CLI application in Java.
     id 'application'
@@ -8,6 +9,35 @@ plugins {
 //    id  "nebula.ospackage" version "9.1.1"
 }
 
+// Global checkstyle file
+    ext.checkstyleConfigFile = new File(rootDir, "/config/checkstyle/sun_checks.xml")
+
+dependencies {
+    repositories {
+          // Use Maven Central for resolving dependencies.
+             mavenCentral()
+         }
+}
+
+def projectVersion = rootProject.file('VERSION').text.trim()
+
+def buildTime = { ->
+    Date latestdate = new Date();
+    def time = latestdate.getTime();
+    long seconds = TimeUnit.MILLISECONDS.toSeconds(time);
+    return seconds;
+}
+
+def gitHash = { ->
+    def gitProcess = 'git rev-parse --short HEAD'.execute();
+    gitProcess.waitFor();
+    def shortHash = gitProcess.text.trim();
+    def gitHash = shortHash.substring(0, shortHash.length() - 2);
+    return gitHash;
+}
+
+project.ext["packageVersion"] = "${projectVersion}.${buildTime}.${gitHash}.el8"
+
 //subprojects {
 //
 //}
diff --git a/settings.gradle b/settings.gradle
index dcd004a9..4fee8f57 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -2,8 +2,9 @@ rootProject.name = 'HIRS'
 
 include 'HIRS_Utils',
         'HIRS_AttestationCA',
-        'HIRS_AttestationCAPortal'
-
+        'HIRS_AttestationCAPortal',
+        ':tools:tcg_eventlog_tool'
+        
 dependencyResolutionManagement {
     versionCatalogs {
         libs {
@@ -11,6 +12,7 @@ dependencyResolutionManagement {
             version('jackson', '2.14.2')
             library('commons-codec', 'commons-codec:commons-codec:1.15')
             library('commons-lang3', 'org.apache.commons:commons-lang3:3.12.0')
+            library('commons_io',     'commons-io:commons-io:2.11.0')
             library('bouncycastle', 'org.bouncycastle:bcmail-jdk15on:1.70')
             library('guava', 'com.google.guava:guava:31.1-jre')
             library('minimal-json', 'com.eclipsesource.minimal-json:minimal-json:0.9.5')
@@ -19,6 +21,7 @@ dependencyResolutionManagement {
             library('jakarta-xml', 'jakarta.xml.bind:jakarta.xml.bind-api:4.0.0')
             library('jackson-core', 'com.fasterxml.jackson.core', 'jackson-core').versionRef('jackson')
             library('jackson-databind', 'com.fasterxml.jackson.core', 'jackson-databind').versionRef('jackson')
+            library('jcommander',    'com.beust:jcommander:1.82')
             library('pci', 'com.github.marandus:pci-ids:0.3')
 //            library('spring-datajpa', 'org.springframework.boot', 'spring-boot-starter-data-jpa').version('springboot')
 //            library('spring-datajpa', 'org.springframework.boot', 'spring-boot-starter-web').version('springboot')
@@ -26,4 +29,4 @@ dependencyResolutionManagement {
             library('lombok', 'org.projectlombok:lombok:1.18.26')
         }
     }
-}
\ No newline at end of file
+}
diff --git a/tools/tcg_eventlog_tool/build.gradle b/tools/tcg_eventlog_tool/build.gradle
index ddfbc110..24661ca0 100644
--- a/tools/tcg_eventlog_tool/build.gradle
+++ b/tools/tcg_eventlog_tool/build.gradle
@@ -1,122 +1,119 @@
-apply plugin: 'java'
-apply plugin: 'findbugs'
-apply plugin: 'checkstyle'
-apply plugin: 'nebula.ospackage'
+import java.util.concurrent.TimeUnit
 
+plugins {
+      id "java"
+//    id "findbugs"
+//    id "checkstyle"
+      id "nebula.ospackage" version "9.1.1"
+}
 version = '1.0'
 
+java {
+    toolchain {
+        languageVersion = JavaLanguageVersion.of(17)
+    }
+}
+
 repositories {
     mavenCentral()
 }
 
 dependencies {
-    compile project(':HIRS_Utils')
-    compile libs.jcommander
-    compile libs.commons_io
-    compileOnly libs.checkstyle
-    compileOnly libs.findbugs
-    testCompile libs.testng
+    implementation project(':HIRS_Utils')
+    implementation libs.jcommander
+    implementation libs.commons.io
+//    implementation libs.checkstyle
+//    implementation libs.findbugs
+//    testCompile libs.testng
 }
 
 ext.configDir = new File(projectDir, 'config')
-ext.checkstyleConfigDir = "$configDir/checkstyle"
-checkstyle {
-    toolVersion = '5.7'
-    configFile = checkstyleConfigFile
-    configProperties.put('basedir', checkstyleConfigDir)
-    ignoreFailures = false
-    showViolations = true
-}
+//ext.checkstyleConfigDir = "$configDir/checkstyle"
+//ext.findbugsConfigDir = "$configDir/findbugs"
 
-ext.findbugsConfigDir = "$configDir/findbugs"
+//checkstyle {
+//    toolVersion = '5.7'
+//    configFile = checkstyleConfigFile
+//    configProperties.put('basedir', checkstyleConfigDir)
+//    ignoreFailures = false
+//    showViolations = true
+//}
 
-findbugs {
-    toolVersion = '3.0.0'
-    ignoreFailures = false
-    effort = 'max'
-}
+
+//findbugs {
+//    toolVersion = '3.0.0'
+//    ignoreFailures = false
+//    effort = 'max'
+//}
 
 jar {
+     exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA', 'META-INF/*.MF'
     manifest {
-        attributes("Main-Class": "hirs.tcg_eventlog.Main",
-                "Class-Path": configurations.runtime.files.collect { "lib/$it.name" }.join(' ')
-        )
-    }
-    from(configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }) {}
-    exclude 'META-INF/*.RSA', 'META-INF/*.SF', 'META-INF/*.DSA'
-}
-
-uploadArchives {
-    repositories {
-        flatDir {
-            dirs "${buildDir}"
-        }
-    }
-}
-
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.netflix.nebula:gradle-ospackage-plugin:4.9.3'
+        attributes(
+                 "Main-Class": "hirs.tcg_eventlog.Main",
+                 'Class-Path': configurations.runtimeClasspath.files.collect { it.getName() }.join(' ')
+           )
     }
+   // from(configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }) {}
+   // exclude 'META-INF/*.RSA', 'META-INF/*.SF', 'META-INF/*.DSA'
 }
+// Get version from main project gradle
+def packVersion = properties.get("packageVersion");
+//println "packageVersion is ${projVersion}"
 
 // Produce packages
 ospackage {
-    def gitCommitHash = 'git rev-parse --verify --short HEAD'.execute().text.trim()
-    packageName = 'tcg_eventlog_tool'
+    packageName = 'tcg-eventlog-tool'
     os = LINUX
-    arch = X86_64
-    version = '2.1.0'
-    release = gitCommitHash
+    arch = NOARCH
+    version = "$packVersion"
+    release = '1'
 
-    into '/opt/hirs/eventlog'
     user 'root'
     fileMode = 0755
 
-    from(jar.outputs.files) {
-        into 'lib'
+   into ('/opt/hirs/eventlog/lib') {
+       from jar.outputs.files
+       from 'lib'
+       from 'configurations.runtimeClasspath'
     }
-    from('lib') {
-        into 'lib'
-    }
-    from(configurations.runtime) {
-        into 'lib'
-    }
-    from('scripts') {
+    into ('/opt/hirs/eventlog/scripts') {
+      from ('scripts') {
         exclude {
-            FileTreeElement details ->
-                details.file.name.endsWith('.bat')
+            FileTreeElement details -> 
+               details.file.name.endsWith('.bat')
         }
-        into 'scripts'
+      }
     }
-    from('docs') {
-        exclude {
-            FileTreeElement details ->
-                details.file.name.endsWith('.odt')
+    into ('/opt/hirs/eventlog/docs') {
+        from ('docs') {
+           exclude {
+               FileTreeElement details ->
+                   details.file.name.endsWith('.odt')
+           }
         }
-        into 'docs'
     }
-    from('./') {
-        include {
-            FileTreeElement details ->
-                details.file.name.endsWith('.md')
-        }
-        into './'
-        link("/usr/bin/elt", "/opt/hirs/eventlog/scripts/eventlog.sh", 0x755)
-    }
-
-    into('/tmp/') {
-        fileMode 0664
+    // Copy vendor-table into /tmp to avoid conflict with the ACA 
+    into('/tmp/elt/default-properties') {
         from ('../../HIRS_Utils/src/main/resources/vendor-table.json') {
-            addParentDirs true
-            createDirectoryEntry true
+         fileMode 0664
+         addParentDirs = true
         }
     }
 
-    postInstall file('scripts/vendor-table.sh')
+    // place elt link in system path to enable command line access
+    link("/usr/local/bin/elt", "/opt/hirs/eventlog/scripts/eventlog.sh", 0x755)
+
+    // PostInstall
+    // Copy files from /opt/elt/default-properties/ to avoid conflicts with the ACA
+     postInstall "cp /tmp/elt/default-properties/vendor-table.json /opt/hirs/default-properties/."
+     postInstall "rm -rf /tmp/elt" 
+    
+    // Uninstall
+    // copy files to where package manager exspects them and remove project files
+     preUninstall "mkdir -p /tmp/elt/default-properties"
+     preUninstall "cp /opt/hirs/default-properties/vendor-table.json /tmp/elt/default-properties/."
+     postUninstall "rm -rf /tmp/elt"
 
     buildRpm {
         arch = X86_64
diff --git a/tools/tcg_eventlog_tool/src/main/java/hirs/tcg_eventlog/Main.java b/tools/tcg_eventlog_tool/src/main/java/hirs/tcg_eventlog/Main.java
index 10fa4a0a..e5864bd3 100644
--- a/tools/tcg_eventlog_tool/src/main/java/hirs/tcg_eventlog/Main.java
+++ b/tools/tcg_eventlog_tool/src/main/java/hirs/tcg_eventlog/Main.java
@@ -11,8 +11,8 @@ import java.security.cert.CertificateException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import hirs.tpm.eventlog.TCGEventLog;
-import hirs.tpm.eventlog.TpmPcrEvent;
+import hirs.utils.tpm.eventlog.TCGEventLog;
+import hirs.utils.tpm.eventlog.TpmPcrEvent;
 import hirs.utils.HexUtils;
 
 /**

From ef65c6ad8ba442be9d96173c49c266c9a76fe60f Mon Sep 17 00:00:00 2001
From: "iadgovuser26 iadgovuser26@empire.eclipse.ncsc.mil"
 <lareine@evoforge.org>
Date: Fri, 17 Mar 2023 14:47:10 -0400
Subject: [PATCH 2/5] updated with package for tcg_rim_tool [no ci]

---
 HIRS_AttestationCAPortal/build.gradle         |  7 ++
 HIRS_Utils/build.gradle                       | 22 +++--
 .../hirs/utils/tpm/eventlog/TCGEventLog.java  |  9 +-
 build.gradle                                  |  1 +
 gradle.properties                             |  1 +
 settings.gradle                               | 16 ++--
 tools/tcg_eventlog_tool/build.gradle          | 43 +++++----
 tools/tcg_eventlog_tool/scripts/eventlog.sh   |  2 +-
 .../src/main/java/hirs/tcg_eventlog/Main.java |  2 +-
 tools/tcg_rim_tool/build.gradle               | 89 ++++++++++++++++---
 tools/tcg_rim_tool/scripts/rimtool.sh         |  6 +-
 11 files changed, 143 insertions(+), 55 deletions(-)

diff --git a/HIRS_AttestationCAPortal/build.gradle b/HIRS_AttestationCAPortal/build.gradle
index 01ec1516..d10f3763 100644
--- a/HIRS_AttestationCAPortal/build.gradle
+++ b/HIRS_AttestationCAPortal/build.gradle
@@ -7,6 +7,11 @@ plugins {
     id 'io.spring.dependency-management' version '1.1.0'
 }
 
+// Get version from main project gradle
+def packVersion = properties.get("packageVersion");
+def jarVersion = properties.get("jarVersion");
+//println "packageVersion is ${projVersion}"
+
 java {
     toolchain {
         languageVersion = JavaLanguageVersion.of(17)
@@ -53,3 +58,5 @@ war {
     }
     archiveFileName = 'HIRS_AttestationCAPortal.war'
 }
+
+
diff --git a/HIRS_Utils/build.gradle b/HIRS_Utils/build.gradle
index 6d8ff8f3..ec707fe4 100644
--- a/HIRS_Utils/build.gradle
+++ b/HIRS_Utils/build.gradle
@@ -1,6 +1,11 @@
 plugins {
     id 'java'
 }
+// Get version from main project gradle
+def packVersion = properties.get("packageVersion");
+def jarVersion = properties.get("jarVersion");
+//println "packageVersion is ${projVersion}"
+
 
 java {
     toolchain {
@@ -10,7 +15,6 @@ java {
 
 repositories {
     mavenCentral()
-
     flatDir { dirs "lib" }
 }
 
@@ -47,9 +51,13 @@ test {
     useJUnitPlatform()
 }
 
-//task generateXjcLibrary(type:Exec) {
-//    workingDir 'config'
-//
-//    commandLine './genXjcLibrary.sh'
-//}
-//compileJava.dependsOn generateXjcLibrary
\ No newline at end of file
+jar {
+    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+    manifest {
+        attributes(
+                 'Class-Path': configurations.runtimeClasspath.files.collect { it.getName() }.join(' ')
+           )
+    }
+     //jar name format: [archiveBaseName]-[archiveAppendix]-[archiveVersion]-[archiveClassifier].[archiveExtension]
+     archiveVersion = jarVersion
+}
\ No newline at end of file
diff --git a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TCGEventLog.java b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TCGEventLog.java
index 409b1182..a59cac5f 100644
--- a/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TCGEventLog.java
+++ b/HIRS_Utils/src/main/java/hirs/utils/tpm/eventlog/TCGEventLog.java
@@ -257,14 +257,7 @@ public final class TCGEventLog {
         return pcrs;
     }
     
-    /**
-     * Returns a flag which is set if the event log follows the "Crypto Agile" Format Type.
-     * A false implies the type is SHA1 format.
-     * @return true if log follows the Crypto Agile format.
-     */
-    public boolean  isCryptoAgile() {
-        return bCryptoAgile;
-    }
+   
     
     /**
      * Returns a list of event found in the Event Log.
diff --git a/build.gradle b/build.gradle
index f3ed7e76..00db93d6 100644
--- a/build.gradle
+++ b/build.gradle
@@ -36,6 +36,7 @@ def gitHash = { ->
     return gitHash;
 }
 
+project.ext["jarVersion"] = "${projectVersion}.${buildTime}.${gitHash}"
 project.ext["packageVersion"] = "${projectVersion}.${buildTime}.${gitHash}.el8"
 
 //subprojects {
diff --git a/gradle.properties b/gradle.properties
index 2b43aeea..be12868c 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -2,3 +2,4 @@ excludeGroups=rhel-6,performance
 includeGroups=
 org.gradle.daemon=true
 org.gradle.jvmargs=-Xms256m -Xmx1024m
+org.gradle.caching=true
diff --git a/settings.gradle b/settings.gradle
index 4fee8f57..e989f1b6 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -3,17 +3,20 @@ rootProject.name = 'HIRS'
 include 'HIRS_Utils',
         'HIRS_AttestationCA',
         'HIRS_AttestationCAPortal',
-        ':tools:tcg_eventlog_tool'
+        ':tools:tcg_eventlog_tool',
+        ':tools:tcg_rim_tool'
         
 dependencyResolutionManagement {
     versionCatalogs {
         libs {
             version('springboot', '3.0.1')
             version('jackson', '2.14.2')
+            library('bouncycastle',  'org.bouncycastle:bcmail-jdk15on:1.70')
             library('commons-codec', 'commons-codec:commons-codec:1.15')
             library('commons-lang3', 'org.apache.commons:commons-lang3:3.12.0')
-            library('commons_io',     'commons-io:commons-io:2.11.0')
-            library('bouncycastle', 'org.bouncycastle:bcmail-jdk15on:1.70')
+            library('commons_io', 'commons-io:commons-io:2.11.0')
+            library('glassfish_json',   'org.glassfish:javax.json:1.1.4')
+            library('glassfish_jaxb_runtime',   'org.glassfish.jaxb:jaxb-runtime:2.3.1')
             library('guava', 'com.google.guava:guava:31.1-jre')
             library('minimal-json', 'com.eclipsesource.minimal-json:minimal-json:0.9.5')
             library('jakarta-servlet', 'org.glassfish.web:jakarta.servlet.jsp.jstl:3.0.0')
@@ -21,12 +24,15 @@ dependencyResolutionManagement {
             library('jakarta-xml', 'jakarta.xml.bind:jakarta.xml.bind-api:4.0.0')
             library('jackson-core', 'com.fasterxml.jackson.core', 'jackson-core').versionRef('jackson')
             library('jackson-databind', 'com.fasterxml.jackson.core', 'jackson-databind').versionRef('jackson')
-            library('jcommander',    'com.beust:jcommander:1.82')
+            library('jcommander', 'com.beust:jcommander:1.82')
+ //           library('log4j2', 'org.apache.logging.log4j:log4j-api:2.17.1')
+ //           library('log4j2-core', 'org.apache.logging.log4j:log4j-core:2.17.1')
+            library('lombok', 'org.projectlombok:lombok:1.18.26')
             library('pci', 'com.github.marandus:pci-ids:0.3')
+            library('testng', 'org.testng:testng:7.4.0')
 //            library('spring-datajpa', 'org.springframework.boot', 'spring-boot-starter-data-jpa').version('springboot')
 //            library('spring-datajpa', 'org.springframework.boot', 'spring-boot-starter-web').version('springboot')
 //            library('spring-datajpa', 'org.springframework.boot', 'spring-boot-starter-validation').version('springboot')
-            library('lombok', 'org.projectlombok:lombok:1.18.26')
         }
     }
 }
diff --git a/tools/tcg_eventlog_tool/build.gradle b/tools/tcg_eventlog_tool/build.gradle
index 24661ca0..31ac32b2 100644
--- a/tools/tcg_eventlog_tool/build.gradle
+++ b/tools/tcg_eventlog_tool/build.gradle
@@ -1,12 +1,14 @@
 import java.util.concurrent.TimeUnit
-
 plugins {
       id "java"
 //    id "findbugs"
 //    id "checkstyle"
       id "nebula.ospackage" version "9.1.1"
 }
-version = '1.0'
+// Get version from main project gradle
+def packVersion = properties.get("packageVersion");
+def jarVersion = properties.get("jarVersion");
+//println "packageVersion is ${projVersion}"
 
 java {
     toolchain {
@@ -16,9 +18,10 @@ java {
 
 repositories {
     mavenCentral()
+    flatDir { dirs "lib" }
 }
 
-dependencies {
+dependencies { 
     implementation project(':HIRS_Utils')
     implementation libs.jcommander
     implementation libs.commons.io
@@ -39,7 +42,6 @@ ext.configDir = new File(projectDir, 'config')
 //    showViolations = true
 //}
 
-
 //findbugs {
 //    toolVersion = '3.0.0'
 //    ignoreFailures = false
@@ -47,19 +49,18 @@ ext.configDir = new File(projectDir, 'config')
 //}
 
 jar {
-     exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA', 'META-INF/*.MF'
+    // Keep jar clean:
+    exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA', 'META-INF/*.MF'
+    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
     manifest {
         attributes(
                  "Main-Class": "hirs.tcg_eventlog.Main",
-                 'Class-Path': configurations.runtimeClasspath.files.collect { it.getName() }.join(' ')
+                 'Class-Path':configurations.runtimeClasspath.files.collect { it.getName() }.join(' ')
            )
-    }
-   // from(configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }) {}
-   // exclude 'META-INF/*.RSA', 'META-INF/*.SF', 'META-INF/*.DSA'
+     }
+     //jar name format: [archiveBaseName]-[archiveAppendix]-[archiveVersion]-[archiveClassifier].[archiveExtension]
+     archiveVersion = jarVersion
 }
-// Get version from main project gradle
-def packVersion = properties.get("packageVersion");
-//println "packageVersion is ${projVersion}"
 
 // Produce packages
 ospackage {
@@ -74,8 +75,7 @@ ospackage {
 
    into ('/opt/hirs/eventlog/lib') {
        from jar.outputs.files
-       from 'lib'
-       from 'configurations.runtimeClasspath'
+       from configurations.runtimeClasspath
     }
     into ('/opt/hirs/eventlog/scripts') {
       from ('scripts') {
@@ -92,6 +92,12 @@ ospackage {
                    details.file.name.endsWith('.odt')
            }
         }
+       from('./') {
+         include {
+             FileTreeElement details ->
+                 details.file.name.endsWith('.md')
+          }        
+       }
     }
     // Copy vendor-table into /tmp to avoid conflict with the ACA 
     into('/tmp/elt/default-properties') {
@@ -105,10 +111,11 @@ ospackage {
     link("/usr/local/bin/elt", "/opt/hirs/eventlog/scripts/eventlog.sh", 0x755)
 
     // PostInstall
+     //postInstall "cp ../../HIRS_Utils/build/libs/* /opt/hirs/eventlog/lib/."
     // Copy files from /opt/elt/default-properties/ to avoid conflicts with the ACA
-     postInstall "cp /tmp/elt/default-properties/vendor-table.json /opt/hirs/default-properties/."
-     postInstall "rm -rf /tmp/elt" 
-    
+     postInstall "cp /tmp/elt/default-properties/* /opt/hirs/default-properties/."
+     postInstall "rm -rf /tmp/elt"
+
     // Uninstall
     // copy files to where package manager exspects them and remove project files
      preUninstall "mkdir -p /tmp/elt/default-properties"
@@ -121,4 +128,4 @@ ospackage {
     buildDeb {
         arch = X86_64
     }
-}
+}
\ No newline at end of file
diff --git a/tools/tcg_eventlog_tool/scripts/eventlog.sh b/tools/tcg_eventlog_tool/scripts/eventlog.sh
index 8bd9aff4..2c5e31b8 100755
--- a/tools/tcg_eventlog_tool/scripts/eventlog.sh
+++ b/tools/tcg_eventlog_tool/scripts/eventlog.sh
@@ -4,5 +4,5 @@
 scriptDir=$(dirname -- "$(readlink -f -- "${BASH_SOURCE[0]}")") 
 baseDir=${scriptDir%/*}
 libDir=$baseDir"/lib/"
-jar="tcg_eventlog_tool-1.0.jar";
+jar="tcg_eventlog_tool-*.jar";
 java -jar $libDir$jar "$@"
\ No newline at end of file
diff --git a/tools/tcg_eventlog_tool/src/main/java/hirs/tcg_eventlog/Main.java b/tools/tcg_eventlog_tool/src/main/java/hirs/tcg_eventlog/Main.java
index e5864bd3..3ca1c85c 100644
--- a/tools/tcg_eventlog_tool/src/main/java/hirs/tcg_eventlog/Main.java
+++ b/tools/tcg_eventlog_tool/src/main/java/hirs/tcg_eventlog/Main.java
@@ -115,7 +115,7 @@ final class Main {
             // General event log output
             if ((bEventFlag || bHexFlag) && !bPcrFlag) {
                 if (!bHexFlag) {
-                    if (evLog.isCryptoAgile()) {
+                    if (evLog.isBCryptoAgile()) {
                         writeOut("\nEvent Log follows the \"Crypto Agile\" format and has "
                                 + evLog.getEventList().size() + " events:\n\n");
                     } else {
diff --git a/tools/tcg_rim_tool/build.gradle b/tools/tcg_rim_tool/build.gradle
index df01bebe..cd7aefbe 100644
--- a/tools/tcg_rim_tool/build.gradle
+++ b/tools/tcg_rim_tool/build.gradle
@@ -1,12 +1,35 @@
-apply plugin: 'java'
+plugins {
+       id "java"
+       id "nebula.ospackage" version "9.1.1"
+       id 'com.intershop.gradle.jaxb' version '5.1.0'
+}
+
+// Get version from main project gradle
+def packVersion = properties.get("packageVersion");
+def jarVersion = properties.get("jarVersion");
+//println "packageVersion is ${projVersion}"
+
+java {
+    toolchain {
+        languageVersion = JavaLanguageVersion.of(17)
+    }
+}
 
 repositories {
 	mavenCentral()
+	flatDir { dirs "lib" }
 }
 
 dependencies {
-	compile 'javax.json:javax.json-api:1.1.4', 'org.glassfish:javax.json:1.1.4', 'com.beust:jcommander:1.72', 'org.bouncycastle:bcmail-jdk15on:1.59'
-	testCompile 'org.testng:testng:6.8.8'
+	implementation libs.bouncycastle
+    implementation libs.glassfish.json
+    implementation libs.glassfish.jaxb.runtime
+    implementation libs.jcommander
+//    implementation libs.javax.json
+ //   implementation libs.javax.jaxb
+//    implementation libs.javax.annotation
+
+    testImplementation libs.testng
 }
 
 test {
@@ -14,19 +37,61 @@ test {
 }
 
 jar {
+    exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA', 'META-INF/*.MF'
+    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
 	manifest {
 		attributes("Main-Class": "hirs.swid.Main",
-			   "Class-Path": configurations.runtime.files.collect { "lib/$it.name" }.join(' ')
+			    'Class-Path':configurations.runtimeClasspath.files.collect { it.getName() }.join(' ')
 			  )
 	}
-	from(configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }) {}
-	exclude 'META-INF/*.RSA', 'META-INF/*.SF', 'META-INF/*.DSA'
+     //jar name format: [archiveBaseName]-[archiveAppendix]-[archiveVersion]-[archiveClassifier].[archiveExtension]
+     archiveVersion = jarVersion
 }
 
-uploadArchives {
-	repositories {
-		flatDir {
-			dirs "${buildDir}"
-		}
-	}
+ospackage {
+    packageName = 'tcg-rim-tool'
+    os = LINUX
+    arch = NOARCH
+    version = "$packVersion"
+    release = '1'
+
+    user 'root'
+    fileMode = 0755
+
+    into ('/opt/hirs/rimtool/lib') {
+        from jar.outputs.files
+        from configurations.runtimeClasspath
+        from 'libs'
+    }
+
+    into ('/opt/hirs/rimtool/scripts') {
+      from ('scripts') {
+        exclude {
+            FileTreeElement details ->
+                details.file.name.endsWith('.bat')
+        }
+      }
+    }
+    into ('/opt/hirs/rimtool/docs') {
+      from('./') {
+         include {
+             FileTreeElement details ->
+                 details.file.name.endsWith('.md')
+          }        
+       }
+       }
+    into ('/opt/hirs/rimtool/data') {
+      from('src/test/resources/') {
+       }
+     }
+     link("/usr/local/bin/rim", "/opt/hirs/rimtool/scripts/rimtool.sh", 0x755)
 }
+
+buildRpm {
+   arch = X86_64
+}
+
+buildDeb {
+    arch = 'amd64'
+}
+
diff --git a/tools/tcg_rim_tool/scripts/rimtool.sh b/tools/tcg_rim_tool/scripts/rimtool.sh
index fedae5db..c0caa1d8 100644
--- a/tools/tcg_rim_tool/scripts/rimtool.sh
+++ b/tools/tcg_rim_tool/scripts/rimtool.sh
@@ -3,6 +3,6 @@
 # Calls the the_tcg_rim_tool and passes in parameters
 scriptDir=$(dirname -- "$(readlink -f -- "${BASH_SOURCE[0]}")")
 baseDir=${scriptDir%/*}
-jar="tcg_rim_tool-2.1.0.jar";
-java -jar $baseDir/$jar "$@"
-
+libDir=$baseDir"/lib/"
+jar="tcg_rim_tool-*.jar";
+java -jar $libDir$jar "$@"
\ No newline at end of file

From 533031843916d73ab4787e80314345b984b28584 Mon Sep 17 00:00:00 2001
From: iadgovuser26 <iadgovuser26@empire.eclipse.ncsc.mil>
Date: Thu, 27 Apr 2023 21:07:41 +0000
Subject: [PATCH 3/5] adjusted to mysql password settings [no ci]

---
 package/scripts/common/db_create.sh | 1 +
 1 file changed, 1 insertion(+)

diff --git a/package/scripts/common/db_create.sh b/package/scripts/common/db_create.sh
index b705d329..b7da1b40 100644
--- a/package/scripts/common/db_create.sh
+++ b/package/scripts/common/db_create.sh
@@ -23,6 +23,7 @@ if [ -z $HIRS_DB_PWD ]; then
 fi
 
 # Set root password if not set
+
 if mysql -u root -e 'quit' &> /dev/null; then
    echo "Setting root password"
    mysqladmin -u root --silent password $HIRS_MYSQL_ROOT_PWD || true > /dev/null 2>&1

From b5c4d86430fe6e23e040a6bc0313a0f102ff8231 Mon Sep 17 00:00:00 2001
From: iadgovuser26 <iadgovuser26@empire.eclipse.ncsc.mil>
Date: Wed, 3 May 2023 16:54:35 +0000
Subject: [PATCH 4/5] cleaned up dnf install and dnf remove

---
 HIRS_AttestationCAPortal/build.gradle   | 19 ++++++++++--
 package/scripts/common/db_create.sh     | 41 +++++++++++++------------
 package/scripts/common/db_create.sql    |  2 +-
 package/scripts/common/db_drop.sh       | 23 +++++---------
 package/scripts/common/secure_mysql.sql |  3 +-
 5 files changed, 48 insertions(+), 40 deletions(-)

diff --git a/HIRS_AttestationCAPortal/build.gradle b/HIRS_AttestationCAPortal/build.gradle
index 6187e4d8..7b62bc4a 100644
--- a/HIRS_AttestationCAPortal/build.gradle
+++ b/HIRS_AttestationCAPortal/build.gradle
@@ -75,7 +75,7 @@ ospackage {
     addParentDirs = true
     createDirectoryEntry true 
 
-        preInstall "rm -rf /opt/hirs/default-properties"
+    preInstall "rm -rf /opt/hirs/default-properties"
     preInstall "mkdir -p /opt/hirs/default-properties/"
     preInstall "mkdir -p /tmp/hirs/default-properties/"
 
@@ -120,7 +120,22 @@ ospackage {
        from '../HIRS_AttestationCA/src/main/resources/component-class.json'
     }
   // Post Install
-    postInstall file('../package/scripts/common/db_create.sh')
+//   println "*** Checking MYSQL Configuration ...."
+//    println " Myql password is $System.env.HIRS_MYSQL_ROOT_PWD"
+//   println " Myql password is ${System.getenv('HIRS_MYSQL_ROOT_PWD')} "
+
+//   if ( "$System.env.HIRS_MYSQL_ROOT_PWD".compareTo("null") == 0 ) {
+//      println "Gradle: Mysql Root password not set"
+//   }
+//   else {
+//      println "Gradle: Mysql Root Password set to $System.env.HIRS_MYSQL_ROOT_PWD" 
+ //  }
+
+     postInstall file('../package/scripts/common/db_create.sh')
+//     if (System.getenv('HIRS_INSTALL_STATUS').compareTo('fail')==0 ) {
+//       throw new GradleException('MYSQL password error occurred') 
+//     }
+  //    postInstall 'sh /opt/hirs/scripts/common/db_create.sh'
   //  postInstall file('../package/scripts/common/ssl_configure.sh')
   //  postInstall 'mkdir -p /etc/hirs/aca/client_files'
     postInstall 'mkdir -p /etc/hirs/aca/certificates'
diff --git a/package/scripts/common/db_create.sh b/package/scripts/common/db_create.sh
index b7da1b40..82d9440c 100644
--- a/package/scripts/common/db_create.sh
+++ b/package/scripts/common/db_create.sh
@@ -3,35 +3,38 @@
 ###############################################################################
 # HIRS DB creation
 # Environment variables used:
-# a. HIRS_MYSQL_ROOT_EXSITING_PWD: set this variable if mysql root password is already set
-# b. HIRS_MYSQL_ROOT_PWD: set this variable if mysql root password is already set
-# c. HIRS_DB_PWD: Set the pwd if default password to hirs_db user needs to be changed
+# a. HIRS_MYSQL_ROOT_PWD: Set this variable if mysql root password is already set
+# b. HIRS_DB_PWD: Set the pwd if default password to hirs_db user needs to be changed
 # HIRS_MYSQL_ROOT_NEW_PWD wil be ignored if HIRS_MYSQL_ROOT_EXSITING_PWD is set.
 ################################################################################
 
-# Set Mysql root password
-if [ ! -z $HIRS_MYSQL_ROOT_EXSITING_PWD ]; then
-   HIRS_MYSQL_ROOT_PWD=$HIRS_MYSQL_ROOT_EXSITING_PWD
-elif [ ! -z $HIRS_MYSQL_ROOT_NEW_PWD ]; then
-   HIRS_MYSQL_ROOT_PWD=$HIRS_MYSQL_ROOT_NEW_PWD
-else  #assume root pasword needs to be set
-   HIRS_MYSQL_ROOT_PWD="root"
-fi
-
+# Set Mysql HIRS DB  password
 if [ -z $HIRS_DB_PWD ]; then
    HIRS_DB_PWD="hirs_db"
 fi
+# Save hirs_db mysql user password to the properties file
+echo "hibernate.connection.username="hirs_db"" > /etc/hirs/hibernate.properties
+echo "hibernate.connection.password=$HIRS_DB_PWD" >> /etc/hirs/hibernate.properties
 
-# Set root password if not set
+# Test the root password, error if the password doesnt work
 
-if mysql -u root -e 'quit' &> /dev/null; then
-   echo "Setting root password"
-   mysqladmin -u root --silent password $HIRS_MYSQL_ROOT_PWD || true > /dev/null 2>&1
+if [ -z ${HIRS_MYSQL_ROOT_PWD} ]; then
+    echo "HIRS_MYSQL_ROOT_PWD environment variable not set"
+    mysql -fu root  -e 'quit'  &> /dev/null;
+else
+   echo "Using $HIRS_MYSQL_ROOT_PWD as the mysql root password"
+   $(mysql -u root -p$HIRS_MYSQL_ROOT_PWD -e 'quit'  &> /dev/null);
+fi
+if [ $? -eq 0 ]; then
+ echo "root password verified" 
+else
+ echo "MYSQL root password was not the default, not supplied,  or was incorrect"
+ echo "      please set the HIRS_MYSQL_ROOT_PWD system variable and retry."
+ echo "      ********** ACA Mysql setup aborted ********" ;
+ exit 1;
 fi
 
 echo "HIRS_DB_PWD is $HIRS_DB_PWD"
-echo "HIRS_MYSQL_ROOT_EXSITING_PWD is $HIRS_MYSQL_ROOT_EXSITING_PWD"
-echo "HIRS_MYSQL_ROOT_NEW_PWD is $HIRS_MYSQL_ROOT_NEW_PWD"
 echo "HIRS_MYSQL_ROOT_PWD is $HIRS_MYSQL_ROOT_PWD"
 
 # Check if we're in a Docker container
@@ -54,7 +57,6 @@ if [[ $(pgrep -c -u mysql mysqld) -eq 0 ]]; then
            chown -R mysql:mysql /var/lib/mysql/  
        fi
        echo "Starting mysql...."
-       #nohup /usr/bin/mysqld_safe > /dev/null 2>&1 &
        chown -R mysql:mysql /var/log/mariadb
        /usr/bin/mysqld_safe &
    else
@@ -75,3 +77,4 @@ echo "Creating HIRS Database..."
 mysql -u root --password=$HIRS_MYSQL_ROOT_PWD < /opt/hirs/scripts/common/db_create.sql
 mysql -u root --password=$HIRS_MYSQL_ROOT_PWD < /opt/hirs/scripts/common/secure_mysql.sql
 mysql -u root --password=$HIRS_MYSQL_ROOT_PWD -e "ALTER USER 'hirs_db'@'localhost' IDENTIFIED BY '"$HIRS_DB_PWD"'; FLUSH PRIVILEGES;";
+
diff --git a/package/scripts/common/db_create.sql b/package/scripts/common/db_create.sql
index 8d4ee212..63ee7a95 100644
--- a/package/scripts/common/db_create.sql
+++ b/package/scripts/common/db_create.sql
@@ -1,2 +1,2 @@
 CREATE DATABASE IF NOT EXISTS `hirs_db` CHARACTER SET = 'utf8mb4' COLLATE = 'utf8mb4_general_ci';
-GRANT ALL ON hirs_db.* TO "hirs_db"@"localhost" IDENTIFIED BY "$HIRS_DB_PWD";
+GRANT ALL  ON hirs_db.* TO "hirs_db"@"localhost" IDENTIFIED BY "$HIRS_DB_PWD";
diff --git a/package/scripts/common/db_drop.sh b/package/scripts/common/db_drop.sh
index 21514124..52229cbd 100644
--- a/package/scripts/common/db_drop.sh
+++ b/package/scripts/common/db_drop.sh
@@ -1,20 +1,11 @@
 #!/bin/bash
 
-# Get the current password from the perstence.properties file
-#file="/etc/hirs/persistence.properties"
-# Change java key/value pairs into  valid bash key/value pairs
-#function prop {
-#    grep "${1}" ${file} | cut -d'=' -f2 | xargs
-#}
+echo "dropping hirs database"
 
-#user="root"
-# user=$(prop 'persistence.db.user')
-#pwd=$(prop 'persistence.db.password')
-pwd="root"
-
-# Need to update when password get written to the persitence fil
-# delete the database
-
-if pgrep  mysqld >/dev/null 2>&1; then  
-    mysql -u "$user" --password="$pwd" < /opt/hirs/scripts/common/db_drop.sql
+if pgrep  mysqld >/dev/null 2>&1; then
+  if [ -z ${HIRS_MYSQL_ROOT_PWD} ]; then
+    mysql -u "root" < /opt/hirs/scripts/common/db_drop.sql
+  else
+    mysql -u "root" -p$HIRS_MYSQL_ROOT_PWD  < /opt/hirs/scripts/common/db_drop.sq1
+  fi
 fi
diff --git a/package/scripts/common/secure_mysql.sql b/package/scripts/common/secure_mysql.sql
index 3221740c..8589affe 100644
--- a/package/scripts/common/secure_mysql.sql
+++ b/package/scripts/common/secure_mysql.sql
@@ -1,6 +1,5 @@
-UPDATE mysql.user SET Password=PASSWORD('root') WHERE User='root';
 DELETE FROM mysql.user WHERE User='';
 DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
 DROP DATABASE IF EXISTS test;
 DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
-FLUSH PRIVILEGES
\ No newline at end of file
+FLUSH PRIVILEGES

From 59a2b7ea4fec4f6054ff1228b86be190f80dd8d7 Mon Sep 17 00:00:00 2001
From: iadgovuser26 <iadgovuser26@empire.eclipse.ncsc.mil>
Date: Wed, 3 May 2023 18:44:14 +0000
Subject: [PATCH 5/5] Updated HIRS_Utils.gradle [no ci]

---
 HIRS_Utils/build.gradle | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/HIRS_Utils/build.gradle b/HIRS_Utils/build.gradle
index ec707fe4..ea0abd57 100644
--- a/HIRS_Utils/build.gradle
+++ b/HIRS_Utils/build.gradle
@@ -60,4 +60,11 @@ jar {
     }
      //jar name format: [archiveBaseName]-[archiveAppendix]-[archiveVersion]-[archiveClassifier].[archiveExtension]
      archiveVersion = jarVersion
-}
\ No newline at end of file
+}
+
+//task generateXjcLibrary(type:Exec) {
+//    workingDir 'config'
+//
+//    commandLine './genXjcLibrary.sh'
+//}
+//compileJava.dependsOn generateXjcLibrary