def eccGenerate(self):
     '''Generates Elliptic Curve Public/Private Keys'''
     ecc = ECC.generate()
     publicKey = ecc._public
     privateKey = ecc._private
     curve = ecc._curve
     return privateKey, publicKey, curve    
Example #2
0
 def eccGenerate(self):
     '''Generates Elliptic Curve Public/Private Keys'''
     ecc = ECC.generate()
     publicKey = ecc._public
     privateKey = ecc._private
     curve = ecc._curve
     return privateKey, publicKey, curve
Example #3
0
 def __init__(self, address):
     self.ecc = ECC.generate()
     self.publicKey = self.ecc._public
     self.privateKey = self.ecc._private
     self.curve = self.ecc._curve
     self.node_id = hashlib.sha1(publicKey).digest()
     self.node_id_hex = binascii.b2a_hex(self.node_id_b)
     self.socket_path = os.path.join("nodes", node_id)
     self.address = address
Example #4
0
    def __init__(self, key = None):
        if key is None:
            self.key = ASymKey()
        else:
            self.key = key

        private = ''
        self.no_private = True
        if isinstance(self.key.private, str):
            private = self.key.private
            self.no_private = False
        self.ecc = ECC(public=self.key.public, 
                       private=private,
                       curve=self.key.curve)
Example #5
0
class ASymEnc:
    def __init__(self, key = None):
        if key is None:
            self.key = ASymKey()
        else:
            self.key = key

        private = ''
        self.no_private = True
        if isinstance(self.key.private, str):
            private = self.key.private
            self.no_private = False
        self.ecc = ECC(public=self.key.public, 
                       private=private,
                       curve=self.key.curve)

    def encrypt(self, data):
        if self.no_private:
            raise Exception("Encryption requires a private key")
        encrypted = self.ecc.encrypt(data)
        encrypted = ASymEncData(self.key.curve, encrypted)
        encrypted = EncResult(encrypted, self.key.hmac_key)
        return encrypted
    def decrypt(self, data):
        decrypted = EncResult(data, self.key.hmac_key)
        if decrypted.verify(): 
            decrypted = self.ecc.decrypt(data.enc_data.data)
            return decrypted
        else:
            raise Exception('HMAC invalid')
    def sign(self, data):
        if self.no_private:
            raise Exception("Signing requires a private key")
        signature = self.ecc.sign(data)
        return base64.b64encode(signature)
    def verify(self, data, signature):
        return self.ecc.verify(data, base64.b64decode(signature))
Example #6
0
 def __init__(self, key = None):
     if key is None:
         self.ecc = ECC.generate()
         self.public = self.ecc._public
         self.private = self.ecc._private
         self.curve = self.ecc._curve
     else:
         self.public = key['public']
         self.private = key['private']
         self.curve = key['curve']
     self.hmac_key = None
     if isinstance(self.private, str):
         h = SHA256.new()
         h.update(self.private)
         self.hmac_key = h.digest()
Example #7
0
        return [ Node.factory(y[0], y[1]) for y in [ x.split(':') for x in val.split(' ') ] ]
    def generate_response(self, val):
        val = binascii.a2b_hex(val)
        closeness = [(binascii.b2a_hex(xor_str(val, self.node.node_id)), node) for node in known_nodes]
        closeness = sorted(closeness, key=lambda x: x[0])
        nodelist = (' '.join(["%s:%s" % (x[1], known_nodes[x[1]]) for x in closeness]))
        return nodelist

class AUTH:
    def __init__(self, node):
        self.node = node
    def do(self, node):
        

# Should research how good this is
ecc = ECC.generate()
 
publicKey = ecc._public
privateKey = ecc._private
curve = ecc._curve
print("Priv",privateKey)
print("Pub",publicKey)
print("Curve:",curve)

# maybe sha512?
node_id = hashlib.sha1(publicKey).hexdigest()
print("Node ID:", node_id)
socket_path = os.path.join("nodes", node_id)
print("Socket:", socket_path)
def not_str(s):
    return ''.join(chr(0xFF & ~ord(a)) for a in s)
Example #8
0
 def eccVerify(self, publicKey, curve, data, signature):
     '''Verifies ECC Signature based on Data received - Returns a Boolean Value'''
     ecc = ECC(1, public=publicKey, private='', curve=curve)
     return ecc.verify(data, signature)
Example #9
0
 def eccSign(self, privateKey, curve, data):
     '''ECC Signing - Returns an ECC Signature'''
     ecc = ECC(1, public='', private=privateKey, curve=curve)
     signature = ecc.sign(data)
     return signature
Example #10
0
 def eccDecrypt(self, privateKey, curve, data):
     '''Decrypts Data with ECC private key'''
     ecc = ECC(1, public='', private=privateKey, curve=curve)
     decrypted = ecc.decrypt(data)
     return decrypted
Example #11
0
 def eccEncrypt(self, publicKey, curve, data):
     '''Encrypts Data with ECC using public key'''
     ecc = ECC(1, public=publicKey, private='', curve=curve)
     encrypted = ecc.encrypt(data)
     return encrypted
Example #12
0
 def eccVerify(self, publicKey, curve, data, signature):
     '''Verifies ECC Signature based on Data received - Returns a Boolean Value'''
     ecc = ECC(1, public=publicKey, private='', curve=curve)
     return ecc.verify(data, signature)
Example #13
0
 def eccSign(self, privateKey, curve, data):
     '''ECC Signing - Returns an ECC Signature'''
     ecc = ECC(1, public='', private=privateKey, curve=curve)
     signature = ecc.sign(data)
     return signature
Example #14
0
 def eccDecrypt(self,privateKey, curve, data):
     '''Decrypts Data with ECC private key'''
     ecc = ECC(1, public='', private=privateKey, curve=curve)
     decrypted = ecc.decrypt(data)
     return decrypted
Example #15
0
 def eccEncrypt(self,publicKey, curve, data):
     '''Encrypts Data with ECC using public key'''
     ecc = ECC(1, public=publicKey, private='', curve=curve)
     encrypted = ecc.encrypt(data)
     return encrypted