Component ciphers

You are here: All Systems / ironclad-tests / test-vectors / ciphers

(in-package :crypto-tests)

(rtest:deftest verify-key.bad-cipher
  (handler-case (crypto::verify-key :error
                                    (make-array 0
                                                :element-type '(unsigned-byte 8)
)
)

    (crypto:unsupported-cipher () :ok)
    (:no-error () :error)
)

  :ok
)


(rtest:deftest verify-key.bad-key0
  (handler-case (crypto::verify-key :aes "")
    (type-error () :ok)
    (:no-error () :error)
)

  :ok
)


(rtest:deftest verify-key.bad-key1
  (handler-case (crypto::verify-key :aes nil)
    (crypto:key-not-supplied () :ok)
    (:no-error () :error)
)

  :ok
)


(rtest:deftest unprovided-key
  (handler-case
      (crypto:make-cipher :blowfish :mode :ecb
                          :initialization-vector (make-array 8 :element-type '(unsigned-byte 8))
)

    (crypto:key-not-supplied () :ok)
    (:no-error () :error)
)

  :ok
)


(rtest:deftest block-length.known-ciphers
  (dolist (name (crypto:list-all-ciphers) :ok)
    (unless (crypto:block-length name)
      (return :error)
)
)

  :ok
)


(rtest:deftest block-length.bad-cipher
  (crypto:block-length :error)
  nil
)


(rtest:deftest key-lengths.known-ciphers
  (dolist (name (crypto:list-all-ciphers) :ok)
    (unless (crypto:key-lengths name)
      (return :error)
)
)

  :ok
)


(rtest:deftest key-lengths.bad-cipher
  (crypto:key-lengths :error)
  nil
)


#.(loop for cipher in (crypto:list-all-ciphers)
        collect `(rtest:deftest ,cipher
                   (run-test-vector-file ,cipher *cipher-tests*) t
)
into forms
        finally (return `(progn ,@forms))
)

Lisppaste pastes can be made by anyone at any time. Imagine a fearsomely comprehensive disclaimer of liability. Now fear, comprehensively.