From d19eb16b4529088f92bf363e29dee1ae09183362 Mon Sep 17 00:00:00 2001 From: Jimmy Zelinskie Date: Wed, 6 Apr 2016 20:03:04 -0400 Subject: [PATCH] keyserver: add generate key function The superuser API, initdb, and tests will all need this functionality. --- data/model/service_keys.py | 20 ++++++++++++++++++++ endpoints/api/superuser.py | 24 +++++++----------------- initdb.py | 15 ++++++++------- test/data/test.db | Bin 1175552 -> 1175552 bytes 4 files changed, 35 insertions(+), 24 deletions(-) diff --git a/data/model/service_keys.py b/data/model/service_keys.py index c4dad1828..a02d49b9f 100644 --- a/data/model/service_keys.py +++ b/data/model/service_keys.py @@ -1,10 +1,18 @@ +import json + from calendar import timegm from datetime import datetime, timedelta +from hashlib import sha256 from peewee import JOIN_LEFT_OUTER +from Crypto.PublicKey import RSA +from jwkest.jwk import RSAKey + from data.database import db_for_update, User, ServiceKey, ServiceKeyApproval from data.model import ServiceKeyDoesNotExist, ServiceKeyAlreadyApproved, db_transaction, config from data.model.notification import create_notification, delete_all_notifications_by_path_prefix +from util import canonicalize + def _expired_keys_clause(service): return ((ServiceKey.service == service) & @@ -49,6 +57,18 @@ def create_service_key(name, kid, service, jwk, metadata, expiration_date): _notify_superusers(key) _gc_expired(service) + return key + + +def generate_service_key(service, expiration_date, kid=None, name='', metadata=None): + private_key = RSA.generate(2048) + jwk = RSAKey(key=private_key.publickey()).serialize() + if kid is None: + kid = sha256(json.dumps(canonicalize(jwk), separators=(',', ':'))).hexdigest() + + key = create_service_key(name, kid, service, jwk, metadata or {}, expiration_date) + return (private_key, key) + def replace_service_key(old_kid, kid, jwk, metadata, expiration_date): try: diff --git a/endpoints/api/superuser.py b/endpoints/api/superuser.py index ab91bda00..c0a1b787b 100644 --- a/endpoints/api/superuser.py +++ b/endpoints/api/superuser.py @@ -1,17 +1,13 @@ """ Superuser API. """ -import json import logging import os import string from datetime import datetime -from hashlib import sha256 from random import SystemRandom -from Crypto.PublicKey import RSA from flask import request, make_response, jsonify -from jwkest.jwk import RSAKey import features @@ -26,7 +22,6 @@ from endpoints.api import (ApiResource, nickname, resource, validate_json_reques from endpoints.api.logs import get_logs, get_aggregate_logs from data import model from data.database import ServiceKeyApprovalType -from util import canonicalize from util.useremails import send_confirmation_email, send_recovery_email @@ -576,22 +571,17 @@ class SuperUserServiceKeyManagement(ApiResource): 'ip': request.remote_addr, }) - # Generate the private key but *do not save it on the server anywhere*. - private_key = RSA.generate(2048) - jwk = RSAKey(key=private_key.publickey()).serialize() - kid = sha256(json.dumps(canonicalize(jwk), separators=(',', ':'))).hexdigest() - - # Create the service key. - model.service_keys.create_service_key(body.get('name', ''), kid, body['service'], jwk, - metadata, expiration_date) - + # Generate a key with a private key that we *never save*. + (private_key, key) = model.service_keys.generate_service_key(body['service'], metadata, + expiration_date, + name=body.get('name', '')) # Auto-approve the service key. - model.service_keys.approve_service_key(kid, user, ServiceKeyApprovalType.SUPERUSER, + model.service_keys.approve_service_key(key.kid, user, ServiceKeyApprovalType.SUPERUSER, notes=body.get('notes', '')) # Log the creation and auto-approval of the service key. key_log_metadata = { - 'kid': kid, + 'kid': key.kid, 'preshared': True, 'service': body['service'], 'name': body.get('name', ''), @@ -603,7 +593,7 @@ class SuperUserServiceKeyManagement(ApiResource): log_action('service_key_approve', None, key_log_metadata) return jsonify({ - 'kid': kid, + 'kid': key.kid, 'name': body.get('name', ''), 'public_key': private_key.publickey().exportKey('PEM'), 'private_key': private_key.exportKey('PEM'), diff --git a/initdb.py b/initdb.py index c4afe8ebc..f72cb7bd2 100644 --- a/initdb.py +++ b/initdb.py @@ -157,20 +157,18 @@ def __create_subtree(with_storage, repo, structure, creator_username, parent, ta def __generate_service_key(kid, name, user, timestamp, approval_type, expiration=None, - metadata=None): - private_key = RSA.generate(1024) - jwk = RSAKey(key=private_key.publickey()).serialize() + metadata=None, service='sample_service'): + _, key = model.service_keys.generate_service_key(service, expiration, kid=kid, + name=name, metadata=metadata) - metadata = metadata or {} - model.service_keys.create_service_key(name, kid, 'sample_service', jwk, metadata, expiration) if approval_type is not None: - model.service_keys.approve_service_key(kid, user, approval_type, + model.service_keys.approve_service_key(key.kid, user, approval_type, notes='The **test** apporval') key_metadata = { 'kid': kid, 'preshared': True, - 'service': 'sample_service', + 'service': service, 'name': name, 'expiration_date': expiration, 'auto_approved': True @@ -664,6 +662,9 @@ def populate_database(minimal=False, with_storage=False): __generate_service_key('kid4', 'autorotatingkey', new_user_1, six_ago, ServiceKeyApprovalType.KEY_ROTATION, today + timedelta(1), dict(rotation_ttl=timedelta(hours=12).total_seconds())) + __generate_service_key('kid5', 'key for another service', new_user_1, today, + ServiceKeyApprovalType.SUPERUSER, today + timedelta(14), + service='different_sample_service') model.log.log_action('org_create_team', org.username, performer=new_user_1, timestamp=week_ago, metadata={'team': 'readers'}) diff --git a/test/data/test.db b/test/data/test.db index 4ac351c8adb3c6f04fe688ffd01b1bc1e666f8c7..17eeccc8b4ef211f081771baa05c97226edbd2ea 100644 GIT binary patch delta 63051 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 M4jZGNEc^Zc2Xuk(p#T5? delta 60836 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 L@%dYuk;wlBuVLvm