def _getDerEncodedKeysFromEc(self, ec): # Get the ASN.1 ECPrivateKey for the object bio = BIO.MemoryBuffer() ec.save_key_bio(bio, cipher=None) pemEncodedKeys = bio.getvalue() return PEMDecoder(pemEncodedKeys).getDecoded("EC PRIVATE KEY")
def _getInputCertificate(self): contents = self._getInputFileContents() if contents is None: return None if PEMDecoder(contents).containsEncoded("CERTIFICATE"): certificate = TlsCertificate() certificate.open(self._getOptionValue("-i")) return certificate
def _getInputTack(self): contents = self._getInputFileContents() if contents is None: return None if PEMDecoder(contents).containsEncoded("TACK"): return Tack.createFromPem(contents) return None
def createFromPemList(cls, data): """Parse a string containing a sequence of PEM Tacks. Raise a SyntaxError if input is malformed. """ tacks = [] bList = PEMDecoder(data).decodeList("TACK") for b in bList: tacks.append(Tack(b)) return tacks
def createFromPemList(cls, data): """Parse a string containing a sequence of PEM Break Sigs. Raise a SyntaxError if input is malformed. """ breakSigs = [] bList = PEMDecoder(data).getDecodedList("TACK BREAK SIG") for b in bList: breakSigs.append(TackBreakSig(b)) return breakSigs
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)
def createFromPem(cls, pem): return cls(PEMDecoder(pem).decode("TACK"))
def createFromPem(cls, data): return cls(PEMDecoder(data).getDecoded("TACK BREAK SIG"))
def createFromPem(cls, pem, password): return cls(PEMDecoder(pem).decode("TACK PRIVATE KEY"), password)
def createFromPem(cls, data, extenderFormat=False): return cls(PEMDecoder(data).decode("TACK EXTENSION"), extenderFormat)
def createFromPem(cls, s): return cls(PEMDecoder(s).decode("CERTIFICATE"))
def parsePem(self, s): b = PEMDecoder(s).getDecoded("CERTIFICATE") self.parse(b)
def createFromPem(cls, data): return cls(PEMDecoder(data).decode("TACK EXTENSION"))