MJ6R42RCK2ASXAJ6QXDPMAW56RBOJ4F4HI2LFIV3KXFIKWYMQK3QC HMDM3B557TO5RYP2IGFFC2C2VN6HYZTDQ47CJY2O37BW55DSMFZAC 2XQD6KKKD6QVHFHAEMVE3XXY7X2T7BLTLL7XIILZAXNJJH2YONUQC 64C6AWH66FDKU6UE6Z6JPX2J2GBM2JOPTH2GL6LHKAIUBGNGDZ5AC NEDDHXUK3GNFMOFO3KLU7NRIHCTYNWBT3D6HTKZAOXFDE6HMDZ6AC V2VDN77HCSRYYWXDJJ2XOVHV4P6PVWNJZLXZ7JUYPQEZQIH5BZ3QC 6L5BK5EHPAOQX3JCKUJ273UDNAC23LPQL4HIJGM4AV3P3QK5OKIQC LCBJULKEU4I5FRUGYNRQSHXYLY5X3LRTSNWDCTZLS7YE4BBBDE6AC DFOBMSAODB3NKW37B272ZXA2ML5HMIH3N3C4GT2DPEQS7ZFK4SNAC Q5X5RYQLP5K7REYD6VLHOKC4W36ZELJYA45V6YFKTD5S6MPN3NDQC , x509, x509-store
readBtcConfig :: CT.Config -> IO BtcConfigreadBtcConfig cfg =let parseNetwork :: String -> B.NetworkparseNetwork "main" = B.MainNetparseNetwork _ = B.TestNetin (BtcConfig . parseNetwork) <$> C.require cfg "network"
readBillingConfig :: CT.Config -> IO BillingConfigreadBillingConfig cfg =BillingConfig <$> (parseNetwork <$> C.require cfg "network")<*> C.require cfg "signingKeyFile"<*> C.require cfg "certsFile"where parseNetwork :: String -> BT.NetworkparseNetwork "main" = BT.MainNetparseNetwork _ = BT.TestNet
toBillingConfig :: BillingConfig -> IO AP.BillingConfigtoBillingConfig c = doprivKeys <- readKeyFile (signingKeyFile c)pkiEntries <- readSignedObject (certsFile c)privKey <- case headMay privKeys ofJust (PrivKeyRSA k) -> pure kJust (PrivKeyDSA _) -> fail "DSA keys not supported for payment request signing."Nothing -> fail $ "No keys found in private key file " <> signingKeyFile clet pkiData = BT.X509SHA256 . CertificateChain $ pkiEntriespure $ AP.BillingConfig (network c) privKey pkiData