aboutsummaryrefslogtreecommitdiff
path: root/docs/signing-engine-protocol
diff options
context:
space:
mode:
Diffstat (limited to 'docs/signing-engine-protocol')
-rw-r--r--docs/signing-engine-protocol49
1 files changed, 49 insertions, 0 deletions
diff --git a/docs/signing-engine-protocol b/docs/signing-engine-protocol
new file mode 100644
index 00000000..ab82367a
--- /dev/null
+++ b/docs/signing-engine-protocol
@@ -0,0 +1,49 @@
+;;; -*- Lisp -*-
+;;; $Id$
+;;;
+;;; Scratch pad for working out API design for RPKI engine.
+;;;
+;;; This file is psuedocode, I just wanted to take advantage of
+;;; emacs's built-in support for languages with reasonable syntax.
+;;;
+;;; Terminology:
+;;;
+;;; - IRBE: Internet Registry Back End
+;;;
+;;; - RE: RPKI Engine
+
+;;; Protocol operations between RE and signing engine. This assumes
+;;; the model in which the signing engine stores nothing but keypairs
+;;; and takes orders from the RE on what to sign; this still needs to
+;;; be checked by competent paranoids.
+
+;; Create a keypair. :length is the number of bits for the key
+;; (default 2048?).
+
+(create-keypair :cust-id 42
+ :length 2048)
+=> (public-key key-id)
+
+;; Destroy a keypair.
+
+(destroy-keypair :cust-id 42
+ :key-id key-id)
+=> ()
+
+;; List existing keypairs
+
+(list-keypairs :cust-id 42)
+=> ((key-id public-key)
+ (key-id public-key)
+ ...)
+
+;; Sign something. how-to-sign tells us both what signature method to
+;; use (ie, what kind of object we're signing) and also the signature
+;; algorithm to use (where there are multiple choices, which perhaps
+;; there should not be?).
+
+(sign-thing :cust-id 42
+ :what-to-sign cert-without-signature
+ :how-to-sign :cert-rsa/sha256
+ :key-id key-id)
+=> (signed-thing)