Compare commits

..

3 commits

Author SHA1 Message Date
La Ancapo
09a78164d3 sync .cabal's and purge debugging cruft 2026-01-25 03:09:03 +01:00
La Ancapo
a9cffbe482 prune imports 2026-01-25 02:51:30 +01:00
La Ancapo
f9b51f107d produce decoded transaction in stderr
to avoid interfering with possible scripting
2026-01-25 02:50:13 +01:00
4 changed files with 9 additions and 14 deletions

View file

@ -2,6 +2,6 @@
The aim is to create a trustworthy Stellar transaction signer (and, by necessity, a pretty printer) using only Glasgow Haskell compiler code and Haskell Core libraries, reducing the possible supply chain attack surface. The aim is to create a trustworthy Stellar transaction signer (and, by necessity, a pretty printer) using only Glasgow Haskell compiler code and Haskell Core libraries, reducing the possible supply chain attack surface.
To build and run it, install `cabal-install` and use `cabal run`. To build and run it, install `cabal-install` and use `cabal run`. The program expects your transaction coming from the standard input, and your private (S...) key residing in `$HOME/~/.stellar-veritas-key`. It will produce the decoded transaction description afterwards, with simple descriptions of the most popular operations. When it is ran from an interactive terminal, it will ask for a confirmation before signing the transaction.
The project contains the code of trimmed-down non-core dependencies, mainly cryptographic libraries. To avoid using bundled libraries (to build against the current Hackage), do the same in the `src` directory. To further reduce the amount of code under audit, weeder can be used, although the utility is dubious. The project contains the code of trimmed-down non-core dependencies, mainly cryptographic libraries. To avoid using bundled libraries (to build against the current Hackage), do the same in the `src` directory. To further reduce the amount of code under audit, weeder can be used, although the utility is dubious.

View file

@ -4,11 +4,9 @@ module Main where
import Control.Monad import Control.Monad
import qualified Data.ByteString as B import qualified Data.ByteString as B
import Data.ByteString.Base32 (decodeBase32, encodeBase32) import Data.ByteString.Base32 (encodeBase32)
import qualified Data.ByteString.Base64 as B64 import qualified Data.ByteString.Base64 as B64
import qualified Data.ByteString.Char8 as BC8 import qualified Data.ByteString.Char8 as BC8
import Data.Coerce
import Data.Char
import Data.List import Data.List
import Data.Maybe import Data.Maybe
import qualified Data.Text as T import qualified Data.Text as T
@ -31,7 +29,7 @@ main = do
let parsedTransaction = case xdrDeserialize transaction :: Either String TransactionEnvelope of let parsedTransaction = case xdrDeserialize transaction :: Either String TransactionEnvelope of
Left err -> error err Left err -> error err
Right x -> x Right x -> x
T.putStrLn $ pretty parsedTransaction T.hPutStrLn stderr $ pretty parsedTransaction
proceed <- confirm proceed <- confirm
when proceed $ do when proceed $ do
key <- getPrivateKey key <- getPrivateKey

View file

@ -2,22 +2,19 @@ cabal-version: 3.0
name: stellar-veritas name: stellar-veritas
-- semver -- semver
version: 0 version: 0
synopsis: Stellar transaction signer and pretty-printer synopsis: Stellar transaction signer and pretty-printer
-- description: description: The aim is to create a trustworthy Stellar transaction signer (and, by necessity, a pretty printer) using only Glasgow Haskell compiler code and Haskell Core libraries, reducing the possible supply chain attack surface.
license: AGPL-3.0-only license: AGPL-3.0-only
license-file: LICENSE license-file: COPYING
-- author: author: La Ancapo
-- maintainer:
-- copyright:
category: Network, Stellar category: Network, Stellar
build-type: Simple build-type: Simple
tested-with: GHC == 9.12.3 tested-with: GHC == 9.12.3
executable stellar-veritas executable stellar-veritas
main-is: Main.hs main-is: Main.hs
ghc-options: -W -Wcompat -fno-warn-tabs -g ghc-options: -W -Wcompat -fno-warn-tabs -rtsopts=ignoreAll -optl-Wl,-s
other-modules: other-modules:
-- other-extensions:
build-depends: base >= 4.9 && < 5, build-depends: base >= 4.9 && < 5,
text >= 1.2.4.1 && < 2.2, text >= 1.2.4.1 && < 2.2,
bytestring ^>= 0.12, bytestring ^>= 0.12,

View file

@ -13,7 +13,7 @@ tested-with: GHC == 9.12.3
executable stellar-veritas executable stellar-veritas
main-is: Main.hs main-is: Main.hs
ghc-options: -W -Wcompat -fno-warn-tabs -g ghc-options: -W -Wcompat -fno-warn-tabs -rtsopts=ignoreAll -optl-Wl,-s
other-modules: other-modules:
build-depends: base >= 4.9 && < 5, build-depends: base >= 4.9 && < 5,
text >= 1.2.4.1 && < 2.2, text >= 1.2.4.1 && < 2.2,