Crypto-4.2.5.2: src/Codec/Encryption/RSA/MGF.hs
-----------------------------------------------------------------------------
-- |
-- Module : Codec.Encryption.RSA.MGF
-- Copyright : (c) Dominic Steinitz 2003
-- License : BSD-style (see the file libraries/base/LICENSE)
--
-- Stability : experimental
-- Portability : portable
--
-- Implements the mask generation function as specified in:
-- <ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-1/pkcs-1v2-1.pdf>
--
-----------------------------------------------------------------------------
module Codec.Encryption.RSA.MGF (
-- * Function Types
mgf) where
import Codec.Utils (Octet, i2osp)
-- | Take a hash function, a seed and the intended length of the
-- the mask and deliver a mask of the requested length.
mgf :: ([Octet] -> [Octet]) -> [Octet] -> Int -> [Octet]
mgf hash z l =
take l $ concat $ hashes
where
hashes = map f [0..(l `div` hLen)]
hLen = length $ f 0
f = hash . (z++) . (i2osp 4)