diff options
author | David Barksdale <amatus.amongus@gmail.com> | 2010-04-05 01:15:36 -0700 |
---|---|---|
committer | David Barksdale <amatus.amongus@gmail.com> | 2010-04-05 01:15:36 -0700 |
commit | 0137267336e36d3492e266c187d4580fdb10deb3 (patch) | |
tree | b32f8394c08a1d00d90462c6a223f708e0891e0c | |
parent | e8c901ff50ac23a3127dbcd1b010f59295f5693e (diff) |
I think a peer should be a struct-map. I also coded up the first steps to being able to compute a peer identity.
-rw-r--r-- | src/org/gnu/clojure/gnunet/identity.clj | 22 | ||||
-rw-r--r-- | src/org/gnu/clojure/gnunet/peer.clj | 11 |
2 files changed, 33 insertions, 0 deletions
diff --git a/src/org/gnu/clojure/gnunet/identity.clj b/src/org/gnu/clojure/gnunet/identity.clj new file mode 100644 index 0000000..0f36057 --- /dev/null +++ b/src/org/gnu/clojure/gnunet/identity.clj @@ -0,0 +1,22 @@ +(ns org.gnu.clojure.gnunet.identity) + +(defn bit-count-to-bytes [x] (quot (+ 7 x) 8)) + +(defn bigint-to-bytes [x] + (let [len (bit-count-to-bytes (.bitLength x)) + a (.toByteArray x)] + (drop (- (alength a) len) a))) + +(defn short-to-bytes [x] + (list (quot x 256) (rem x 256))) + +(defn rsa-public-key-binary-encoded [key] + (let [modulus (bigint-to-bytes (.getModulus key)) + exponent (bigint-to-bytes (.getPublicExponent key)) + len (+ (count modulus) (count exponent) 4)] + (concat + (short-to-bytes len) + (short-to-bytes (count modulus)) + modulus + exponent + (short-to-bytes 0))))
\ No newline at end of file diff --git a/src/org/gnu/clojure/gnunet/peer.clj b/src/org/gnu/clojure/gnunet/peer.clj new file mode 100644 index 0000000..c35e420 --- /dev/null +++ b/src/org/gnu/clojure/gnunet/peer.clj @@ -0,0 +1,11 @@ +(ns org.gnu.clojure.gnunet.peer) + +(defstruct peer + :options) + +(defstruct peer-options + :id) + +(defn new-peer [options] + (struct-map peer + :options (ref options))) |