Verified Commit 6ec4abb5 authored by Baptiste Beauplat's avatar Baptiste Beauplat
Browse files

Add support for subkey lookup in HKP

parent c58f6b39
...@@ -50,7 +50,12 @@ class HKPSearchView(BaseDetailView): ...@@ -50,7 +50,12 @@ class HKPSearchView(BaseDetailView):
def get_object(self, queryset=None): def get_object(self, queryset=None):
key_id = self.request.GET['search'].replace('0x', '') key_id = self.request.GET['search'].replace('0x', '')
return get_object_or_404(Key, fingerprint__endswith=key_id) try:
return Key.objects.get(fingerprint__endswith=key_id)
except Key.DoesNotExist:
pass
return get_object_or_404(Key, subkey__fingerprint__endswith=key_id)
def render_to_response(self, context, **response_kwargs): def render_to_response(self, context, **response_kwargs):
return HttpResponse(self.object.key + '\n') return HttpResponse(self.object.key + '\n')
......
...@@ -28,6 +28,8 @@ ...@@ -28,6 +28,8 @@
from django.urls import reverse from django.urls import reverse
from debexpo.keyring.models import SubKey
from tests import TestController from tests import TestController
_GPGKEY = """-----BEGIN PGP PUBLIC KEY BLOCK----- _GPGKEY = """-----BEGIN PGP PUBLIC KEY BLOCK-----
...@@ -93,10 +95,12 @@ class TestHKP(TestController): ...@@ -93,10 +95,12 @@ class TestHKP(TestController):
self.assertEquals(response.status_code, 200) self.assertEquals(response.status_code, 200)
self.assertIn(self._GPG_KEY, response.content.decode()) self.assertIn(self._GPG_KEY, response.content.decode())
# Matches full fingerprint: 200 # Matches full fingerprint of a subkey: 200
fingerprint = SubKey.objects.filter(
key__fingerprint=self._GPG_FINGERPRINT).first().fingerprint
response = self.client.get(reverse('hkp'), { response = self.client.get(reverse('hkp'), {
'op': 'get', 'op': 'get',
'search': self._GPG_FINGERPRINT 'search': fingerprint
}) })
self.assertEquals(response.status_code, 200)
self.assertIn(self._GPG_KEY, response.content.decode()) self.assertIn(self._GPG_KEY, response.content.decode())
self.assertEquals(response.status_code, 200)
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment