1;;; -*- mode: scheme; coding: utf-8 -*- 2;;; 3;;; pair.scm Cryptographic library 4;;; key pair 5(library (crypto key pair) 6 (export make-keypair 7 keypair? 8 keypair-private 9 keypair-public 10 <keypair> 11 ;; 12 <private-key> 13 private-key? 14 <public-key> 15 public-key? 16 17 ;; generic methods 18 generate-key-pair 19 generate-private-key 20 generate-public-key 21 export-public-key 22 export-private-key 23 import-public-key 24 import-private-key 25 ) 26 (import (rnrs) 27 (clos user) 28 ;;(clos core) 29 (sagittarius crypto)) 30 31 (define-class <private-key> (<asymmetric-key>) ()) 32 (define-class <public-key> (<asymmetric-key>) ()) 33 (define-class <keypair> () 34 ((private :init-keyword :private) 35 (public :init-keyword :public))) 36 37 (define (private-key? o) (is-a? o <private-key>)) 38 (define (public-key? o) (is-a? o <public-key>)) 39 40 (define (keypair? o) (is-a? o <keypair>)) 41 (define (make-keypair private public) 42 (make <keypair> :private private :public public)) 43 (define (keypair-private keypair) (slot-ref keypair 'private)) 44 (define (keypair-public keypair) (slot-ref keypair 'public)) 45 46 47 (define-generic generate-key-pair) 48 (define-generic generate-private-key) 49 (define-generic generate-public-key) 50 (define-generic export-public-key) 51 (define-generic export-private-key) 52 (define-generic import-public-key) 53 (define-generic import-private-key) 54)