Skip to content
Snippets Groups Projects
Verified Commit 8578f31c authored by Frank Sauerburger's avatar Frank Sauerburger
Browse files

Fill pgp keyid

parent 8ec32b2f
No related branches found
No related tags found
1 merge request!2Resolve "Decode OpenPGP and display details"
from django.core.management.base import BaseCommand
from pgp.models import PublicKey
class Command(BaseCommand):
def handle(self, *args, **options):
print("Setting key ids")
for key in PublicKey.objects.filter(keyid__isnull=True):
print(f" Update {key.details().fingerprint}")
key.keyid = key.set_keyid()
key.save()
print("Done")
# Generated by Django 3.1.3 on 2021-02-21 10:28
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('pgp', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='publickey',
name='keyid',
field=models.CharField(blank=True, max_length=40, null=True),
),
]
import re
from django.db import models
import pgpy
class PublicKey(models.Model):
email = models.CharField(max_length=128)
armor = models.TextField()
keyid = models.CharField(max_length=40, null=True, blank=True)
def __init__(self, *args, **kwds):
super().__init__(*args, **kwds)
self.decoded = None
def set_keyid(self):
self._decode()
fingerprint = self.decoded.fingerprint
self.keyid = re.sub("\s+", "", fingerprint).lower()
def save(self, *args, **kwds):
if not self.keyid:
self.set_keyid()
super().save(*args, **kwds)
def _decode(self):
if self.decoded:
return True
self.decoded, _ = pgpy.PGPKey.from_blob(self.armor)
return True
def details(self):
self._decode()
return self.decoded
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment