Skip to content
Snippets Groups Projects
Commit fa7efd08 authored by Adrien Béraud's avatar Adrien Béraud
Browse files

python: add Identity PrivateKey getter

Refactor Identity and PrivateKey to use
shared_ptr<PrivateKey> and retrieve the
key from Identity.
parent 8e28e86c
Branches
Tags
No related merge requests found
...@@ -242,21 +242,21 @@ cdef class NodeSet(object): ...@@ -242,21 +242,21 @@ cdef class NodeSet(object):
return NodeSetIter(self) return NodeSetIter(self)
cdef class PrivateKey(_WithID): cdef class PrivateKey(_WithID):
cdef cpp.PrivateKey _key cdef shared_ptr[cpp.PrivateKey] _key
def getId(self): def getId(self):
h = InfoHash() h = InfoHash()
h._infohash = self._key.getPublicKey().getId() h._infohash = self._key.get().getPublicKey().getId()
return h return h
def getPublicKey(self): def getPublicKey(self):
pk = PublicKey() pk = PublicKey()
pk._key = self._key.getPublicKey() pk._key = self._key.get().getPublicKey()
return pk return pk
def __str__(self): def __str__(self):
return self.getId().toString().decode() return self.getId().toString().decode()
@staticmethod @staticmethod
def generate(): def generate():
k = PrivateKey() k = PrivateKey()
k._key = cpp.PrivateKey.generate() k._key = cpp.make_shared[cpp.PrivateKey](cpp.PrivateKey.generate())
return k return k
cdef class PublicKey(_WithID): cdef class PublicKey(_WithID):
...@@ -281,7 +281,7 @@ cdef class Certificate(_WithID): ...@@ -281,7 +281,7 @@ cdef class Certificate(_WithID):
def getName(self): def getName(self):
return self._cert.get().getName() return self._cert.get().getName()
def revoke(self, PrivateKey k, Certificate c): def revoke(self, PrivateKey k, Certificate c):
self._cert.get().revoke(k._key, deref(c._cert.get())); self._cert.get().revoke(deref(k._key.get()), deref(c._cert.get()));
def __bytes__(self): def __bytes__(self):
return self._cert.get().toString() if self._cert else b'' return self._cert.get().toString() if self._cert else b''
property issuer: property issuer:
...@@ -292,7 +292,7 @@ cdef class Certificate(_WithID): ...@@ -292,7 +292,7 @@ cdef class Certificate(_WithID):
@staticmethod @staticmethod
def generate(PrivateKey k, str name, Identity i = Identity(), bool is_ca = False): def generate(PrivateKey k, str name, Identity i = Identity(), bool is_ca = False):
c = Certificate() c = Certificate()
c._cert = cpp.make_shared[cpp.Certificate](cpp.Certificate.generate(k._key, name.encode(), i._id, is_ca)) c._cert = cpp.make_shared[cpp.Certificate](cpp.Certificate.generate(deref(k._key.get()), name.encode(), i._id, is_ca))
return c return c
cdef class ListenToken(object): cdef class ListenToken(object):
...@@ -302,18 +302,31 @@ cdef class ListenToken(object): ...@@ -302,18 +302,31 @@ cdef class ListenToken(object):
cdef class Identity(object): cdef class Identity(object):
cdef cpp.Identity _id cdef cpp.Identity _id
def generate(self, str name = "pydht", Identity ca = Identity(), unsigned bits = 4096): def __init__(self, PrivateKey k = None, Certificate c = None):
self._id = cpp.generateIdentity(name.encode(), ca._id, bits) if k:
property PublicKey: self._id.first = k._key
if c:
self._id.second = c._cert
@staticmethod
def generate(str name = "pydht", Identity ca = Identity(), unsigned bits = 4096):
i = Identity()
i._id = cpp.generateIdentity(name.encode(), ca._id, bits)
return i
property publickey:
def __get__(self): def __get__(self):
k = PublicKey() k = PublicKey()
k._key = self._id.first.get().getPublicKey() k._key = self._id.first.get().getPublicKey()
return k return k
property Certificate: property certificate:
def __get__(self): def __get__(self):
c = Certificate() c = Certificate()
c._cert = self._id.second c._cert = self._id.second
return c return c
property key:
def __get__(self):
k = PrivateKey()
k._key = self._id.first
return k
cdef class DhtConfig(object): cdef class DhtConfig(object):
cdef cpp.DhtRunnerConfig _config cdef cpp.DhtRunnerConfig _config
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment