|
16 | 16 | (remove-ns 'taoensso.tempel-tests) |
17 | 17 | (test/run-tests 'taoensso.tempel-tests)) |
18 | 18 |
|
| 19 | +;;;; Utils |
| 20 | + |
| 21 | +(defn keychain->pub-keys [kc] (into #{} (comp (map :key-pub) (filter some?)) (vals (enc/force-ref kc)))) |
| 22 | +(defn keychain->prv-keys [kc] (into #{} (comp (map #(or (:key-sym %) (:key-prv %))) (filter some?)) (vals (enc/force-ref kc)))) |
| 23 | + |
| 24 | +(comment (keychain->pub-keys (keys/keychain))) |
| 25 | + |
19 | 26 | ;;;; Implementation |
20 | 27 |
|
21 | 28 | (deftest _headers |
|
368 | 375 | (is (= (kci kc1) {:n-sym 1, :n-prv 2, :n-pub 2, :secret? true})) |
369 | 376 | (is (= (kci kc3) {:n-sym 1, :n-prv 1, :n-pub 2, :secret? true}))]) |
370 | 377 |
|
371 | | - (testing "Serialization and encryption" |
| 378 | + (testing "Serialization of public keys in KeyChains" |
| 379 | + (let [kc1 (keys/keychain {:empty? true}) |
| 380 | + kc2 (keys/keychain {:symmetric-keys [#_1 :random] |
| 381 | + :asymmetric-keypairs [#_2 :rsa-1024 #_3 :dh-1024 #_4 :ec-secp256r1]})] |
| 382 | + (every? boolean |
| 383 | + (flatten |
| 384 | + (for [kc [kc1 kc2]] |
| 385 | + (let [kc-thawed (tempel/keychain-thaw-public (tempel/keychain-freeze-public kc))] |
| 386 | + [(is (empty? (keychain->prv-keys kc-thawed)) "No private keys in public KeyChain") |
| 387 | + (is (= (keychain->pub-keys kc-thawed) (keychain->pub-keys kc)) "All public keys in public KeyChain")])))))) |
| 388 | + |
| 389 | + (testing "Serialization of encrypted KeyChains" |
372 | 390 | (let [kc (-> |
373 | 391 | (keys/keychain {:symmetric-keys [#_1 :random] |
374 | 392 | :asymmetric-keypairs [#_2 :rsa-1024 #_3 :dh-1024 #_4 :ec-secp256r1]}) |
|
405 | 423 | (is (= (set (keys (get @kc-dec "c"))) #{:key-prv :key-algo :priority})) |
406 | 424 |
|
407 | 425 | (is (= (keys/keychain-decrypt ba-enc !key-opts) nil) "Bad key") |
408 | | - (is (= (kci (:keychain (pd ba-enc))) {:n-pub 4, :secret? false}) "Public keychain in public data") |
| 426 | + (is (= (kci (:keychain (pd ba-enc))) {:n-pub 4, :secret? false}) "Public KeyChain is in public data") |
409 | 427 |
|
410 | | - (is (every? nil? (mapv #(or (:key-sym %) (:key-prv %)) (vals @(:keychain (pd ba-enc))))) |
411 | | - "No private data in public keychain")]))))))]) |
| 428 | + (is (empty? (keychain->prv-keys (:keychain (pd ba-enc)))) "No private keys in public KeyChain")]))))))]) |
412 | 429 |
|
413 | 430 | ;;;; Core API |
414 | 431 |
|
|
0 commit comments