mtls-cli icon indicating copy to clipboard operation
mtls-cli copied to clipboard

Possible bug in in `_has_root_cert`

Open dpc opened this issue 3 years ago • 1 comments

I added some debug prints:

    def _has_root_cert(self):
        if sys.platform == "darwin":
            name = self.ca_cert_file_path
        else:
            name = "{server} Root CA".format(server=self.server)
        print("Vaild cert? ")
        print(self.check_valid_cert(name, usage="CT,T,T", is_root=True))
        if self.check_valid_cert(name, usage="CT,T,T", is_root=True):
            print("Yes? True.")
            return True
        print("No? False.")
        return False

result:

> mtls -s some-prod certificate create
Retrieving CRL from server...
Writing CRL to /home/dpc/.config/mtls/some-prod/crl.pem
Vaild cert? 
(False, False, False)
Yes? True.
Decrypting User Key...
Generating CSR for bitgo-prod
Signing CSR for verification on server...
CSR Public key does not match previous user key

AFAICT a tuple of three False values becomes True, which is :sus:.

dpc avatar May 19 '22 20:05 dpc

That's because Python's __bool__ implementation only checks if len(x) != 0. This can be fixed if any/all are used instead, depending on the use case. In this case I think any(self.check_valid_cert(name, usage="CT,T,T", is_root=True)) would work

nocturn9x avatar Mar 25 '23 09:03 nocturn9x