1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
from _sequoia import ffi, lib
from .openpgp import TPK
from .error import Error
from .glue import SQObject
class KeyServer(SQObject):
_del = lib.sq_keyserver_free
@classmethod
def new(cls, ctx, uri, cert=None):
if not cert:
ks = lib.sq_keyserver_new(ctx.ref(), uri.encode())
else:
ks = lib.sq_keyserver_with_cert(
ctx.ref(), uri.encode(),
ffi.cast("uint8_t *", ffi.from_buffer(cert)),
len(cert))
return KeyServer(ks, context=ctx)
@classmethod
def sks_pool(cls, ctx):
return KeyServer(lib.sq_keyserver_sks_pool(ctx.ref()),
context=ctx)
def get(self, keyid):
return TPK(lib.sq_keyserver_get(self.context().ref(),
self.ref(),
keyid.ref()),
context=self.context())
def send(self, tpk):
r = lib.sq_keyserver_send(self.context().ref(),
self.ref(),
tpk.ref())
if r:
raise Error._last(self.context())
|