* This pull request contains 2 main changes, the first is transferring the status text from the attributes failure to the icon specifically for platform trust chain validation. Then this removes the third column on the validation page that singles out the icons for the attribute status. In addition, this status is also rolled up to the summary status icon and displays the text there as well for all that have failed. This last change meant a change to the sizes of the columns in the database.
The validation of a single base certificate with an error was not handled in the code base. Due to the changes with the introduction of delta certifications, the validation was modified and only handled changes presented by the deltas and ignored errors in the base certificate. This commit modifies the code that if there is just a single base certificate that is bad and error is thrown.
* Add creation of bad base platform certificate.
* Adding Base Certificate system test.
* Adding Base Certificate system test.
* Adding Base Certificate system test.
* Adding Base Certificate system test.
* Updated script to add faulty components to bad base certificate.
* Updated addFaultyComponents script.
* Add Base/Delta system tests to .travis.yml
* Disable unit tests to decrease CI time.
* Cleaned up code.
* Cleaned up code.
* Delete system_test_Driver.py
* Updated code by removing a loop that wasn't necessary. It was supposed to filter out the deltas but this wasn't needed as the chain was established.
* The debug code was left in, this is now removed.
* This code change will add in the delta certficates to the platform validation check. The current base passes the policy check as long as the base is valid. The deltas are ignored. This is because the validation pulls in what is associated with a particular EK associated with the machine provisioning.
* This code adds functionality to check the delta certificates in a chain. The main operation validates that the delta belongs in that chain and then that the chain establishes correct component modification. No removes before an add, no add to a component that exists, no remove to a component that doesn't exist. The unit test was updated to not use any flat file certificate.
Closes#109
* Changes were made to the validation of a delta certificate based on newer information. There can be multiple bases and multiple leaves in a tree of associated certificates. However currently we don't have certificates to validate the entirety of the code to test.
* Updated the code to treat the platform attributes policy, if v2, against all in the chain rather than one at a time.
* Updated the page request controller to check if the platform certificate being uploaded is a part a chain that already exists in the DB. If so, throw an error.
* Updated code for unit test errors.
* This commit is to close#134. #133 and #134 are quick changes that modify the same file and use the same added method to pull in deltas associated with the platform serial number. This addition adds the feature to delete the chain if the base is deleted.
The tpm_version tool can sometimes print a null
value as part of the TPM major version if the major
version is less than 4 characters. These nulls are
now removed before printing.
* Updated the default values of the component identifier and component info classes. The provisioner side of the process was updated to populate with Empty, the current ACA is using ---.
* Updated unit tests. For the supply chain validation, I updated the validation fail message to include additional information.
* Updated code for the component identifier classes to correct the default values that can be seen from either paccor or devices when data isn't specified.
* Removed unused variable and change package for the EMPTY variable.
* This issue updates the UI for the newest V2 information for platform attribute certificates. This first push has updates from #111 for items 1, 2 and 3a/b.
* Updated for additional changes.
* Updated example of numerated base to delta certificates linked on platform details page instead of using previous and next buttons.
* Updated code to unlink supply chain identifier number if that is the current page.
* A unit test was failing because of the next spec and how the certificate string mapper was being used. I added a null check before sending it to a selector. In addition I updated the selector to print the actual variable name that of the field value failing for better clarity when it fails.
* Updated variable name to reflect changes in the issue around labeling certificates vs credentials.
* Added methods and placeholders for checking the supply chain for base and delta credentials according to the new TCG spec
Checkstyle changes
Created a new SupplyChainValidation.ValidationType for delta credential attributes. The existing PLATFORM_CREDENTIAL
ValidationType will be used for both base and delta platform credentials from spec 1.1.
* Checkstyle error: trailing spaces
The TPM 2 Provisioner gets packaged with an application called
tpm_version, which reported hard-coded values for the TPM
manufacturer and version. Now it collects those things from
the TPM and reports them.
There were some warnings generated by Doxygen when compiling.
One was from an undocumented parameter for a method in the
Properties class. Many others were due to a setting that prevented
Doxygen from being able to associate function declarations with
their definitions if their parameters used standard library objects.
* Updated CONTRIBUTING.md
* Remove old CI Runner config
* [#1] Add support for processing ECC certificates as part of the trust chain
* [#3] Ensure ACA and TPM2 Provisioner handle versioning correctly
* [#3] Ensure ACA and TPM2 Provisioner handle versioning correctly
* Update Link to Build Instructions on main README
* Fixed link to the Platform Credential Profile.
* [#7] Support Building (Not Packaging) on Ubuntu 18.04
* [#10] Fix representation of zero-valued hashes
Zero-value hashes, and hashes of no data, are now
considered as matches to equal values instead of
treating them as 'unknown'.
* [#12] Setup basic Travis CI build
* Update README to include Build Status
* [#7] Setup Build/Package Support for Ubuntu (#9)
* Updating the certificate details page to display the Holder information and include a link to the associated Endorsement Certificate.
* Adding ability to delete Attestation Certificates on the ACA.
* [#14] Parallelize Subproject CI Builds and Pull Pre-Built Image
* Revise Docker to Always Pull Latest HIRS project
* This change forces the supply chain validation service to verify that the Platform Credential has a status of PASS. If it does not, no matter the outcome of the Attributes validation, the status of the Attributes can not be PASS.
Added an additional null check for a platform supply validation. Added a mapping object for platform credential to the associated attributes during validations.
Added an additional null check for a platform supply validation. Added a mapping object for platform credential to the associated attributes during validations. Missed import statement.
* Adding Tpm2-tss support for Deb packaging.
Changes how tpm20.h, which contains the TPM2 SAPI, is
imported to allow successful packaging of both debs and
rpms.
* [#23] Update HIRS Utils and ACA to handle certificate padding (#26)
* [#27] Fix TPMSecurityAssertions Parsing in EndorsementCredential (#31)
* [#28] ACA RPM modifies SELinux policy to allow Tomcat to use MySQL.
The CentOS7 package selinux-policy-targeted does not allow Tomcat
to use port 3306, which is the default MySQL port. This commit
changes the ACA RPM to modify the SELinux policy to grant that
permission on fresh installs. This makes the ACA RPM now require
the policycoreutils package to be installed.
* Print provisioner installation comments to console
* [#25] Make ACA exception handling more descriptive
* [#38] ACA checks uploaded EK Certs if one is not provided during provisioning
* [#7] Ensure Ubuntu support pending end-user installation of supported TPM2 Libraries
* [#33] IMA baselines can match measurements based solely on hashes (#34)
ImaAcceptableRecordBaseline and its subclasses have been updated to include
a containsHashes method to be able to match IMA measurement records
based solely on their hashes. Supporting classes have been
updated or created as necessary.
Additionally, the set of path equivalencies as specified in the IMA
policy have been updated to include additional entries.
Closes#33.
* Updated for release 1.0.2
* [#32] Add package stage to Travis Build
* [#47] Prevent deletion of external dependencies for TPM 2.0 Provisioner (#48)
* [#41] Provisioners use PACCOR for device info collection. (#45)
The provisioners used to shell out using different tools
to collect device info. Now they both use PACCOR instead.
* [#49] Modify getPolicy behavior to reflect use
DBPolicyManager's getPolicy(appraiser, device) has historically
returned the default policy for an appraiser if none is defined
in the device group that the given device belongs to. However,
this behavior does not in fact support the current use of devices,
groups, and policies; in the case where a group has no policy
assigned for a type of appraiser, the system is in a state
where that type of appraisal will not occur for devices in
a given group. To better reflect desired behavior, the method
now returns null if a policy is not explicitly set for
the given (appraiser, device group) pair.
Closes#49.
* [#52] Make TPM2 Provisioner check for a running Resource Manager (#53)
[#52] Make TPM2 Provisioner check for a running Resource Manager
* [#55] Add displayTitle to Alert
These changes simply add a field called
'displayTitle' to the Alert class to hold
a human-readable title for each Alert instance.
Closes#55.
* Add changes for device deletion.
Changes data structures to facilitate deletion of devices
from the DB and all other entries with foreign key relationships.
* TPMBaseline.isEmpty() method, activated tests
Added unit test for TPMBaseline.isEmpty(). Change exception type thrown in generator class
Added unit tests to account for both an empty and a non-empty baseline object
Checkstyle changes
* Replace Refs of yum localinstall with yum install
There is no functional difference between `yum install` and `yum localinstall`, however the former is preferred for modern conventions' sake.
* [#62] Cleaned up preprocessor file expansion.
There were unnecessary references to file paths in the executable.
* [#43] Additional certificate fields to display
* This change adds in additional information about the certificate, which include the public key and signature algoritms and their sizes, the key usage and extended key usage, the certificate version number for EK and CA certs and the issuer section expanded with Auth Key Id and Auth Info Access.
* Made some fixes to the platform class print out. Needs to print out string representation of the value.
* Additional changes for the certificate details page. Going over the spec determining what should be shown and what should be hidden if no information is specified.
* This change adds in additional information about the certificate, which include the public key and signature algoritms and their sizes, the key usage and extended key usage, the certificate version number for EK and CA certs and the issuer section expanded with Auth Key Id and Auth Info Access.
Made some fixes to the platform class print out. Needs to print out string representation of the value.
Additional changes for the certificate details page. Going over the spec determining what should be shown and what should be hidden if no information is specified.
Small updates to code commits and statements
* Stashing changes.
* Correcting some unit test fail instances. The PC Test fails because the tested cert is not updated to new (constantly changing) specs. Not just on the value but also on the value type.
* Fixing git merge meta data.
* Updates to include the Authority Key information as a set rather than just one item. Using a bouncy castle defined class.
* Reversed the type of variable the public key value returns so that the unit test for it doesn't have to change. The type wasn't important, it was a convenience decision.
* Adding changes based on review comments from @apldev3.
* Made changes based on github review comments.
* Additional changes for github comments
* Updated the code for the public key size on CA and EK certificates. There was a previous issue with 4 additional bytes being included in the size.
* Some more changes for Github comments
* Add selector for Endorsement Credential and Platform Credential Deletion (#66)
Adds a selector method to retrieve ECs and PCs by their associated device
so they can be deleted.
* [#69] Add null checks to Component Identifier Serial/Revision Trimming (#70)
* [#54] ACA Users guide (#57)
* Added the ACA Users Guide
* Updated the installation notes on the ACA portal help page
* changed format of user guide from pdf to doc
* [#54] Edit ACA Users Guide
* Updated the ACA Install and User Guide
* Added the ACA Users Guide.
Updated the ACA install Notes and added the ACA User Guide.
* [#46] Setup Travis for HIRS Integration Tests (#68)
* [#46] Ensure Travis mounts repository rather than clones it in Docker
* [#46] Containerize HIRS ACA and prep ACA container for Integration Tests
* [#46] Containerize HIRS TPM2Provisioner and prep TPM2Provisioner container for Integration Tests
* [#46] Replace localinstall with install
* [#46] Prevent rebuilding of packages unnecessarily
* [#46] Finish initial docker compose setup for integration tests
* [#46] Allow for detection of complete Integration Environment Setup
* [#46] Fix Travis CI to allow for detecting Integ Test Environ Stand-Up
* [#46] Fix Initial Integration Test Script
* [#46] Troubleshoot Integration Test script
* #67 Add systems tests for HIRS Provisioner TPM 2.0 (#73)
* Added System Tests.
* Cleaned up scripts
* Cleaned up system tests.
* Cleaned up system tests.
* Cleaned up system tests.
* Updated system tests.
* Code review updates.
* Fix Style Issue in Build (#76)
A couple of variables had conflicting names and the inner scope was
shadowing the outer. Style checker was complaining. Deleted one inner
definition and renamed another variable.
* Incremented VERSION to 1.0.3 (#81)
* [#78] hirs-provisioner-tpm2 on path after installation. (#84)
There was a problem in the rpm-post-install.sh script
that ran as part of the CentOS7 rpm installation where
a link was being created called libcurl.so which pointed
to libcurl.so.4. If the link could not be created because
it already existed, the script would quit before finishing
and never place hirs-provisioner-tpm2 in a directory on
the PATH.
The proper solution was to link hirs-provisioner against
libcurl.so.4 so that it is clear which version of the API
was compiled against. This was not happening because
we were linking against a version of curl build by the CPR
project which was not properly embedding the SONAME in the
shared object file. By linking instead against the shared
object file distributed in the development package of
libcurl, hirs-provisioner-tpm2 now looks for libcurl.so.4
rather than the generic libcurl.so. This will prevent our
executable from breaking if libcurl.so gets updated to point
to a newer version of libcurl that uses a different API.
Closes#78.
* [#82] Systems Tests not Reporting Failure Correctly (#83)
* Test failing system tests report correctly in Travis.
* Test successful system tests report correctly in Travis.
* Test failing system tests report correctly in Travis.
* Test successful system tests report correctly in Travis.
* Test failing system tests report correctly in Travis.
* Test successful system tests report correctly in Travis.
* [#71] Dockerize TPM 1.2 Provisioner and Integrate with Docker Compose (#77)
* [#71] Initial Dockerization of TPM 1.2 Provisioner
* Fix permissions on new script
* Fix current bugs
* [#71] Try a new direction for setting up TPM 1.2 Provisioner Testing
* [#71] Attempt to the latest version of Trousers on Travis CI VM for 1.2 Provisioner support
* [#71] Try IBM TPM 1.2 Emulator
* [#71] Move towards cleaning up work
* [#71] Update TPM1.2 Provisioner Docker to work with Docker Compose in Systems Test
* [#71] Get TPM 1.2 Provisioner to provision successfully in Docker container
* Update system tests script to include TPM 1.2 Provisioner container
* [#71] Separate TPM 1.2 and 2.0 Provisioner System Tests
* [#71] Pipe TPM Emulator log output to file to clear up system test output
* [#87] Combine Packaging and System Tests into One Travis Test Phase (#89)
* [#91] Add Authority Information Access to Issuer field of Attribute Certificates (#92)
* Updated code base for Attribute Certificates. They are currently not showing Authority Information Access in the Issuer field on the certificate details page. The code was not written to handle this
or to set it.
* Updated unit tests to test Authority Info Access and Key Identifier.
* Adding extra certificates to be used in the new tests.
* Updated unit test, the new tests were missing the @Test parameter.
* [#19] General Name/DN equals functionality (#93)
* Adding new class GeneralNames, I will be changing it to adjust to the bc class as to not confuse the two. This class takes the subject string and parse out the information for comparsion.
* Adding file I didn't have tracked in the previous commit.
* Updating code to handle the instance of multiple organization units.
* A null exception was being thrown from the unit tests for the organization unit variable.
* Add some comments
* continued testing and updates are needed.
* Cleanup - removed excess commented code and debug lines.
* Updating code base to use X500Name for name compares, removing GeneralNamesParser.java file as it is not necessary
* Updated for final changes.
* Modification to previous changes per request on github. Separated out compare method into its own class and created unit tests.
* Added Users Guide to the Quick Links section
* [#72] Supply Chain Validator fix and update (#94)
* This fix correct an IllegalStateException for the SupplyChainValider when all policy settings are true. When trying to remove a value from the iterator in the validator, the item was null and caused this issue. This also takes out the Platform Serial as a required field.
Closes#72
* checking in a small change that puts back in a line for checking the serial number. It has been changed from FAIL to PASS however.
* Committing updated changes.
* Committing test certs for changes.
* Updated unit tests
* Fixing travis checkstyle for URISyntaxException missing from UnitTests
* [#96] Validation tooltip update (#98)
* Updating code to list what specifically is unmatched for platform components on the validation page when there is a failure.
* Updates include a small shift for the policy page, putting the correct order for setting them (top to bottom). Updated unit tests for the additional text that now appears on the tool tip for the validation failure icon.
* Updates to allow for TPM 2.0 quote.
* [#106] Platform Configuration v2 (#112)
* These changes are the beginning stage for spec 2 changes to the platform configuration section of the attributes platform certificate.
* Updated typos and corrected check style errors.
* Updating Platform Credential Unit test from #24
* Added unit test resource
* [#24] Implementation of Component Class field (#114)
* This is new code that parses a new field in the upcoming TCG spec for the platform components fields. The new field indicates the type of hardware (ex Memory - DDR3). This information wasn't provided before so it wasn't always clear what the component was. The new information is provided in a json file. A unit test was created to test the different variations. This commit does not include hooks in the base code to use this class yet. This commit is mainly to include the added library and correct bug and checkstyle issues associated with the new code.
Closes#24
* Removed duplicate CONSTANT variable.
* Added newline
* Added Newline
* Updated variable names for json object.
* Fixed line length style error.
* This is an initial set up for the new tagged elements for the component identifier.
* This is an initial set up for the new tagged elements for the component identifier.
* Split out functionality for version 2 changes. Added a new class to handle newer component elements.
* Split out functionality for version 2 changes. Added a new class to handle newer component elements.
* Updated for how to display version 2 versus version 1.
* Updated for how to display version 2 versus version 1.
* Moved V2 versions of class files to V2 specific folder.
* Moved V2 versions of class files to V2 specific folder.
* Debugging a problem with the componentclass portion of the spec 2 certificate. Pushing up so that I can debug at a different location.
* Debugging a problem with the componentclass portion of the spec 2 certificate. Pushing up so that I can debug at a different location.
* Updated changes that fixed a bug. The V2 of component identifier wasn't actually being used, and causes the cert to not upload.
* Updated changes that fixed a bug. The V2 of component identifier wasn't actually being used, and causes the cert to not upload.
* Additional changes made to resovle unit test failures and changes made to the unit test to validate some of the additional changes.
* Additional changes made to resovle unit test failures and changes made to the unit test to validate some of the additional changes.
* Fixed checkstyle issue of unused import.
* Fixed checkstyle issue of unused import.
* Last minute changes to fix some elements that were missed as prep for pull request.
* Last minute changes to fix some elements that were missed as prep for pull request.
* Update CertificateIdentifier for the issuerDN field so that findbugs does not error on the line setting it only to null.
* Update CertificateIdentifier for the issuerDN field so that findbugs does not error on the line setting it only to null.
* Updates to the placeholder class to avoid findbug errors.
* Updates to the placeholder class to avoid findbug errors.
* Added instanceof object check for attribute status in platform property V2 as an additional safeguard against type mismatch.
* Added instanceof object check for attribute status in platform property V2 as an additional safeguard against type mismatch.
* Corrected logic on AttributeStatus isRemoved method.
* Removed reference to ComponentClass in V1 of ComponentIdentifer. Updated CertificateIdentifer to deal with tagged objects being optional, therefore the check for required in constructor is unnecessary.
* Updated the parsing statements for the CertificateIdentifier's elements.
The tpm_aca_provision script used to try to guess the version
of the TPM on the machine and call the appropriate command
to provision the TPM. However:
1. The guessing was error prone,
2. The command to provision the TPM is the same regardless of the
TPM version, and
3. By the time the script is run, either the TPM Provisioner 1.2
package or the TPM Provisioner 2.0 package has already been
installed. By that point, it's too late to be wondering which
version of TPM is on the machine. The decision of which package
to install is guided by the documentation.
* This is new code that parses a new field in the upcoming TCG spec for the platform components fields. The new field indicates the type of hardware (ex Memory - DDR3). This information wasn't provided before so it wasn't always clear what the component was. The new information is provided in a json file. A unit test was created to test the different variations. This commit does not include hooks in the base code to use this class yet. This commit is mainly to include the added library and correct bug and checkstyle issues associated with the new code.
Closes#24
* Removed duplicate CONSTANT variable.
* Added newline
* Added Newline
* Updated variable names for json object.
* Fixed line length style error.
* These changes are the beginning stage for spec 2 changes to the platform configuration section of the attributes platform certificate.
* Updated typos and corrected check style errors.
* Updating Platform Credential Unit test from #24
* Added unit test resource
* Updating code to list what specifically is unmatched for platform components on the validation page when there is a failure.
* Updates include a small shift for the policy page, putting the correct order for setting them (top to bottom). Updated unit tests for the additional text that now appears on the tool tip for the validation failure icon.
* This fix correct an IllegalStateException for the SupplyChainValider when all policy settings are true. When trying to remove a value from the iterator in the validator, the item was null and caused this issue. This also takes out the Platform Serial as a required field.
Closes#72
* checking in a small change that puts back in a line for checking the serial number. It has been changed from FAIL to PASS however.
* Committing updated changes.
* Committing test certs for changes.
* Updated unit tests
* Fixing travis checkstyle for URISyntaxException missing from UnitTests
* Adding new class GeneralNames, I will be changing it to adjust to the bc class as to not confuse the two. This class takes the subject string and parse out the information for comparsion.
* Adding file I didn't have tracked in the previous commit.
* Updating code to handle the instance of multiple organization units.
* A null exception was being thrown from the unit tests for the organization unit variable.
* Add some comments
* continued testing and updates are needed.
* Cleanup - removed excess commented code and debug lines.
* Updating code base to use X500Name for name compares, removing GeneralNamesParser.java file as it is not necessary
* Updated for final changes.
* Modification to previous changes per request on github. Separated out compare method into its own class and created unit tests.
* Updated code base for Attribute Certificates. They are currently not showing Authority Information Access in the Issuer field on the certificate details page. The code was not written to handle this
or to set it.
* Updated unit tests to test Authority Info Access and Key Identifier.
* Adding extra certificates to be used in the new tests.
* Updated unit test, the new tests were missing the @Test parameter.