Name:         HsOpenSSL
Synopsis:     Partial OpenSSL binding for Haskell
Description:
    .
    HsOpenSSL is an OpenSSL binding for Haskell. It can generate RSA
    and DSA keys, read and write PEM files, generate message digests,
    sign and verify messages, encrypt and decrypt messages. It has
    also some capabilities of creating SSL clients and servers.
    .
    This package is in production use by a number of Haskell based
    systems and stable. You may also be interested in the @tls@ package,
    <http://hackage.haskell.org/package/tls>, which is a pure Haskell
    implementation of SSL.
    .
Version:       0.11.1.1
License:       PublicDomain
License-File:  COPYING
Author:        Adam Langley, Mikhail Vorozhtsov, PHO, Taru Karttunen
Maintainer:    PHO <pho at cielonegro dot org>
Stability:     stable
Homepage:      https://github.com/phonohawk/HsOpenSSL
Bug-Reports:   https://github.com/phonohawk/HsOpenSSL/issues
Category:      Cryptography
Tested-With:   GHC == 7.6.2
Cabal-Version: >= 1.8
Build-Type:    Simple
Extra-Source-Files:
    AUTHORS
    ChangeLog
    README.rst
    cbits/HsOpenSSL.h
    cbits/mutex.h
    examples/Makefile
    examples/GenRSAKey.hs
    examples/HelloWorld.hs
    examples/PKCS7.hs
    examples/Server.hs
    examples/server.crt
    examples/server.pem

Source-Repository head
    Type: git
    Location: git://github.com/phonohawk/HsOpenSSL.git

Flag fast-bignum
    Description:
        Enable fast moving of bignums between OpenSSL and GMP (GHC Only).
    Default:
        True

Library
    Build-Depends:
        base       == 4.*,
        bytestring >= 0.9   && < 0.11,
        network    >= 2.1   && < 2.7,
        old-locale >= 1.0   && < 1.1,
        time       >= 1.1.1 && < 1.6
        -- old-locale is only needed if time < 1.5, but Cabal does not
        -- allow us to express conditional dependencies like this.

    if flag(fast-bignum)
        CPP-Options: -DFAST_BIGNUM
        if impl(ghc >= 6.11)
            -- TODO: integer-gmp >= 1 is not supported yet.
            -- https://github.com/phonohawk/HsOpenSSL/issues/36
            Build-Depends: integer-gmp >= 0.2 && < 1
        else
            Build-Depends: ghc-prim, integer

    if os(mingw32)
        Extra-Libraries: eay32 ssl32
        C-Sources:       cbits/mutex-win.c
        CC-Options:      -D MINGW32
        CPP-Options:     -DCALLCONV=stdcall
    else
        Extra-Libraries: crypto ssl
        C-Sources:       cbits/mutex-pthread.c
        CC-Options:      -D PTHREAD
        CPP-Options:     -DCALLCONV=ccall

    Exposed-Modules:
        OpenSSL
        OpenSSL.BN
        OpenSSL.EVP.Base64
        OpenSSL.EVP.Cipher
        OpenSSL.EVP.Digest
        OpenSSL.EVP.Internal
        OpenSSL.EVP.Open
        OpenSSL.EVP.PKey
        OpenSSL.EVP.Seal
        OpenSSL.EVP.Sign
        OpenSSL.EVP.Verify
        OpenSSL.Cipher
        OpenSSL.PEM
        OpenSSL.PKCS7
        OpenSSL.Random
        OpenSSL.DSA
        OpenSSL.RSA
        OpenSSL.X509
        OpenSSL.X509.Revocation
        OpenSSL.X509.Request
        OpenSSL.X509.Store
        OpenSSL.Session
        OpenSSL.DH
    Other-Modules:
        OpenSSL.ASN1
        OpenSSL.BIO
        OpenSSL.ERR
        OpenSSL.Objects
        OpenSSL.SSL
        OpenSSL.SSL.Option
        OpenSSL.Stack
        OpenSSL.Utils
        OpenSSL.X509.Name
        OpenSSL.DH.Internal
    GHC-Options:
        -Wall
    C-Sources:
        cbits/HsOpenSSL.c
    Include-Dirs:
        cbits

Test-Suite test-cipher
    Type:    exitcode-stdio-1.0
    Main-Is: Test/OpenSSL/Cipher.hs
    Build-Depends:
        HsOpenSSL,
        HUnit                >= 1.0 && < 1.3,
        base                 == 4.*,
        bytestring           >= 0.9 && < 0.11,
        test-framework       >= 0.8 && < 0.9,
        test-framework-hunit >= 0.3 && < 0.4
    GHC-Options:
        -Wall

Test-Suite test-dsa
    Type:    exitcode-stdio-1.0
    Main-Is: Test/OpenSSL/DSA.hs
    Build-Depends:
        HsOpenSSL,
        HUnit                >= 1.0 && < 1.3,
        base                 == 4.*,
        bytestring           >= 0.9 && < 0.11,
        test-framework       >= 0.8 && < 0.9,
        test-framework-hunit >= 0.3 && < 0.4
    GHC-Options:
        -Wall

Test-Suite test-evp-base64
    Type:    exitcode-stdio-1.0
    Main-Is: Test/OpenSSL/EVP/Base64.hs
    Build-Depends:
        HsOpenSSL,
        HUnit                >= 1.0 && < 1.3,
        base                 == 4.*,
        bytestring           >= 0.9 && < 0.11,
        test-framework       >= 0.8 && < 0.9,
        test-framework-hunit >= 0.3 && < 0.4
    GHC-Options:
        -Wall
