示例#1
0
    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))
示例#2
0
    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")
示例#3
0
    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))
示例#4
0
    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")
示例#5
0
    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)
示例#6
0
    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))
示例#7
0
 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())
示例#8
0
 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())
示例#9
0
文件: Command.py 项目: kilink/TACKpy
    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")
示例#10
0
    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")
示例#11
0
    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))
示例#12
0
    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))
示例#13
0
 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))
示例#14
0
 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))