summaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorFelix Yan <felixonmars@archlinux.org>2019-02-09 01:49:15 +0800
committerJelle van der Waa <jelle@vdwaa.nl>2019-02-09 14:58:48 +0100
commita5d05569dfa0802ebe6e7ee96aee434fe43f3e92 (patch)
treed2ddd3915815c4b8c340df3fba8791526630dc9e /main
parent4a2c87b0f63ee780089f20845ea3b66ee6228cc2 (diff)
downloadarchweb-a5d05569dfa0802ebe6e7ee96aee434fe43f3e92.tar.gz
archweb-a5d05569dfa0802ebe6e7ee96aee434fe43f3e92.zip
Make Package.signature return str key_id
We use the attribute in many places, but it's a "bytes" object in pgpdump that messes up the remaining logic. Let's just wrap it from the very beginning.
Diffstat (limited to 'main')
-rw-r--r--main/models.py4
-rw-r--r--main/utils.py9
2 files changed, 11 insertions, 2 deletions
diff --git a/main/models.py b/main/models.py
index 18980ae5..2c6651b8 100644
--- a/main/models.py
+++ b/main/models.py
@@ -7,7 +7,7 @@ from django.contrib.auth.models import User
from django.contrib.sites.models import Site
from .fields import PositiveBigIntegerField
-from .utils import set_created_field, DependStandin
+from .utils import set_created_field, DependStandin, SignatureWrapper
from devel.models import DeveloperKey
from packages.alpm import AlpmAPI
@@ -142,7 +142,7 @@ class Package(models.Model):
return None
data = BinaryData(self.signature_bytes)
packets = list(data.packets())
- return packets[0]
+ return SignatureWrapper(packets[0])
@property
def signer(self):
diff --git a/main/utils.py b/main/utils.py
index f0b10ef5..141f26c2 100644
--- a/main/utils.py
+++ b/main/utils.py
@@ -6,6 +6,7 @@ except ImportError:
import hashlib
import markdown
from markdown.extensions import Extension
+from pgpdump.packet import SignaturePacket
from django.core.cache import cache
from django.db import connections, router
@@ -165,4 +166,12 @@ class DependStandin(object):
self.deptype = first.deptype
self.pkg = first.pkg.base_package() or PackageStandin(first.pkg)
+
+class SignatureWrapper(SignaturePacket):
+ 'Decode key_id from raw SignaturePacket'
+ def __init__(self, packet):
+ for field in ("sig_version", "creation_time", "expiration_time"):
+ setattr(self, field, getattr(packet, field))
+ self.key_id = str(packet.key_id) if packet.key_id else None
+
# vim: set ts=4 sw=4 et: