Esempio n. 1
0
File: app.py Progetto: ha-D/netsec
def initKeys():
    # Initialize KeyManager
    keyManager = app.keyManager
    keyParser  = KeyParser()

    # Read public keys
    keyDir = app.config.get("public-key-directory")
    for f in os.listdir(keyDir):
        path = os.path.join(keyDir, f)
        name = f.replace('.pub', '')
        key = keyParser.readPublicKey(path)
        keyManager.addPublicKey(name, key)
        logger.debug("Public key for '%s' read from %s" % (name, path))

    # Read private key
    keyPath = app.config.get("private-key-file")
    key = keyParser.readPrivateKey(keyPath)
    keyManager.setMyKey(key)
    logger.debug("Private Key read from %s" % keyPath)

    logger.split()
Esempio n. 2
0
    def _getSessionKey(self, message):
        try:
            certificate = message['certificate']

            # Create Cert

            # This is not working
            #cert = m2c.X509.load_cert_string(certificate)
            # Stupid hack to get it working
            tmp = open('.tmp.cert', 'w')
            tmp.write(certificate)
            tmp.close()
            cert = m2c.X509.load_cert('.tmp.cert')

            if not self.factory.authNode.validateCert(cert):
                logger.info("Invalid Certificate received from %s" % self.transport.getPeer())
                reply = SecureMessage()
                reply['status'] = 'invalid'
            else:
                logger.verbose("Certificate validated")
                reply = SecureMessage()
                reply['status'] = 'ok'

                sessionKey = self.factory.authNode.generateSessionKey(cert)

                logger.verbose("Generated session key '%s'" % sessionKey.hex())
                logger.verbose("Sending session key to client..")

                publicKeyPem = cert.get_pubkey().get_rsa().as_pem()
                keyParser = KeyParser()
                publicKey = keyParser.parsePemPublic(publicKeyPem)
                encSessionKey = publicKey.publicEncrypt(sessionKey.hex())

                reply['encrypted-session-key'] = encSessionKey
            logger.split()
            self.sendMessage(reply.sign())

        except KeyError as e:
            return self.factory.fail("Get-Session-Key no: '%s' field found in message" % e)
Esempio n. 3
0
qQo43sE/SIWpuv+aeX/Xp/580vuclTT3AgMBAAECgYNrPCR3ePZW6pFG//Em7JGu
5x9a7NiayfqtUoieMj09YfTnImSMud9muZW307GYizBAeJUzqKGJcqZUebg/djMS
onyf0tSScUFhGLE8Kw3G0ovnuiNmBMn1mpsKFjqJC05YOuFYx7vtbJvgz53uiv5P
kWSHpT32Ra+f89NagMLJEa1/6QJCD3jHSOpnUuo/P1d8A5PWfWUunnd/i5Vd9S+k
5zSLv4hKfJVXKmQkU7nNA9J9o3QoJDJ39ZmDfhRqJ6xlRHm7JJX1AkINJcmuQObL
6N6hml0+8jV62dNee3ows/wmT/Y73PFBghijPF6JZr2BUPv2jbM1PFyBBVd5kiLS
3HuMQ0WKHz0HH7sCQgkzLn1DNTFurTFDGjEeZbqmwfPk5ujfZsF3FT2OV1MK/g/a
1bwVVCydHTWaoq7hUUVE5WQbZr8/8Geq8YSoRgnZSQJBQjMCS2J+tjjSwt98onTs
0qX2oMUZeiDGfCIisUjJeg6T/1b4qt2lUntyMP1KWcKUAw/iYz5uGUoQyy3t9olT
v4sCQghLofXF4dWARCQWrQO9slRqIxQv3jECOWZe0K9xkPqxdYICilG4heWinnR6
zpTDphuNwJGteP6jy2+dNa15wlEN1w==
-----END PRIVATE KEY-----"""

publicKeyPem = """-----BEGIN PUBLIC KEY-----
MIGiMA0GCSqGSIb3DQEBAQUAA4GQADCBjAKBhADLasPd7PhncnH9Fu8xk6EXgJkw
miY3hK7GwPMqDoil6dyarll1f/IDyUohXoWou8yLR7d5mbWqcr75Cue2TkfduDd9
UIpfo5kgHpmSpIn5nohpnT7vKxWZbvpjrFUOflsDkIGHfJuffppUi6kKON7BP0iF
qbr/mnl/16f+fNL7nJU09wIDAQAB
-----END PUBLIC KEY-----"""

keyParser = KeyParser()
privateKey = keyParser.parsePemPrivate(privateKeyPem)
publicKey = keyParser.parsePemPublic(publicKeyPem)



testString = "haha hoho"
enc = publicKey.publicEncrypt(testString)
dec = privateKey.privateEncrypt(enc)

assert dec == testString