Commit Graph

364 Commits

Author SHA1 Message Date
iadgovuser58
560ee83eba switched expected/actual 2023-12-15 10:53:40 -05:00
iadgovuser58
0222ba2cf8 changed name of TPM2ProvisionerStateTest 2023-12-15 10:50:18 -05:00
iadgovuser58
7e749c49ab added back in 2 tests that were left out: testAppraiserNullName and testSetNameNull; will need main code fix to get tests to work 2023-12-15 09:51:16 -05:00
iadgovuser58
a51dd5f7df switched expected/actual; some of the functions were only testing junit equals instead of the lombok/external function equals so changed those back 2023-12-15 09:31:48 -05:00
iadgovuser62
2e8569d0c3 Adding AppraiserTest and TestAppraiser 2023-12-06 10:58:55 -05:00
iadgovuser62
6b12e3d894 Adding TestTPM2ProvisionerState 2023-12-06 10:52:22 -05:00
iadgovuser62
f78c84a19a Fixing deprecated method in CertificateTest 2023-12-06 10:43:55 -05:00
5B96790E3664F40075A67E6ADF737EDB15B4408DBC91A81228B31537B0CE3E26
2ab1e548ce
V3 json file platform (#631)
* Look for Component Class json on Windows. Update aca-windows

* Removed TPM from the ACA on Rocky image, changed container detection

* Change healthcheck function on windows.

* Remove commented code lines from aca_bootRun.ps1

* Added SWTPM to v3 ACA images. 

* Add build arg to the aca-windows Dockerfile to select base image tag

* Make ACA accessible from localhost
2023-12-06 10:20:56 -05:00
iadgovuser62
748d7a317f
HIRS_Utils Unit Tests Migration from /hirs/data/persist directory (#632)
* Adding TPMInfoTest with necessary resources, and adding EndorsementCredentialTest with approved fix to EndorsementCredential

* Adding CertificateAuthorityCredentialTest and adding mockito import to build.gradle
2023-12-05 15:09:01 -05:00
Cyrus
6d4dad2fee Updated the code so that the icon for firmware validation links to a RIM 2023-11-29 13:35:42 -05:00
Cyrus
8ae0745ac5 Fixed issues that caused the ACA to not complete a provision.
FWvalidator was using an object used by the tool and not the portal.
Updated a few repository calls
2023-11-28 15:39:33 -05:00
Cyrus
0a215d7973 Minor changes the main one is adding deviceName so that it is associated
with the platform certificate.  Added code for the componentInfo using
asText which isn't pulling the field value, to textValue
2023-11-27 16:10:51 -05:00
Cyrus
0422ad96b3 The query to search for a subject that matches the issuer was incorrect,
instead it was looking for the issuer, using the issuer.  This fixes
that problem and now the CA certificates link properly and draw a green
check mark
2023-11-21 10:21:32 -05:00
Cyrus
6191c5b086
Merge pull request #630 from nsacyber/v3_server-ui-fixes
V3 server UI fixes
2023-11-17 11:41:19 -05:00
Cyrus
861508c0ef Added finally touches to not display archived items. As well display
the correct count that doesn't include the archived items.  Also added
additional exception checks after testing uploading the wrong element to
the wrong /list page
2023-11-14 08:54:08 -05:00
Cyrus
cfb30d9a4b Updated code after recognizing an issue with archiving items. This
doesn't include updating the values displayed at the bottom of the list
page.
2023-11-13 16:56:16 -05:00
5B96790E3664F40075A67E6ADF737EDB15B4408DBC91A81228B31537B0CE3E26
1e3c7c78b0
Dockerfiles for v3 ACA. Also Powershell Package Scripts (#628)
* Package scripts for powershell

* Adding dockerfiles
2023-11-09 11:54:51 -05:00
Cyrus
f01b5a2060 This push has changes to resolve archivable items not updating the
archiveTime element.
2023-11-08 13:10:40 -05:00
Cyrus
433087961c Tested uploading a rimel that had multiple matching manufacturer and
model.  The repo to check for this wasn't returning a single unique result
and causes and error
2023-11-06 15:36:34 -05:00
chubtub
071981dcb0 Repeat changes to ReferenceManifestValidator from reverted commit 2023-11-01 11:54:29 -04:00
chubtub
55936806d7 Revert "Merge pull request #606 from nsacyber/v3_issue-596"
This reverts commit 071e89a44f, reversing
changes made to 45d550729f.
2023-11-01 10:03:34 -04:00
Cyrus
316f3ec99e
Merge pull request #620 from nsacyber/v3_rim-validator-update
Update to the RIM Validator
2023-11-01 06:48:48 -04:00
Cyrus
14c34b759b
Merge pull request #611 from nsacyber/v3_issue_610-unittest
[#610] HIRS_Utils Unit Tests Migration
2023-10-31 14:29:11 -04:00
Cyrus
1867e00301 Updated the Rim Validator to remove direct object parameters from the
database and pass in the information the methods needed to function
2023-10-31 10:48:37 -04:00
chubtub
55f80fe0e6 Migrate CertificateTest class to HIRS_Utils and update unit test dependencies following migration 2023-10-20 08:39:28 -04:00
chubtub
f96fa87138 Update import statements for dependents of RIM classes. Move PcIds class to HIRS_AttestationCA package. 2023-10-18 09:45:19 -04:00
chubtub
98a56a3f41 Merge branch 'main' into v3_issue-596 2023-10-17 16:50:40 -04:00
iadgovuser62
e8814af9f7 Adding TPMSecurityAssertionsTest 2023-10-17 12:10:51 -04:00
iadgovuser62
e5f655a069 Adding ComponentClassTest with necessary resources 2023-10-17 12:06:33 -04:00
chubtub
bfa30ca186 Change references in ACA and ACAPortal to HIRS_Utils package for migrated classes. Revert change to gradle.properties file. 2023-10-16 13:50:49 -04:00
Cyrus
f64d884abf
Merge pull request #605 from nsacyber/v3_provision-integration
HIRS ACA Provisioning
2023-10-16 12:21:03 -04:00
Cyrus
ec39bf55a3 Corrected an issue with the root CA looking itself causing an issue
because the one root CA had an illegal character.
2023-10-10 13:31:45 -04:00
Cyrus
556322ad39 Some additional changes to fix UI errors after I was able to test
against another machine.
2023-10-06 15:07:12 -04:00
iadgovuser62
10c28845d7
[#593] HIRS_Utils Unit Tests (#603)
* Added test path to HIRS_AttestationCA, including PortalInfoTest. Also added testImplementation lines to the subproject's build.gradle to give those classes access to JUnit5.

* Adding PlatformCredentialTest and CertificateTest, along with necessary resources in test path of HIR_AttestationCA

* Adding SupplyChainValidationTest
2023-10-05 14:31:29 -04:00
Cyrus
65a1105ff5 Minor changes, mostly syntax and log message removals 2023-10-05 10:54:25 -04:00
Cyrus
4de125c0f8 After some code review, there are changes and removals for the
provisioning process.  IdentityRequest is an old structure for the
provisioner and it has been removed and some preliminary code file
renames.
2023-10-03 09:53:48 -04:00
Cyrus
31066694ee Updates to the location of default property files and setting the
deviceName
2023-09-29 08:18:54 -04:00
Cyrus
8be945035d Some additional updates to fix visual changes on the screen. This one
is mainly with deviceName
2023-09-28 17:11:34 -04:00
Cyrus
c046851e07 Latest changes that fixes little issues 2023-09-28 06:47:43 -04:00
iadgovuser29
b3481f1668 Use protobuf-gradle-plugin to replace a system dependency 2023-09-24 11:59:32 -04:00
Cyrus
a08c007bba Some additional updates and changes while debugging 2023-09-22 11:50:28 -04:00
Cyrus
cb5b281d03 Missed updated constructor for Device 2023-09-21 16:25:01 -04:00
Cyrus
310102bc8a Missed files 2023-09-21 16:13:31 -04:00
Cyrus
4b67747e3e Updated the bulk of the code that does all provisioning from a client.
There is some parsed functionality to ease sorting through the changes
and updates needed in the future.
2023-09-21 15:02:24 -04:00
iadgovuser26
9fea7788ed
Merge pull request #584 from nsacyber/v3_provision-init-setup
Initial Setup for ACA provisioning
2023-09-18 09:01:31 -04:00
iadgovuser29
a56fd3a8fa Context change to enable path control [no ci] 2023-09-15 15:34:15 -04:00
Cyrus
771d5588d5 Updated the code to print out the available Restful URIs. Added some
modifications to the provisioner code for testing and updated the
Restful base mapping
2023-09-14 09:14:11 -04:00
Cyrus
1b7ba564d8 Messed up merging in versus other changes 2023-09-11 16:10:34 -04:00
Cyrus
a685e987ef Forgot to add updated new java 2023-09-11 16:08:30 -04:00
Cyrus
6bc6fa1cf1 Added code to check for multi pem single files 2023-09-11 16:03:01 -04:00
Cyrus
7337c115ca Copying the json files for component class and vendor table were taken
out of the set up script.  They are now causing errors because the files
can't be found.
2023-09-08 07:59:58 -04:00
Cyrus
6629a87d56 Looking into the DN missing from the certificate details page I
recognized that the setting of the variable for the portal page was
using the wrong getter method.
2023-09-07 15:24:16 -04:00
Cyrus
6b063d44e0 Updated a couple of files to resolve aca load issues 2023-09-06 11:10:57 -04:00
5B96790E3664F40075A67E6ADF737EDB15B4408DBC91A81228B31537B0CE3E26
58b5de3bbb
Merge pull request #574 from nsacyber/v3_issue_560-db_tls
[#560] Adds TLS to the hirs DB connector
2023-09-06 06:31:29 -04:00
iadgovuser59
0e6450da7f Adding PolicyTest and associated changes 2023-09-01 12:30:09 -04:00
Cyrus
d2963ef99a Resolved an issue with createTPMInfo. Created a new static class to
contain most of the generic generation code instead of the standard
provision handler classes.
2023-08-31 15:01:05 -04:00
Cyrus
6a2c5d246b This is a series of code changes to begin setting up for provisioning.
The code has not been tested to provision. The url linkage needs to be
worked on again.
2023-08-29 15:15:34 -04:00
iadgovuser26
88aa10010b cleaned up unused file 2023-08-18 16:38:53 +00:00
Cyrus
751a8104fc Updated all page controllers that were causing an issue to display
content based on the page allocations.
2023-08-04 10:13:25 -04:00
Cyrus
391a4691c5 This push fixes the dataTable ajax error when navigating to the device
page. And it incorporates Trust Chain acaCertificate.
2023-07-28 12:49:24 -04:00
Cyrus
6e96c32a5e Please enter the message for your changes.ssociated event values to the
support rim and delete them properly and to not also upload duplicate
issues. [no ci]
2023-07-11 07:07:13 -04:00
Cyrus
34aa54100e This push resolves the parsing issue of swidtags that may not meet the
validation based on an attribute not matching the spec.
2023-06-30 09:03:19 -04:00
Cyrus
67681c0227 This push fixes the issues with parsing the file tag and getting the
hash value for the support rim and as well for getting the collapsible
file link on the details page to operate. [no ci]
2023-06-29 07:49:32 -04:00
Cyrus
27e55ab2c7 Updated the RIM details page to search for the associated support rim if
the base doesn't have it.  This is a temp measure before completing #526 [no ci]
2023-06-29 07:38:57 -04:00
Cyrus
5ff5650be1 Small addition [no ci] 2023-06-29 07:38:57 -04:00
Cyrus
57632e0923 the DN compare of bouncy castle utils throws and exception if the object
is null.  Added additional condition to the if statement to check null
status.
2023-06-29 07:38:57 -04:00
Cyrus
2d5836b8b6
Merge pull request #541 from nsacyber/v3_filestore-bean-removal
Filestore Service Removal
2023-06-23 07:05:37 -04:00
Cyrus
520c18fcdf This check in updates the code to list the certificates on their
specific page, rather than all on any of them.  Next will be introducing
the new parsing code for RIM and TLS so that Trust Chains show up [no ci]
2023-06-21 16:12:26 -04:00
Cyrus
17e01d4e72 Removed FileStorageService autowiring 2023-06-16 13:48:12 -04:00
Cyrus
6dbbee1420 Fixed display issue on PlatformCredentials page and included 'fn' tag
reference on details pages.  Removed additional files that are not being
used. [no ci]
2023-06-16 07:51:30 -04:00
Cyrus
9fe89232a8 Second commit mainly containing new files 2023-06-13 10:12:25 -04:00
Cyrus
3a72583836 First commit with modified files [no ci] 2023-06-13 09:29:29 -04:00
Cyrus
0f8f266569 Missed small updates to imports and implementation lines in the
build.gradle. [no ci]
2023-04-26 08:32:45 -04:00
Cyrus
7d9f3d72f4 Updating the branch with additional code. The ACA loads, however
trust-chain does not.  I backed out x509 Certificate changes. [no ci]
2023-04-21 10:30:51 -04:00
Cyrus
9be3f3b3be Update the build.gradle and settings.gradle files [no-ci] 2023-03-07 09:23:55 -05:00
Cyrus
17a8732908 added in finished files 2023-03-06 20:56:34 -05:00
Cyrus
72aa426018 This is a complete refactor. This uses Hibernate 6, Springboot Framework
3, Java 17, Jakarta
2023-02-14 07:30:16 -05:00
iadgovuser26
0917b9a872
Merge pull request #460 from nsacyber/issue-448
[#448] Visual Updates for Firmware Validation
2022-04-29 12:36:26 -04:00
Cyrus
0b91c1e39a Updated the link from a failed validation to the base rim when the path
for the measurement can't be found.
2022-04-04 14:21:44 -04:00
Cyrus
f6bcb0c9ed Due to some testing, in situations were the client doesn't seen certain
files, this causes null pointers
2022-03-24 15:18:34 -04:00
Cyrus
dea58b1f07 The issue was resolved with the code changes. Removing comments 2022-03-21 14:43:52 -04:00
Cyrus
308064089c Checking git hub action error 2022-03-21 14:29:48 -04:00
Cyrus
6f71f48ad2 Removed comments and updated notes for Patching values 2022-03-21 10:11:23 -04:00
Cyrus
2e26823fc1 Did some testing on manual/curl uploading. This produced an error
because device name was being used to pull objects in the validation
quote part of the provision.  This was changed.  The event log is
deleted each time so that only one event log per device is maintained.
2022-03-21 09:51:32 -04:00
Cyrus
d4c35e09ab Updated the code to correctly include the supplemental digestvalues in
the firmware validation.
2022-03-16 09:06:04 -04:00
iadgovuser26
65471c87f1
Merge pull request #447 from nsacyber/issue-442
[#442] Provisioning Status Impl
2022-03-02 08:31:32 -05:00
Cyrus
6a8c0f47c0 Removed unused variables 2022-03-02 06:22:58 -05:00
Cyrus
7738a47b99 Updated the provisioner to respond to failed status instead of blank
certificates.  Updated the proto to use enum instead of bytes
2022-02-28 14:18:48 -05:00
Cyrus
acef2ea5b8 Added the new status for the state of the provision 2022-02-18 10:16:32 -05:00
chubtub
1fced3aa61 Resolve merge conflicts 2022-02-18 09:59:45 -05:00
chubtub
bf989bbee7 Merge branch 'issue-395' of github.com:nsacyber/HIRS into issue-395 2022-02-17 16:55:59 -05:00
Cyrus
470e6eccdf Refactored the Reference Digest code so that the ReferenceDigestValue
table is accessible and upated the contoller for the getOrderedList.
2022-02-17 16:48:08 -05:00
Cyrus
10915bdc3b Prelminary changes to remove ReferenceDigestRecord as a database object. 2022-02-17 13:11:41 -05:00
Cyrus
6abd87a192 Removed debug statements 2022-02-15 13:43:33 -05:00
Cyrus
99ba840a54 Fixed debug statement 2022-02-15 11:25:25 -05:00
Cyrus
0f839ebd08 This is a test commit. Changes will be removed. 2022-02-15 11:17:07 -05:00
Cyrus
e16f009294 Removed if check for the matching file name of the support RIM from the
Base RIMs meta data.  Only keying off hash.
2022-02-15 10:03:25 -05:00
Cyrus
caa2a7c55b Removed the RIM controller tests 2022-02-14 10:26:07 -05:00
Cyrus
fc3f59adce Updated RIM lookup to use manufacturer and model instead of deviceName 2022-02-11 09:09:39 -05:00
Cyrus
1f2be7ce18 Updated the live log information if the base and support rim are not
uploaded together.
2022-02-11 08:01:28 -05:00
Cyrus
2db5b86da1 Some minor updates. Fixed a null pointer exception in the
SupplyChainValidationServiceImpl.  Updated warnings when files are
missing from the device claim
2022-02-11 07:32:07 -05:00
chubtub
ea6bb48d06 Merge branch 'master' into issue-395 2022-01-27 10:58:16 -05:00
chubtub
c4b6aca667 Merge branch 'issue-395' of github.com:nsacyber/HIRS into issue-395 2022-01-24 14:35:01 -05:00
Cyrus
f503457bd4 Refactored the Reference Digest code so that the ReferenceDigestValue
table is accessible and upated the contoller for the getOrderedList.
2022-01-21 06:29:53 -05:00
Cyrus
6d8392da45 Prelminary changes to remove ReferenceDigestRecord as a database object. 2022-01-11 10:02:38 -05:00
Cyrus
5858e36313 Updated the implementation to return a blank identity claim response.
The provisioner tests the blob and if it is empty, exit
2022-01-05 16:49:27 -05:00
Cyrus
139e4c8972 Added null pointer check to RDR variable. 2021-11-24 14:27:15 -05:00
iadgovuser29
95c5e40f89 Utilize protobuf to parse claim response. Work on array handling on ACA. 2021-11-23 22:01:16 -05:00
Cyrus
cf4e641273 Added log statement for quote. 2021-11-23 09:40:11 -05:00
Cyrus
4c46758d9a This commit is a feature update. The IMA PCR enable/diable is being enhanced to update the mask the provisioner uses to pull the quote from the TPM. This code will send down a string range of PCR values that excludes PCR 10. The quote that is returned should be a composite without the PCR 10. There will be a log statement in this commit that should be removed. 2021-11-23 09:36:00 -05:00
chubtub
d183504a3f Merge branch 'master' into issue-381 2021-11-10 10:08:42 -05:00
Cyrus
2d9fb19d38 Updated the new polices after doing a bit of testing to make sure that they do ignore when there is a failure on that specific bit. 2021-11-10 07:27:33 -05:00
chubtub
e0a1e53d93 Handle an exception thrown when the provisioner fails to send RIM files to the ACA 2021-11-08 14:51:38 -05:00
chubtub
962ca45bb7 Modify ACA RIM validation to search for a signing cert if the base RIM does not have an embedded cert. Validate the ca chain of the found signing cert. 2021-11-08 14:46:04 -05:00
Cyrus
fe617ea948 Updated the policy code to ignore based on the TPM Log Event. Added in the code for OS Events. 2021-10-29 20:24:46 -04:00
Cyrus
c77ad68c08 The variable pcrValues in Abstract Attestation CA class didn't need to be global, this was removed and set to a local variable with an empty string. 2021-10-20 14:29:53 -04:00
Cyrus
f8a3ccd962 This is an initial commit updates the policy page. Adds additional policies for generating a DevID. The underlying code doesn't actually generate one yet. But the SupplyChainPolicy holds the flags. 2021-09-17 07:55:44 -04:00
iadgovuser29
85759dcf3f Fixed a couple errors in Impl.java and tests 2021-08-16 11:59:19 -04:00
Cyrus
bbed43c524 This is to resolve a merge conflict from the previous push 2021-06-28 12:21:54 -04:00
Cyrus
5c448057d4
Merge branch 'master' into fm-validation-pass-link 2021-06-28 12:15:47 -04:00
Cyrus
bdbe9332bc Resolved the merge conflicts. 2021-06-28 12:04:54 -04:00
chubtub
d1f0eb5d88 Check for an empty truststore during cert path validation. Removed the recursion in SupplyChainCredentialValidator.validateCertChain. 2021-06-25 11:40:08 -04:00
chubtub
93f212a193 Modify ReferenceManifestDetailsPageController class to include cert path check in reporting RIM signature validity. 2021-06-25 11:40:08 -04:00
chubtub
68c6447760 Add cert path validation to SupplyChainValidationServiceImpl class. Errors of this nature will be reported to the ACA under firmware. 2021-06-25 11:40:08 -04:00
Cyrus
be3cd2bd32 Removed the validation of the PCRs line by line for the expected PCR values. 2021-06-24 11:46:01 -04:00
Cyrus
b06025a71f Updated the Event Log Measurements class to use a hash for lookup 2021-06-17 12:52:28 -04:00
Cyrus
cd206f870c These changes may be removed because the issue is becoming more involved and I may need to rethink how this will work. 2021-06-16 08:52:40 -04:00
Cyrus
c523dda558 Some additional minor changes that are to address the event log being the object that is linked when the firmware validation passes. 2021-06-15 09:15:55 -04:00
Cyrus
9c060dec55 Updated event log measurements to pass in the overall result status. However display isn't printing out correctly. 2021-06-09 11:07:11 -04:00
Cyrus
0e8e88b536 This commit has updated changes that save both a base64 and a hex dec value of the RIM file hash to the database. Depending on what is needed, they are used to pull either the base or support RIM. Also fixed the link for the rimlinkhash on the details page. 2021-05-27 13:46:43 -04:00
Cyrus
8fbd6e1a39 Changed up some of the encoded for the rim byte array 2021-05-25 13:11:57 -04:00
Cyrus
7c86b6d0db Changed the pcr value check from the baseline expected pcr values to the measurement live log 2021-05-20 15:24:28 -04:00
Cyrus
65d596a756 Some additional updates that included deviceNames as a means to pull RIM information. In addition updated the display of the failures, adding filters for like events from the baseline. 2021-05-20 06:26:07 -04:00
Cyrus
ddc36d81f4 This set of code changes deals with the displaying of failed digests values from the validation process. The way there were displayed before was going to be unsustainable because event numbers will never match up. There for a direct compare to a failed event would never be accurate. 2021-05-17 12:44:03 -04:00
Cyrus
3b33bd60b8 The main change in this commit adjusts how the base and support rim are pulled for validation in the environment with multiple Base and Support RIMs per device/manufacturer/model. 2021-05-11 09:44:10 -04:00
Cyrus
1b06d956b4 Updated how the swidtags and support files are updated when imported. 2021-05-07 10:57:19 -04:00
Cyrus
5acc393541 This commit adds several changes that updates how the RIM files are accessed and made accessible from the DB as well as what is shown visually when there is a validation failure and the measurement log is shown. 2021-05-06 08:43:26 -04:00
Cyrus
61c4c81b77 Removed comments 2021-04-14 12:18:05 -04:00
Cyrus
5a82e48b61 Merge branch 'master' into event-digest-update 2021-04-13 08:50:42 -04:00
Cyrus
e70e019c6b This commit has some changes to how patch and supplemental are handled. It adds some flags to the Record and Value objects to note that data has been processed so that multiple entries aren't created. 2021-04-13 07:45:52 -04:00
Cyrus
760f246096
Merge pull request #342 from nsacyber/rim_digest_store
[#341] RIM Event Digest Store
2021-04-13 07:45:17 -04:00
Cyrus
39e2ab30d3 Corrected error. 2021-04-07 13:35:02 -04:00
Cyrus
29257695c1 Updated the code with some additional messaging information for the provisioner when it fails. I added a bit of code that eliminates the portal having an error when a support rim is failing, this doesn't allow it to ingest the rim into the database. 2021-04-07 10:53:09 -04:00
Cyrus
ea5b85b703 Updated the code to now display the var swidtag and rimel. However there are issues with the examples. This commit has fixes for how the pcr values are pulled for display on the base RIM page. 2021-04-02 06:34:47 -04:00
Cyrus
4911742c7a This is a checkout of some changes to the resource management for swid tags so that the file name listed is associated with the stored support RIMS. 2021-03-30 06:35:14 -04:00
Cyrus
a6c6fbfb31 Made some changes for using just the RIM Hash to pull support rims from the database to associated with the swid tag. Changed the rim hash from and int to a string. 2021-03-25 13:28:31 -04:00
Cyrus
c290ba25be Modified how unmatched log events are tested. Now it uses the reference event value from the database. 2021-03-23 13:13:17 -04:00
Cyrus
2110b7e94d Merge branch 'rim_digest_store' into event-digest-update 2021-03-23 11:31:42 -04:00
Cyrus
3e18ed8abb This small update changes where the string array of pcrs is pulled in the validation of the quote. Previously it is from the device info report but now it is from the bios measurement log file from the client. 2021-03-23 11:27:30 -04:00
Cyrus
30113c463a This is a quick fix for a null pointer exception that is occuring because the parsed values from the device's pcr list is not populated. They did have something but they didn't match what is in the RIM. Therefore, there should be a failure. 2021-03-22 09:52:26 -04:00