Skip to content

Commit f8a4a59

Browse files
authored
write the latest keys for an AS (#389)
1 parent f60f1a2 commit f8a4a59

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

scionlab/models/core.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,16 @@ def certificates_latest(self):
277277
key__version__gte=latest_version)
278278
return certs
279279

280+
def keys_latest(self):
281+
""" returns a queryset of all of the latest keys of this AS """
282+
keys = Key.objects.none()
283+
for key_usage in Key.USAGES:
284+
latest_version = self.keys.filter(usage=key_usage).aggregate(models.Max('version'))[
285+
'version__max'] or 1
286+
keys = keys | Key.objects.filter(AS=self, usage=key_usage,
287+
version__gte=latest_version)
288+
return keys
289+
280290
def generate_keys(self, not_before=None):
281291
Key.objects.create_all_keys(self, not_before=not_before)
282292

scionlab/scion/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ def _write_certs(self, dir):
130130
cert.format_certfile())
131131

132132
def _write_keys(self, dir):
133-
for key in self.AS.keys.all():
133+
for key in self.AS.keys_latest().all():
134134
self.archive.write_text((dir, CRYPTO_DIR, key.subdir(), key.filename()), key.key)
135135

136136
def _write_master_keys(self, dir):

0 commit comments

Comments
 (0)