def getKeyFile(self, password): keyPemFile = self.argRemainder[0] if not password: password = self._promptPassword() try: if keyPemFile == "-": keyPemData = sys.stdin.read() else: keyPemData = open(keyPemFile, "rU").read() while True: try: inKey = TackKeyFile.createFromPem(keyPemData, password) return inKey except InvalidPasswordException as ipe: sys.stderr.write("Password incorrect!\n") password = self._promptPassword() except SyntaxError as e: self.printError("Error processing TACK Key File: %s\n%s" % (keyPemFile, e)) except IOError as e: self.printError("Error opening TACK Key File: %s\n%s" % (keyPemFile, e))
def execute(self): password = self._getPassword() keyFile = TackKeyFile.createRandom(password) self.outputFile.write(self.addPemComments(keyFile.serializeAsPem())) if self.isVerbose(): sys.stderr.write(str(keyFile) + "\n")
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 getKeyFile(self, password, mandatory): keyPemFile = self._getOptionValue("-k") if not keyPemFile: if mandatory: self.printError("-k missing (TACK Key)") else: return None if not password: password = self._promptPassword() try: if keyPemFile == "-": keyPemData = sys.stdin.read() else: keyPemData = open(keyPemFile, "rU").read() while True: try: inKey = TackKeyFile.createFromPem(keyPemData, password) return inKey except InvalidPasswordException as ipe: sys.stderr.write("Password incorrect!\n") password = self._promptPassword() except SyntaxError: self.printError("Error processing TACK Key File") except IOError: self.printError("Error opening TACK Key File: %s" % keyPemFile)
def execute(self): password = self._getPasswordWithPrompt() public_key, private_key = ECGenerator.generateECKeyPair() keyFile = TackKeyFile.create(public_key, private_key, password) self.outputFile.write(self.addPemComments(keyFile.serializeAsPem())) if self.isVerbose(): self.writeCryptoVersion() sys.stderr.write(str(keyFile))
def test_KeyFile(self): s = """ -----BEGIN TACK PRIVATE KEY----- AQAAIAAjOxiOdpiMo5qWidXwBTqJHxW5X1zRDBOA4ldqqFuKOSh6JJdrbXk1WsMN X/gyaVuHMBhC/g/rjtu/EnmIHoUuT9348iXeeROaLVRPdNqwr+5KEfjtTY7uXA6Q mhRUn+XmDePKRucRHYkcQaFPnzglrQ120Dh6aXD4PbtJMWajJtzTMvtEo9pNZhoM QTNZNoM= -----END TACK PRIVATE KEY-----""" publicKey = a2b_hex("87301842fe0feb8edbbf1279881e852e" "4fddf8f225de79139a2d544f74dab0af" "ee4a11f8ed4d8eee5c0e909a14549fe5" "e60de3ca46e7111d891c41a14f9f3825") privateKey = a2b_hex("fc815de8b1de13a436e9cd69742cbf2c" "d4c1c9bb33e023401d9291cf2781b754") kf = TackKeyFile.createFromPem(s, "asdf") assert(kf.getPublicKey().getRawKey() == publicKey) assert(kf.getPrivateKey().getRawKey() == privateKey) kf2 = TackKeyFile.createFromPem(kf.serializeAsPem(), "asdf") assert(kf2.getPublicKey().getRawKey() == publicKey) assert(kf2.getPrivateKey().getRawKey() == privateKey) kf3 = TackKeyFile.createRandom("123") kf4 = TackKeyFile.createFromPem(kf3.serializeAsPem(), "123") assert(kf3.getPublicKey().getRawKey() == kf4.getPublicKey().getRawKey())
def test_KeyFile(self): s = """ -----BEGIN TACK PRIVATE KEY----- AQAAIAAjOxiOdpiMo5qWidXwBTqJHxW5X1zRDBOA4ldqqFuKOSh6JJdrbXk1WsMN X/gyaVuHMBhC/g/rjtu/EnmIHoUuT9348iXeeROaLVRPdNqwr+5KEfjtTY7uXA6Q mhRUn+XmDePKRucRHYkcQaFPnzglrQ120Dh6aXD4PbtJMWajJtzTMvtEo9pNZhoM QTNZNoM= -----END TACK PRIVATE KEY-----""" publicKey = a2b_hex("87301842fe0feb8edbbf1279881e852e" "4fddf8f225de79139a2d544f74dab0af" "ee4a11f8ed4d8eee5c0e909a14549fe5" "e60de3ca46e7111d891c41a14f9f3825") privateKey = a2b_hex("fc815de8b1de13a436e9cd69742cbf2c" "d4c1c9bb33e023401d9291cf2781b754") kf = TackKeyFile.createFromPem(s, "asdf") assert(kf.getPublicKey().getRawKey() == publicKey) assert(kf.getPrivateKey().getRawKey() == privateKey) kf2 = TackKeyFile.createFromPem(kf.serializeAsPem(), "asdf") assert(kf2.getPublicKey().getRawKey() == publicKey) assert(kf2.getPrivateKey().getRawKey() == privateKey) public_key, private_key = ECGenerator.generateECKeyPair() kf3 = TackKeyFile.create(public_key, private_key, "123") kf4 = TackKeyFile.createFromPem(kf3.serializeAsPem(), "123") assert(kf3.getPublicKey().getRawKey() == kf4.getPublicKey().getRawKey())
def getKey(self, password): keyPemFile = self._getOptionValue("-k") if not keyPemFile: self.printError("-k missing (TACK Key)") if not password: password = self._promptPassword() try: keyPemData = open(keyPemFile, "rU").read() while True: try: inKey = TackKeyFile.createFromPem(keyPemData, password) return inKey except InvalidPasswordException, ipe: sys.stderr.write("Password incorrect!\n") password = self._promptPassword() except SyntaxError: self.printError("Error processing TACK Key File")
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 execute(self): password = self._getPasswordWithPrompt() public_key, private_key = ECGenerator.generateECKeyPair() keyFile = TackKeyFile.create(public_key, private_key, password) self.outputFile.write(self.addPemComments(keyFile.serializeAsPem())) self.printVerbose(str(keyFile))