Skip to content

Commit 257026c

Browse files
committed
Add API endpoint for listing fingerprints of user keys that have access to a given vault
1 parent d26bc2a commit 257026c

2 files changed

Lines changed: 20 additions & 0 deletions

File tree

syncrypt/api/resources.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,11 @@ def get_resource_uri(self, obj):
113113
class VaultResource(Resource):
114114
resource_name = 'vault'
115115

116+
def add_routes(self, router):
117+
super(VaultResource, self).add_routes(router)
118+
opts = {'version': self.version, 'name': self.resource_name}
119+
router.add_route('GET', '/{version}/{name}/{{id}}/fingerprints/'.format(**opts), self.dispatch_fingerprints)
120+
116121
def get_id(self, v):
117122
return str(v.config.get('vault.id'))
118123

@@ -173,6 +178,14 @@ def dispatch_list(self, request):
173178
yield from backend.close()
174179
return JSONResponse([self.dehydrate(obj, v_info.get(obj.config.get('vault.id'), {})) for obj in objs])
175180

181+
182+
@asyncio.coroutine
183+
def dispatch_fingerprints(self, request):
184+
vault_id = request.match_info['id']
185+
vault = self.find_vault_by_id(vault_id)
186+
fingerprint_list = yield from vault.backend.list_vault_user_key_fingerprints()
187+
return JSONResponse(fingerprint_list)
188+
176189
@asyncio.coroutine
177190
def post_obj(self, request):
178191
content = yield from request.content.read()

syncrypt/backends/binary.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -615,6 +615,13 @@ def transform_key(key):
615615

616616
return map(transform_key, keys)
617617

618+
619+
@asyncio.coroutine
620+
def list_vault_user_key_fingerprints(self):
621+
yield from self.write_term('list_vault_user_key_fingerprints')
622+
fingerprints = [fp.decode() for fp in (yield from self.read_response())]
623+
return fingerprints
624+
618625
@asyncio.coroutine
619626
def upload_identity(self, identity, description=""):
620627
logger.debug('Uploading my public key to server')

0 commit comments

Comments
 (0)