{- | NTRU cryptographic system using the EES677EP1 parameter set, for use at the 192-bit security level. -} module Math.NTRU.EES677EP1 (keyGen, encrypt, decrypt) where import qualified Math.NTRU as NTRU -- | Generates a random PublicKey-PrivateKey pair keyGen :: IO ([Integer], [Integer]) -- ^ A tuple representing (PublicKey, PrivateKey) where PrivateKey = 1 + pf, per . keyGen = NTRU.keyGen (NTRU.genParams "EES677EP1") -- | Encrypts a message with the given public key encrypt :: [Integer] -- ^ A list of ASCII values representing the message -> [Integer] -- ^ A list of numbers representing the public key -> IO [Integer] -- ^ A list of numbers representing the ciphertext encrypt = NTRU.encrypt (NTRU.genParams "EES677EP1") -- | Decrypts and verifies a cyphertext with the given keys decrypt :: [Integer] -- ^ A list of numbers representing the private key -> [Integer] -- ^ A list of numbers representing the public key -> [Integer] -- ^ A list of numbers representing the ciphertext -> Maybe [Integer] -- ^ A list of numbers representing the original message, or nothing on failure decrypt = NTRU.decrypt (NTRU.genParams "EES677EP1")