Copyright | (c) Leo D 2023 |
---|---|
License | BSD-3-Clause |
Maintainer | leo@apotheca.io |
Stability | experimental |
Portability | POSIX |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
NIST specifies two mechanisms for wrapping (encrypting) symmetric keys using another key. The first (and older, more widely supported) method requires the input be a multiple of 8 bytes long. The other allows any length input, though only up to 2**32 bytes.
These algorithms are described in NIST SP 800-38F, and RFCs 3394 and 5649.
These functions take an arbitrary 128-bit block cipher. NIST only allows these functions with AES, but any 128-bit cipher will do and some other implementations (such as in OpenSSL) do also allow other ciphers.
Use AES for best interop.
Documentation
:: BlockCipherName | cipher_algo |
-> Int | padded |
-> ByteString | key[] |
-> ByteString | kek[] |
-> IO ByteString | wrapped_key[] |
:: BlockCipherName | cipher_algo |
-> Int | padded |
-> ByteString | wrapped_key[] |
-> ByteString | kek[] |
-> IO ByteString | key[] |