ppad-bip39 0.2.0 → 0.2.1
raw patch · 4 files changed
+77/−3 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- CHANGELOG +3/−0
- bench/Main.hs +21/−1
- lib/Crypto/KDF/BIP39.hs +52/−1
- ppad-bip39.cabal +1/−1
CHANGELOG view
@@ -1,5 +1,8 @@ # Changelog +- 0.2.1 (2025-03-02)+ * Various documentation improvements.+ - 0.2.0 (2025-02-27) * 'seed' now validates the words in the mnemonic supplied to it; 'seed_unsafe' has been added as a function that works for any
bench/Main.hs view
@@ -1,4 +1,24 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}+{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE OverloadedStrings #-}+ module Main where +import Criterion.Main+import Crypto.KDF.BIP39+ main :: IO ()-main = pure ()+main = defaultMain [+ bgroup "ppad-bip39" [+ bench_mnemonic+ , bench_seed+ ]+ ]++bench_mnemonic :: Benchmark+bench_mnemonic = bench "mnemonic" $ nf mnemonic "my ultra secret entropy!"++bench_seed :: Benchmark+bench_seed = bench "seed" $ nf (seed mnem) mempty where+ mnem = "hope simple bubble suggest elbow correct limb hole gloom nasty fringe dolphin finger demand situate unlock junior autumn"+
lib/Crypto/KDF/BIP39.hs view
@@ -3,7 +3,7 @@ {-# LANGUAGE OverloadedStrings #-} -- |--- Module: Crypto.HDKey.BIP32+-- Module: Crypto.HDKey.BIP39 -- Copyright: (c) 2025 Jared Tobin -- License: MIT -- Maintainer: Jared Tobin <jared@ppad.tech>@@ -25,6 +25,8 @@ , seed_unsafe -- * Wordlists+ --+ -- $wordlists , Wordlist(..) , english , chinese_traditional@@ -234,6 +236,19 @@ -- wordlists ------------------------------------------------------------------ +-- $wordlists+--+-- Wordlists for various languages.+--+-- For the following examples:+--+-- >>> import qualified Data.Text.IO as TIO+-- >>> let trop = "0123456789abcdef"++-- | The default English wordlist.+--+-- >>> TIO.putStrLn $ _mnemonic english trop+-- coral maze mimic half fat breeze thought club give brass bone snake english :: Wordlist english = unsafePerformIO $ do wlist <- fmap TE.decodeUtf8 (BS.readFile "etc/english.txt")@@ -241,6 +256,10 @@ pure (Wordlist (PA.arrayFromList ls)) {-# NOINLINE english #-} +-- | The default Traditional Chinese wordlist.+--+-- >>> TIO.putStrLn $ _mnemonic chinese_traditional trop+-- 持 樓 粗 殺 承 圖 湧 整 拿 路 式 棋 chinese_traditional :: Wordlist chinese_traditional = unsafePerformIO $ do wlist <- fmap TE.decodeUtf8 (BS.readFile "etc/chinese_traditional.txt")@@ -248,6 +267,10 @@ pure (Wordlist (PA.arrayFromList ls)) {-# NOINLINE chinese_traditional #-} +-- | The default Simplified Chinese wordlist.+--+-- >>> TIO.putStrLn $ _mnemonic chinese_simplified trop+-- 持 楼 粗 杀 承 图 涌 整 拿 路 式 棋 chinese_simplified :: Wordlist chinese_simplified = unsafePerformIO $ do wlist <- fmap TE.decodeUtf8 (BS.readFile "etc/chinese_simplified.txt")@@ -255,6 +278,10 @@ pure (Wordlist (PA.arrayFromList ls)) {-# NOINLINE chinese_simplified #-} +-- | The default Korean wordlist.+--+-- >>> TIO.putStrLn $ _mnemonic korean trop+-- 대문 어쩐지 여덟 설거지 볶음 그늘 태권도 단맛 상반기 균형 국왕 진출 korean :: Wordlist korean = unsafePerformIO $ do wlist <- fmap TE.decodeUtf8 (BS.readFile "etc/korean.txt")@@ -262,6 +289,10 @@ pure (Wordlist (PA.arrayFromList ls)) {-# NOINLINE korean #-} +-- | The default French wordlist.+--+-- >>> TIO.putStrLn $ _mnemonic french trop+-- chlorure kimono légume flamme endroit bénéfice soulever céleste falaise belette banlieue reprise french :: Wordlist french = unsafePerformIO $ do wlist <- fmap TE.decodeUtf8 (BS.readFile "etc/french.txt")@@ -269,6 +300,10 @@ pure (Wordlist (PA.arrayFromList ls)) {-# NOINLINE french #-} +-- | The default Spanish wordlist.+--+-- >>> TIO.putStrLn $ _mnemonic spanish trop+-- charla marido mente guía explicar banco tapa casco gemelo balcón ayuda ropa spanish :: Wordlist spanish = unsafePerformIO $ do wlist <- fmap TE.decodeUtf8 (BS.readFile "etc/spanish.txt")@@ -276,6 +311,10 @@ pure (Wordlist (PA.arrayFromList ls)) {-# NOINLINE spanish #-} +-- | The default Czech wordlist.+--+-- >>> TIO.putStrLn $ _mnemonic czech trop+-- hadr omladina oslepit metr krajina deflace varovat flirt lovec dechovka cudnost svitek czech :: Wordlist czech = unsafePerformIO $ do wlist <- fmap TE.decodeUtf8 (BS.readFile "etc/czech.txt")@@ -283,6 +322,10 @@ pure (Wordlist (PA.arrayFromList ls)) {-# NOINLINE czech #-} +-- | The default Italian wordlist.+--+-- >>> TIO.putStrLn $ _mnemonic italian trop+-- conferma nevrotico obbligo indole florido benigno svista cigno grotta belva barbaro sfocato italian :: Wordlist italian = unsafePerformIO $ do wlist <- fmap TE.decodeUtf8 (BS.readFile "etc/italian.txt")@@ -290,6 +333,10 @@ pure (Wordlist (PA.arrayFromList ls)) {-# NOINLINE italian #-} +-- | The default Portuguese wordlist.+--+-- >>> TIO.putStrLn $ _mnemonic portuguese trop+-- capacho juba lareira figurado ejetar avaliar sonhador cachorro exposto autismo aterro refinar portuguese :: Wordlist portuguese = unsafePerformIO $ do wlist <- fmap TE.decodeUtf8 (BS.readFile "etc/portuguese.txt")@@ -297,6 +344,10 @@ pure (Wordlist (PA.arrayFromList ls)) {-# NOINLINE portuguese #-} +-- | The default Japanese wordlist.+--+-- >>> TIO.putStrLn $ _mnemonic japanese trop+-- きおん たさい たまご しゃおん こふん えきたい ますく がはく しかい えおり うろこ ひとごみ japanese :: Wordlist japanese = unsafePerformIO $ do wlist <- fmap TE.decodeUtf8 (BS.readFile "etc/japanese.txt")
ppad-bip39.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: ppad-bip39-version: 0.2.0+version: 0.2.1 synopsis: BIP39 mnemonic codes. license: MIT license-file: LICENSE