def execute(self): text, binary = self._readFileTextAndBinary(self.argRemainder[0]) fileType = None try: if text: decoder = PEMDecoder(text) if decoder.containsEncoded("TACK PRIVATE KEY"): fileType = "Private Key" kf = TackKeyFile.createFromPem(text, None) sys.stdout.write(str(kf)) return elif decoder.containsEncoded("TACK"): fileType = "Tack" tack = Tack.createFromPem(text) sys.stdout.write(str(tack)) return elif decoder.containsEncoded("TACK EXTENSION"): fileType = "TACK Extension" tackExt = TackExtension.createFromPem(text, True) sys.stdout.write(str(tackExt)) return elif decoder.containsEncoded( "CERTIFICATE"): fileType = "Certificate" sslc = TlsCertificate.createFromPem(text) sys.stdout.write(str(sslc)) return # Is it a certificate? try: sslc = TlsCertificate(binary) sys.stdout.write(str(sslc)) except SyntaxError: self.printError("Unrecognized file type") except SyntaxError as e: self.printError("Error parsing %s: %s" % (fileType, e))
def execute(self): text, binary = self._readFile(self.argv) fileType = None try: if text: decoder = PEMDecoder(text) if decoder.containsEncoded("TACK PRIVATE KEY"): fileType = "Private Key" kf = TackKeyFile.createFromPem(text, None) print(str(kf)) return elif decoder.containsEncoded("TACK"): fileType = "TACK" tack = Tack.createFromPem(text) print(str(tack)) return elif decoder.containsEncoded("TACK BREAK SIG"): fileType = "Break Sig" tbsList = TackBreakSig.createFromPemList(text) s = "" for tbs in tbsList: s += str(tbs) print(s) return elif decoder.containsEncoded("CERTIFICATE"): fileType = "Certificate" sslc = TlsCertificate() sslc.parsePem(text) print(sslc.writeText()) return # Is it an SSL certificate? try: sslc = TlsCertificate() sslc.parse(binary) print(sslc.writeText()) except SyntaxError: self.printError("Unrecognized file type") except SyntaxError as e: self.printError("Error parsing %s: %s" % (fileType, e))
def _getInputFile(self): fileName = self._getOptionValue("-i") if fileName is None: self.printError("-i missing (Certificate or TACK)") try: text, binary = self._readFileTextAndBinary(fileName) if text: pem = PEMDecoder(text) if pem.containsEncoded("TACK"): return (Tack.createFromPem(text), None) elif pem.containsEncoded("CERTIFICATE"): return (None, TlsCertificate.createFromPem(text)) else: self.printError("Unrecognized input file: %s" % fileName) else: return (None, TlsCertificate(binary)) except IOError: self.printError("Error opening input file: %s" % fileName) except SyntaxError: self.printError("Error parsing input file: %s" % fileName)