Utility methods for reading key & cert data.

[?]
Feb 2, 2017, 4:11 AM
MJ6R42RCK2ASXAJ6QXDPMAW56RBOJ4F4HI2LFIV3KXFIKWYMQK3QC

Dependencies

  • [2] HMDM3B55 Implement core of payments/billing infrastructure.
  • [3] NEDDHXUK Reformat via stylish-haskell
  • [4] 2XQD6KKK Add invitation logic and clean up DBProg error handling.
  • [5] V2VDN77H Enable postgres configuration via environment variable for Heroku.
  • [6] 6L5BK5EH Use generic SMTP rather than Sendmail-specific mail client.
  • [7] DFOBMSAO Initial work on payments API
  • [8] LCBJULKE Fix swapped default and key in QConfig.
  • [9] Q5X5RYQL stylish-haskell reformatting
  • [*] 64C6AWH6 Rename Ananke -> Quixotic, project reboot.

Change contents

  • edit in aftok.cabal at line 164
    [3.1612]
    , x509
    , x509-store
  • replacement in server/Aftok/QConfig.hs at line 9
    [3.6698][2.16708:16760]()
    import qualified Network.Bippy.Types as B
    [3.6698]
    [3.6698]
    import Data.X509
    import Data.X509.File (readSignedObject, readKeyFile)
    import qualified Network.Bippy.Types as BT
  • edit in server/Aftok/QConfig.hs at line 21
    [3.4839]
    [3.4840]
    import qualified Aftok.Payments as AP
  • replacement in server/Aftok/QConfig.hs at line 30
    [3.7190][2.16761:16792]()
    , btcConfig :: BtcConfig
    [3.7190]
    [3.7190]
    , billingConfig :: BillingConfig
  • replacement in server/Aftok/QConfig.hs at line 41
    [3.5085][2.16793:16851]()
    data BtcConfig = BtcConfig
    { btcNetwork :: B.Network }
    [3.5085]
    [2.16851]
    data BillingConfig = BillingConfig
    { network :: BT.Network
    , signingKeyFile :: System.IO.FilePath
    , certsFile :: System.IO.FilePath
    }
  • replacement in server/Aftok/QConfig.hs at line 62
    [3.572][2.16853:16885]()
    <*> readBtcConfig cfg
    [3.572]
    [3.3]
    <*> readBillingConfig cfg
  • replacement in server/Aftok/QConfig.hs at line 72
    [3.5812][2.16886:17124]()
    readBtcConfig :: CT.Config -> IO BtcConfig
    readBtcConfig cfg =
    let parseNetwork :: String -> B.Network
    parseNetwork "main" = B.MainNet
    parseNetwork _ = B.TestNet
    in (BtcConfig . parseNetwork) <$> C.require cfg "network"
    [3.5812]
    [2.17124]
    readBillingConfig :: CT.Config -> IO BillingConfig
    readBillingConfig cfg =
    BillingConfig <$> (parseNetwork <$> C.require cfg "network")
    <*> C.require cfg "signingKeyFile"
    <*> C.require cfg "certsFile"
    where parseNetwork :: String -> BT.Network
    parseNetwork "main" = BT.MainNet
    parseNetwork _ = BT.TestNet
  • replacement in server/Aftok/QConfig.hs at line 92
    [3.6294][2.17186:17187]()
    [3.6294]
    toBillingConfig :: BillingConfig -> IO AP.BillingConfig
    toBillingConfig c = do
    privKeys <- readKeyFile (signingKeyFile c)
    pkiEntries <- readSignedObject (certsFile c)
    privKey <- case headMay privKeys of
    Just (PrivKeyRSA k) -> pure k
    Just (PrivKeyDSA _) -> fail "DSA keys not supported for payment request signing."
    Nothing -> fail $ "No keys found in private key file " <> signingKeyFile c
    let pkiData = BT.X509SHA256 . CertificateChain $ pkiEntries
    pure $ AP.BillingConfig (network c) privKey pkiData
  • replacement in server/Aftok/Snaplet/Payments.hs at line 19
    [3.10163][2.17735:17779]()
    widx <- snapEval $ fc (ReadWorkIndex pid)
    [3.10163]
    [2.17779]
    createPaymentRequests ptime memogen urigen plgen uid pid
  • replacement in server/Aftok/Snaplet/Payments.hs at line 23
    [3.3022][3.10295:10307](),[2.17951][3.10295:10307](),[3.10295][3.10295:10307]()
    undefined
    [2.17951]
    [2.17952]