diff options
author | Andrew Cady <d@jerkface.net> | 2016-01-24 00:10:58 -0500 |
---|---|---|
committer | Andrew Cady <d@jerkface.net> | 2016-01-24 00:13:57 -0500 |
commit | 05817369d9388d2175e942af79888ec01aa4b74a (patch) | |
tree | ceee298e6cc5944ef7fff385f5671bbbc87ee9fd /acme.hs | |
parent | 8e1377b22088c1c871915722e83746829419a0e6 (diff) |
Remove unused imports, extensions, & definitions
Diffstat (limited to 'acme.hs')
-rw-r--r-- | acme.hs | 23 |
1 files changed, 6 insertions, 17 deletions
@@ -1,5 +1,4 @@ | |||
1 | {-# LANGUAGE FlexibleContexts #-} | 1 | {-# LANGUAGE FlexibleContexts #-} |
2 | {-# LANGUAGE MultiParamTypeClasses #-} | ||
3 | {-# LANGUAGE OverloadedStrings #-} | 2 | {-# LANGUAGE OverloadedStrings #-} |
4 | {-# LANGUAGE RecordWildCards #-} | 3 | {-# LANGUAGE RecordWildCards #-} |
5 | {-# LANGUAGE ScopedTypeVariables #-} | 4 | {-# LANGUAGE ScopedTypeVariables #-} |
@@ -11,27 +10,25 @@ | |||
11 | 10 | ||
12 | module Main where | 11 | module Main where |
13 | 12 | ||
14 | import Control.Lens hiding ((.=), each) | 13 | import Control.Lens hiding (each, (.=)) |
15 | import Control.Monad | 14 | import Control.Monad |
16 | import Control.Monad.RWS.Strict | 15 | import Control.Monad.RWS.Strict |
17 | import Crypto.Number.Serialize (i2osp) | 16 | import Data.Aeson (Value) |
18 | import Data.Aeson (ToJSON (..), Value, encode, object, | ||
19 | (.=)) | ||
20 | import Data.Aeson.Lens hiding (key) | 17 | import Data.Aeson.Lens hiding (key) |
21 | import qualified Data.Aeson.Lens as JSON | 18 | import qualified Data.Aeson.Lens as JSON |
22 | import Data.ByteString (ByteString) | 19 | import Data.ByteString (ByteString) |
23 | import qualified Data.ByteString as B | 20 | import qualified Data.ByteString as B |
24 | import qualified Data.ByteString.Base64.URL as Base64 | ||
25 | import qualified Data.ByteString.Char8 as BC | 21 | import qualified Data.ByteString.Char8 as BC |
26 | import qualified Data.ByteString.Lazy as LB | 22 | import qualified Data.ByteString.Lazy as LB |
27 | import qualified Data.ByteString.Lazy.Char8 as LC | 23 | import qualified Data.ByteString.Lazy.Char8 as LC |
28 | import Data.Coerce | 24 | import Data.Coerce |
29 | import Data.Digest.Pure.SHA (bytestringDigest, sha256) | 25 | import Data.List |
30 | import Data.Maybe | 26 | import Data.Maybe |
31 | import Data.String (fromString) | 27 | import Data.String (fromString) |
32 | import qualified Data.Text as T | 28 | import qualified Data.Text as T |
33 | import Data.Text.Encoding (decodeUtf8, encodeUtf8) | 29 | import Data.Text.Encoding (decodeUtf8, encodeUtf8) |
34 | import Data.Time.Clock.POSIX (getPOSIXTime) | 30 | import Data.Time.Clock.POSIX (getPOSIXTime) |
31 | import Network.ACME | ||
35 | import Network.Wreq (Response, checkStatus, defaults, | 32 | import Network.Wreq (Response, checkStatus, defaults, |
36 | responseBody, responseHeader, | 33 | responseBody, responseHeader, |
37 | responseStatus, statusCode, | 34 | responseStatus, statusCode, |
@@ -40,19 +37,14 @@ import qualified Network.Wreq as W | |||
40 | import qualified Network.Wreq.Session as WS | 37 | import qualified Network.Wreq.Session as WS |
41 | import OpenSSL | 38 | import OpenSSL |
42 | import OpenSSL.EVP.Digest | 39 | import OpenSSL.EVP.Digest |
43 | import OpenSSL.EVP.PKey | ||
44 | import OpenSSL.EVP.Sign | ||
45 | import OpenSSL.PEM | 40 | import OpenSSL.PEM |
46 | import OpenSSL.RSA | 41 | import OpenSSL.RSA |
47 | import OpenSSL.X509.Request | 42 | import OpenSSL.X509.Request |
48 | import Options.Applicative hiding (header) | 43 | import Options.Applicative hiding (header) |
49 | import qualified Options.Applicative as Opt | 44 | import qualified Options.Applicative as Opt |
45 | import Pipes | ||
50 | import System.Directory | 46 | import System.Directory |
51 | 47 | ||
52 | import Network.ACME | ||
53 | import Data.List | ||
54 | import Pipes | ||
55 | |||
56 | stagingDirectoryUrl, liveDirectoryUrl :: String | 48 | stagingDirectoryUrl, liveDirectoryUrl :: String |
57 | liveDirectoryUrl = "https://acme-v01.api.letsencrypt.org/directory" | 49 | liveDirectoryUrl = "https://acme-v01.api.letsencrypt.org/directory" |
58 | stagingDirectoryUrl = "https://acme-staging.api.letsencrypt.org/directory" | 50 | stagingDirectoryUrl = "https://acme-staging.api.letsencrypt.org/directory" |
@@ -129,14 +121,11 @@ genReq domainKeyFile domains@(domain:_) = withOpenSSL $ do | |||
129 | setSubjectName req [("CN", domain)] | 121 | setSubjectName req [("CN", domain)] |
130 | setVersion req 0 | 122 | setVersion req 0 |
131 | setPublicKey req pub | 123 | setPublicKey req pub |
132 | void $ addExtensions req [nidSubjectAltName %%% intercalate ", " (map ("DNS:" ++) domains)] | 124 | void $ addExtensions req [(nidSubjectAltName, intercalate ", " (map ("DNS:" ++) domains))] |
133 | signX509Req req priv (Just dig) | 125 | signX509Req req priv (Just dig) |
134 | writeX509ReqDER req | 126 | writeX509ReqDER req |
135 | where | 127 | where |
136 | nidKeyUsage = 83 | ||
137 | nidSubjectAltName = 85 | 128 | nidSubjectAltName = 85 |
138 | (%%%) = (,) | ||
139 | infixr 0 %%% | ||
140 | 129 | ||
141 | readKeyFile :: FilePath -> IO (Maybe Keys) | 130 | readKeyFile :: FilePath -> IO (Maybe Keys) |
142 | readKeyFile = readFile >=> readKeys | 131 | readKeyFile = readFile >=> readKeys |