diff options
-rw-r--r-- | src/org/gnu/clojure/gnunet/identity.clj | 7 | ||||
-rw-r--r-- | src/org/gnu/clojure/gnunet/peer.clj | 16 |
2 files changed, 17 insertions, 6 deletions
diff --git a/src/org/gnu/clojure/gnunet/identity.clj b/src/org/gnu/clojure/gnunet/identity.clj index dc47164..7eb3e03 100644 --- a/src/org/gnu/clojure/gnunet/identity.clj +++ b/src/org/gnu/clojure/gnunet/identity.clj @@ -39,4 +39,9 @@ (defn sha-512 [x] (let [sha (java.security.MessageDigest/getInstance "SHA-512")] - (.digest sha (byte-array x))))
\ No newline at end of file + (.digest sha (byte-array x)))) + +(defn generate-id + "Generate the SHA-512 hash of the encoded public key" + [keypair] + (sha-512 (encode-rsa-public-key (.getPublic keypair)))) diff --git a/src/org/gnu/clojure/gnunet/peer.clj b/src/org/gnu/clojure/gnunet/peer.clj index c35e420..b60c4d6 100644 --- a/src/org/gnu/clojure/gnunet/peer.clj +++ b/src/org/gnu/clojure/gnunet/peer.clj @@ -1,11 +1,17 @@ -(ns org.gnu.clojure.gnunet.peer) +(ns org.gnu.clojure.gnunet.peer + (:use (org.gnu.clojure.gnunet identity))) -(defstruct peer - :options) +(defstruct remote-peer + :id) + +(def peer (apply create-struct (concat + (keys (struct-map remote-peer)) + (list :keypair)))) (defstruct peer-options - :id) + :keypair) (defn new-peer [options] (struct-map peer - :options (ref options))) + :keypair (:keypair options) + :id (generate-id (:keypair options)))) |