diff --git a/python/opendht.pyx b/python/opendht.pyx index d5aa961708a4bba8f61c6dd1dc5fd45468c51043..1ffbb03c695bad8d8010a23069064659ff0ec06c 100644 --- a/python/opendht.pyx +++ b/python/opendht.pyx @@ -318,6 +318,24 @@ cdef class Certificate(_WithID): c._cert = cpp.make_shared[cpp.Certificate](cpp.Certificate.generate(deref(k._key.get()), name.encode(), i._id, is_ca)) return c +cdef class VerifyResult(object): + cdef cpp.TrustListVerifyResult _result + def __bool__(self): + return self._result.isValid() + def __str(self): + return self._result.toString() + +cdef class TrustList(object): + cdef cpp.TrustList _trust + def add(self, Certificate cert): + self._trust.add(deref(cert._cert.get())) + def remove(self, Certificate cert): + self._trust.remove(deref(cert._cert.get())) + def verify(self, Certificate cert): + r = VerifyResult() + r._result = self._trust.verify(deref(cert._cert.get())) + return r + cdef class ListenToken(object): cdef cpp.InfoHash _h cdef cpp.shared_future[size_t] _t diff --git a/python/opendht_cpp.pxd b/python/opendht_cpp.pxd index 60c23dada1d6a98b9a2db29eb6ffd10f65210d7a..0b6cbf09dadd26acb92c237f2ef2f6d171393104 100644 --- a/python/opendht_cpp.pxd +++ b/python/opendht_cpp.pxd @@ -108,6 +108,18 @@ cdef extern from "opendht/crypto.h" namespace "dht::crypto": Certificate generate(PrivateKey key, string name, Identity ca, bool is_ca) shared_ptr[Certificate] issuer + cdef cppclass TrustList: + cppclass VerifyResult: + bool operator bool() const + bool isValid() const + string toString() const + TrustList() + void add(Certificate) + void remove(Certificate) + VerifyResult verify(Certificate); + +ctypedef TrustList.VerifyResult TrustListVerifyResult + cdef extern from "opendht/value.h" namespace "dht": cdef cppclass Value: Value() except +