126 lines
7.1 KiB
HTML
126 lines
7.1 KiB
HTML
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<link rel="stylesheet" href="../../coverage.css"/> <title> clj_activitypub/internal/crypto.clj </title>
|
|
</head>
|
|
<body>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
001 (ns clj-activitypub.internal.crypto
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
002 "copied from [Jahfer's clj-activitypub library](https://github.com/jahfer/clj-activitypub).
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
003 If and when Jahfer issues a release of that library, this directory will be deleted and a
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
004 dependency on that library will be added to the project."
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
005 (:require [clojure.java.io :as io])
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
006 (:import (java.util Base64)
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
007 (java.security MessageDigest SecureRandom Signature)))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
008
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
009 (java.security.Security/addProvider
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
010 (org.bouncycastle.jce.provider.BouncyCastleProvider.))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
011
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
012 (defn- keydata [reader]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 2 forms covered">
|
|
013 (->> reader
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 1 forms covered">
|
|
014 (org.bouncycastle.openssl.PEMParser.)
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
015 (.readObject)))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
016
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
017 (defn- pem-string->key-pair [string]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 6 forms covered">
|
|
018 (let [kd (keydata (io/reader (.getBytes string)))]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
019 (.getKeyPair (org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter.) kd)))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
020
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
021 (defn private-key [private-pem-str]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 2 forms covered">
|
|
022 (-> private-pem-str
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 2 forms covered">
|
|
023 (pem-string->key-pair)
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
024 (.getPrivate)))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
025
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
026 (defn base64-encode [bytes]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
027 (.encodeToString (Base64/getEncoder) bytes))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
028
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
029 (defn sha256-base64 [data]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 5 forms covered">
|
|
030 (let [digest (.digest (MessageDigest/getInstance "SHA-256") (.getBytes data))]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
031 (base64-encode digest)))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
032
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
033 (defn sign [data private-key]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 2 forms covered">
|
|
034 (let [bytes (.getBytes data)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 4 forms covered">
|
|
035 signer (doto (Signature/getInstance "SHA256withRSA")
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
036 (.initSign private-key (SecureRandom.))
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 2 forms covered">
|
|
037 (.update bytes))]
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 1 forms covered">
|
|
038 (.sign signer)))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
039
|
|
</span><br/>
|
|
</body>
|
|
</html>
|