Blob Blame History Raw
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.7.2
x-revision: 3
License:       PublicDomain
License-File:  COPYING
Author:        Adam Langley, Mikhail Vorozhtsov, PHO, Taru Karttunen
Maintainer:    Vladimir Shabanov <dev@vshabanov.com>
Stability:     stable
Homepage:      https://github.com/haskell-cryptography/HsOpenSSL
Bug-Reports:   https://github.com/haskell-cryptography/HsOpenSSL/issues
Category:      Cryptography
Cabal-Version: 1.12
Tested-With:
    GHC==8.8.1, GHC==8.6.5, GHC==8.4.4, GHC==8.2.2, GHC==8.0.2, GHC==7.10.3, GHC==7.8.4, GHC==7.6.3, GHC ==7.4.2
Build-Type:    Custom
Extra-Source-Files:
    AUTHORS
    ChangeLog
    README.md
    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/haskell-cryptography/HsOpenSSL.git

Flag fast-bignum
    Description:
        Enable fast moving of bignums between OpenSSL and GMP (GHC and OpenSSL version < 1.1.0 only).
    Default:
        False

Flag homebrew-openssl
    Description:
        Use Homebrew version of OpenSSL (macOS only).
    Default:
        False

Flag macports-openssl
    Description:
        Use MacPorts version of OpenSSL (macOS only).
    Default:
        False

Flag use-pkg-config
    Description:
        Use pkg-config to find OpenSSL (macOS and linux only).
    Default:
        False
    Manual:
        True

Custom-setup
    setup-depends: Cabal >= 1.12,
                   base  >= 4.4 && < 5

Library
    Build-Depends:
        base       >= 4.4 && < 5,
        bytestring >= 0.9 && < 0.12,
        network    >= 2.1 && < 3.2,
        time       >= 1.5 && < 1.13

    Build-Tools: hsc2hs >= 0.67

    if flag(fast-bignum) && impl(ghc >= 7.10.1)
        -- only new integer-gmp 1.0.0 is supported
        -- and it only works in OpenSSL version < 1.1.0 where BIGNUM
        -- wasn't opaque structure.
        CPP-Options: -DFAST_BIGNUM
        Build-Depends: integer-gmp >= 1.0.0 && < 1.1.0

    if os(darwin) && flag(homebrew-openssl)
        Include-Dirs: /usr/local/opt/openssl/include
        Extra-Lib-Dirs: /usr/local/opt/openssl/lib

    if os(darwin) && flag(macports-openssl)
        Include-Dirs: /opt/local/include
        Extra-Lib-Dirs: /opt/local/lib

    if flag(use-pkg-config)
        pkgconfig-depends: libssl, libcrypto
    else
        Extra-Libraries: ssl crypto

    if os(mingw32)
        C-Sources:       cbits/mutex-win.c
        CC-Options:      -D MINGW32 -DNOCRYPT
        CPP-Options:     -DCALLCONV=stdcall
    else
        C-Sources:       cbits/mutex-pthread.c
        CC-Options:      -D PTHREAD
        CPP-Options:     -DCALLCONV=ccall

    Exposed-Modules:
        OpenSSL
        OpenSSL.BN
        OpenSSL.DER
        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.Option
        OpenSSL.Stack
        OpenSSL.Utils
        OpenSSL.X509.Name
        OpenSSL.DH.Internal
    Default-Language:
        Haskell2010
    GHC-Options:
        -Wall
    C-Sources:
        cbits/HsOpenSSL.c
    Include-Dirs:
        cbits
    Includes:
        openssl/asn1.h

Test-Suite test-dsa
    Type:    exitcode-stdio-1.0
    Main-Is: DSA.hs
    HS-Source-Dirs: Test/OpenSSL
    Other-Modules: TestUtils
    Build-Depends:
        HsOpenSSL,
        base                 >= 4.4 && < 5,
        bytestring           >= 0.9 && < 0.12
    Default-Language:
        Haskell2010
    GHC-Options:
        -Wall

Test-Suite test-der
    Type:    exitcode-stdio-1.0
    Main-Is: DER.hs
    HS-Source-Dirs: Test/OpenSSL
    Other-Modules: TestUtils
    Build-Depends:
        HsOpenSSL,
        base                 >= 4.4 && < 5
    Default-Language:
        Haskell2010
    GHC-Options:
        -Wall

Test-Suite test-evp-base64
    Type:    exitcode-stdio-1.0
    Main-Is: EVP/Base64.hs
    HS-Source-Dirs: Test/OpenSSL
    Other-Modules: TestUtils
    Build-Depends:
        HsOpenSSL,
        base                 >= 4.4 && < 5,
        bytestring           >= 0.9 && < 0.12
    Default-Language:
        Haskell2010
    GHC-Options:
        -Wall

Test-Suite test-evp-digest
    Type:    exitcode-stdio-1.0
    Main-Is: EVP/Digest.hs
    HS-Source-Dirs: Test/OpenSSL
    Other-Modules: TestUtils
    Build-Depends:
        HsOpenSSL,
        base                 >= 4.4 && < 5,
        bytestring           >= 0.9 && < 0.12
    Default-Language:
        Haskell2010
    GHC-Options:
        -Wall