summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Barksdale <amatus.amongus@gmail.com>2010-04-07 18:00:53 -0700
committerDavid Barksdale <amatus.amongus@gmail.com>2010-04-07 18:00:53 -0700
commit3bc43537f315436ad9c8c94582e85e9555e795e6 (patch)
tree76cd233c6444c0ca15684c29f2bdcef1bbb67c1e
parenta2785c6f20c5f362f780467301e753b70de55f41 (diff)
New generate-id function, and new-peer uses it.
-rw-r--r--src/org/gnu/clojure/gnunet/identity.clj7
-rw-r--r--src/org/gnu/clojure/gnunet/peer.clj16
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))))