bip39

BIP39 mnemonic codes in Haskell (docs.ppad.tech/bip39).
git clone git://git.ppad.tech/bip39.git
Log | Files | Refs | README | LICENSE

commit 957e2ad643f4e8fcf178bd35ccd7543a637c114e
parent 7d1b61c58fea2bc7b0d34c97d597d1aa47da3760
Author: Jared Tobin <jared@jtobin.io>
Date:   Thu, 27 Feb 2025 09:37:43 +0400

lib: general wordlist handling

* use UTF-8 for wordlists, which is required for non-English wordlists
* generalise stuff to allow non-English wordlists
* add CT wordlist

Diffstat:
Mlib/Crypto/KDF/BIP39.hs | 2076++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Mppad-bip39.cabal | 1+
2 files changed, 2071 insertions(+), 6 deletions(-)

diff --git a/lib/Crypto/KDF/BIP39.hs b/lib/Crypto/KDF/BIP39.hs @@ -6,6 +6,11 @@ module Crypto.KDF.BIP39 ( Mnemonic(..) , mnemonic , seed + + -- testing + , _mnemonic + , english + , chinese_traditional ) where import qualified Crypto.KDF.PBKDF as PBKDF @@ -19,6 +24,8 @@ import qualified Data.Primitive.Array as PA import Data.Word (Word64) import qualified Data.List as L import Prelude hiding (words) +import qualified Data.Text as T +import qualified Data.Text.Encoding as TE newtype Mnemonic = Mnemonic BS.ByteString deriving Eq @@ -33,8 +40,8 @@ fi = fromIntegral -- remaining, bits pool, number of bits in pool type Acc = (BS.ByteString, Word64, Int) -words :: BS.ByteString -> [BS.ByteString] -words bs = L.unfoldr coalg (bs, 0, 0) where +words :: PA.Array T.Text -> BS.ByteString -> [BS.ByteString] +words wlist bs = L.unfoldr coalg (bs, 0, 0) where mask = 0b0111_1111_1111 coalg :: Acc -> Maybe (BS.ByteString, Acc) coalg (etc, acc, len) @@ -42,7 +49,7 @@ words bs = L.unfoldr coalg (bs, 0, 0) where let w11 = fi ((acc .>>. (len - 11)) .&. mask) -- take bits from pool nacc = acc .&. ((1 .<<. (len - 11)) - 1) -- adjust pool nlen = len - 11 -- track less bits - word = PA.indexArray english w11 + word = TE.encodeUtf8 (PA.indexArray wlist w11) in Just (word, (etc, nacc, nlen)) | not (BS.null etc) = let next = BU.unsafeHead etc @@ -52,9 +59,13 @@ words bs = L.unfoldr coalg (bs, 0, 0) where in coalg (rest, nacc, nlen) | otherwise = Nothing +{-# INLINE words #-} mnemonic :: BS.ByteString -> Mnemonic -mnemonic entropy@(BI.PS _ _ l) +mnemonic = _mnemonic english + +_mnemonic :: PA.Array T.Text -> BS.ByteString -> Mnemonic +_mnemonic wlist entropy@(BI.PS _ _ l) | l `rem` 4 /= 0 = error "ppad-bip39 (mnemonic): invalid entropy length" | l < 16 = error "ppad-bip39 (mnemonic): invalid entropy length" | l > 32 = error "ppad-bip39 (mnemonic): invalid entropy length" @@ -64,13 +75,14 @@ mnemonic entropy@(BI.PS _ _ l) n = l `quot` 4 kek = h .&. (0b1111_1111 .<<. (8 - n)) -- top n bits cat = entropy <> BS.singleton kek - in Mnemonic (BS.intercalate " " (words cat)) + in Mnemonic (BS.intercalate " " (words wlist cat)) +{-# INLINE _mnemonic #-} seed :: BS.ByteString -> BS.ByteString -> BS.ByteString seed mnem pass = PBKDF.derive SHA512.hmac mnem salt 2048 64 where salt = "mnemonic" <> pass -english :: PA.Array BS.ByteString +english :: PA.Array T.Text english = PA.arrayFromList [ "abandon" , "ability" @@ -2121,3 +2133,2055 @@ english = PA.arrayFromList [ , "zone" , "zoo" ] + +chinese_traditional :: PA.Array T.Text +chinese_traditional = PA.arrayFromList [ + "的" + , "一" + , "是" + , "在" + , "不" + , "了" + , "有" + , "和" + , "人" + , "這" + , "中" + , "大" + , "為" + , "上" + , "個" + , "國" + , "我" + , "以" + , "要" + , "他" + , "時" + , "來" + , "用" + , "們" + , "生" + , "到" + , "作" + , "地" + , "於" + , "出" + , "就" + , "分" + , "對" + , "成" + , "會" + , "可" + , "主" + , "發" + , "年" + , "動" + , "同" + , "工" + , "也" + , "能" + , "下" + , "過" + , "子" + , "說" + , "產" + , "種" + , "面" + , "而" + , "方" + , "後" + , "多" + , "定" + , "行" + , "學" + , "法" + , "所" + , "民" + , "得" + , "經" + , "十" + , "三" + , "之" + , "進" + , "著" + , "等" + , "部" + , "度" + , "家" + , "電" + , "力" + , "裡" + , "如" + , "水" + , "化" + , "高" + , "自" + , "二" + , "理" + , "起" + , "小" + , "物" + , "現" + , "實" + , "加" + , "量" + , "都" + , "兩" + , "體" + , "制" + , "機" + , "當" + , "使" + , "點" + , "從" + , "業" + , "本" + , "去" + , "把" + , "性" + , "好" + , "應" + , "開" + , "它" + , "合" + , "還" + , "因" + , "由" + , "其" + , "些" + , "然" + , "前" + , "外" + , "天" + , "政" + , "四" + , "日" + , "那" + , "社" + , "義" + , "事" + , "平" + , "形" + , "相" + , "全" + , "表" + , "間" + , "樣" + , "與" + , "關" + , "各" + , "重" + , "新" + , "線" + , "內" + , "數" + , "正" + , "心" + , "反" + , "你" + , "明" + , "看" + , "原" + , "又" + , "麼" + , "利" + , "比" + , "或" + , "但" + , "質" + , "氣" + , "第" + , "向" + , "道" + , "命" + , "此" + , "變" + , "條" + , "只" + , "沒" + , "結" + , "解" + , "問" + , "意" + , "建" + , "月" + , "公" + , "無" + , "系" + , "軍" + , "很" + , "情" + , "者" + , "最" + , "立" + , "代" + , "想" + , "已" + , "通" + , "並" + , "提" + , "直" + , "題" + , "黨" + , "程" + , "展" + , "五" + , "果" + , "料" + , "象" + , "員" + , "革" + , "位" + , "入" + , "常" + , "文" + , "總" + , "次" + , "品" + , "式" + , "活" + , "設" + , "及" + , "管" + , "特" + , "件" + , "長" + , "求" + , "老" + , "頭" + , "基" + , "資" + , "邊" + , "流" + , "路" + , "級" + , "少" + , "圖" + , "山" + , "統" + , "接" + , "知" + , "較" + , "將" + , "組" + , "見" + , "計" + , "別" + , "她" + , "手" + , "角" + , "期" + , "根" + , "論" + , "運" + , "農" + , "指" + , "幾" + , "九" + , "區" + , "強" + , "放" + , "決" + , "西" + , "被" + , "幹" + , "做" + , "必" + , "戰" + , "先" + , "回" + , "則" + , "任" + , "取" + , "據" + , "處" + , "隊" + , "南" + , "給" + , "色" + , "光" + , "門" + , "即" + , "保" + , "治" + , "北" + , "造" + , "百" + , "規" + , "熱" + , "領" + , "七" + , "海" + , "口" + , "東" + , "導" + , "器" + , "壓" + , "志" + , "世" + , "金" + , "增" + , "爭" + , "濟" + , "階" + , "油" + , "思" + , "術" + , "極" + , "交" + , "受" + , "聯" + , "什" + , "認" + , "六" + , "共" + , "權" + , "收" + , "證" + , "改" + , "清" + , "美" + , "再" + , "採" + , "轉" + , "更" + , "單" + , "風" + , "切" + , "打" + , "白" + , "教" + , "速" + , "花" + , "帶" + , "安" + , "場" + , "身" + , "車" + , "例" + , "真" + , "務" + , "具" + , "萬" + , "每" + , "目" + , "至" + , "達" + , "走" + , "積" + , "示" + , "議" + , "聲" + , "報" + , "鬥" + , "完" + , "類" + , "八" + , "離" + , "華" + , "名" + , "確" + , "才" + , "科" + , "張" + , "信" + , "馬" + , "節" + , "話" + , "米" + , "整" + , "空" + , "元" + , "況" + , "今" + , "集" + , "溫" + , "傳" + , "土" + , "許" + , "步" + , "群" + , "廣" + , "石" + , "記" + , "需" + , "段" + , "研" + , "界" + , "拉" + , "林" + , "律" + , "叫" + , "且" + , "究" + , "觀" + , "越" + , "織" + , "裝" + , "影" + , "算" + , "低" + , "持" + , "音" + , "眾" + , "書" + , "布" + , "复" + , "容" + , "兒" + , "須" + , "際" + , "商" + , "非" + , "驗" + , "連" + , "斷" + , "深" + , "難" + , "近" + , "礦" + , "千" + , "週" + , "委" + , "素" + , "技" + , "備" + , "半" + , "辦" + , "青" + , "省" + , "列" + , "習" + , "響" + , "約" + , "支" + , "般" + , "史" + , "感" + , "勞" + , "便" + , "團" + , "往" + , "酸" + , "歷" + , "市" + , "克" + , "何" + , "除" + , "消" + , "構" + , "府" + , "稱" + , "太" + , "準" + , "精" + , "值" + , "號" + , "率" + , "族" + , "維" + , "劃" + , "選" + , "標" + , "寫" + , "存" + , "候" + , "毛" + , "親" + , "快" + , "效" + , "斯" + , "院" + , "查" + , "江" + , "型" + , "眼" + , "王" + , "按" + , "格" + , "養" + , "易" + , "置" + , "派" + , "層" + , "片" + , "始" + , "卻" + , "專" + , "狀" + , "育" + , "廠" + , "京" + , "識" + , "適" + , "屬" + , "圓" + , "包" + , "火" + , "住" + , "調" + , "滿" + , "縣" + , "局" + , "照" + , "參" + , "紅" + , "細" + , "引" + , "聽" + , "該" + , "鐵" + , "價" + , "嚴" + , "首" + , "底" + , "液" + , "官" + , "德" + , "隨" + , "病" + , "蘇" + , "失" + , "爾" + , "死" + , "講" + , "配" + , "女" + , "黃" + , "推" + , "顯" + , "談" + , "罪" + , "神" + , "藝" + , "呢" + , "席" + , "含" + , "企" + , "望" + , "密" + , "批" + , "營" + , "項" + , "防" + , "舉" + , "球" + , "英" + , "氧" + , "勢" + , "告" + , "李" + , "台" + , "落" + , "木" + , "幫" + , "輪" + , "破" + , "亞" + , "師" + , "圍" + , "注" + , "遠" + , "字" + , "材" + , "排" + , "供" + , "河" + , "態" + , "封" + , "另" + , "施" + , "減" + , "樹" + , "溶" + , "怎" + , "止" + , "案" + , "言" + , "士" + , "均" + , "武" + , "固" + , "葉" + , "魚" + , "波" + , "視" + , "僅" + , "費" + , "緊" + , "愛" + , "左" + , "章" + , "早" + , "朝" + , "害" + , "續" + , "輕" + , "服" + , "試" + , "食" + , "充" + , "兵" + , "源" + , "判" + , "護" + , "司" + , "足" + , "某" + , "練" + , "差" + , "致" + , "板" + , "田" + , "降" + , "黑" + , "犯" + , "負" + , "擊" + , "范" + , "繼" + , "興" + , "似" + , "餘" + , "堅" + , "曲" + , "輸" + , "修" + , "故" + , "城" + , "夫" + , "夠" + , "送" + , "筆" + , "船" + , "佔" + , "右" + , "財" + , "吃" + , "富" + , "春" + , "職" + , "覺" + , "漢" + , "畫" + , "功" + , "巴" + , "跟" + , "雖" + , "雜" + , "飛" + , "檢" + , "吸" + , "助" + , "昇" + , "陽" + , "互" + , "初" + , "創" + , "抗" + , "考" + , "投" + , "壞" + , "策" + , "古" + , "徑" + , "換" + , "未" + , "跑" + , "留" + , "鋼" + , "曾" + , "端" + , "責" + , "站" + , "簡" + , "述" + , "錢" + , "副" + , "盡" + , "帝" + , "射" + , "草" + , "衝" + , "承" + , "獨" + , "令" + , "限" + , "阿" + , "宣" + , "環" + , "雙" + , "請" + , "超" + , "微" + , "讓" + , "控" + , "州" + , "良" + , "軸" + , "找" + , "否" + , "紀" + , "益" + , "依" + , "優" + , "頂" + , "礎" + , "載" + , "倒" + , "房" + , "突" + , "坐" + , "粉" + , "敵" + , "略" + , "客" + , "袁" + , "冷" + , "勝" + , "絕" + , "析" + , "塊" + , "劑" + , "測" + , "絲" + , "協" + , "訴" + , "念" + , "陳" + , "仍" + , "羅" + , "鹽" + , "友" + , "洋" + , "錯" + , "苦" + , "夜" + , "刑" + , "移" + , "頻" + , "逐" + , "靠" + , "混" + , "母" + , "短" + , "皮" + , "終" + , "聚" + , "汽" + , "村" + , "雲" + , "哪" + , "既" + , "距" + , "衛" + , "停" + , "烈" + , "央" + , "察" + , "燒" + , "迅" + , "境" + , "若" + , "印" + , "洲" + , "刻" + , "括" + , "激" + , "孔" + , "搞" + , "甚" + , "室" + , "待" + , "核" + , "校" + , "散" + , "侵" + , "吧" + , "甲" + , "遊" + , "久" + , "菜" + , "味" + , "舊" + , "模" + , "湖" + , "貨" + , "損" + , "預" + , "阻" + , "毫" + , "普" + , "穩" + , "乙" + , "媽" + , "植" + , "息" + , "擴" + , "銀" + , "語" + , "揮" + , "酒" + , "守" + , "拿" + , "序" + , "紙" + , "醫" + , "缺" + , "雨" + , "嗎" + , "針" + , "劉" + , "啊" + , "急" + , "唱" + , "誤" + , "訓" + , "願" + , "審" + , "附" + , "獲" + , "茶" + , "鮮" + , "糧" + , "斤" + , "孩" + , "脫" + , "硫" + , "肥" + , "善" + , "龍" + , "演" + , "父" + , "漸" + , "血" + , "歡" + , "械" + , "掌" + , "歌" + , "沙" + , "剛" + , "攻" + , "謂" + , "盾" + , "討" + , "晚" + , "粒" + , "亂" + , "燃" + , "矛" + , "乎" + , "殺" + , "藥" + , "寧" + , "魯" + , "貴" + , "鐘" + , "煤" + , "讀" + , "班" + , "伯" + , "香" + , "介" + , "迫" + , "句" + , "豐" + , "培" + , "握" + , "蘭" + , "擔" + , "弦" + , "蛋" + , "沉" + , "假" + , "穿" + , "執" + , "答" + , "樂" + , "誰" + , "順" + , "煙" + , "縮" + , "徵" + , "臉" + , "喜" + , "松" + , "腳" + , "困" + , "異" + , "免" + , "背" + , "星" + , "福" + , "買" + , "染" + , "井" + , "概" + , "慢" + , "怕" + , "磁" + , "倍" + , "祖" + , "皇" + , "促" + , "靜" + , "補" + , "評" + , "翻" + , "肉" + , "踐" + , "尼" + , "衣" + , "寬" + , "揚" + , "棉" + , "希" + , "傷" + , "操" + , "垂" + , "秋" + , "宜" + , "氫" + , "套" + , "督" + , "振" + , "架" + , "亮" + , "末" + , "憲" + , "慶" + , "編" + , "牛" + , "觸" + , "映" + , "雷" + , "銷" + , "詩" + , "座" + , "居" + , "抓" + , "裂" + , "胞" + , "呼" + , "娘" + , "景" + , "威" + , "綠" + , "晶" + , "厚" + , "盟" + , "衡" + , "雞" + , "孫" + , "延" + , "危" + , "膠" + , "屋" + , "鄉" + , "臨" + , "陸" + , "顧" + , "掉" + , "呀" + , "燈" + , "歲" + , "措" + , "束" + , "耐" + , "劇" + , "玉" + , "趙" + , "跳" + , "哥" + , "季" + , "課" + , "凱" + , "胡" + , "額" + , "款" + , "紹" + , "卷" + , "齊" + , "偉" + , "蒸" + , "殖" + , "永" + , "宗" + , "苗" + , "川" + , "爐" + , "岩" + , "弱" + , "零" + , "楊" + , "奏" + , "沿" + , "露" + , "桿" + , "探" + , "滑" + , "鎮" + , "飯" + , "濃" + , "航" + , "懷" + , "趕" + , "庫" + , "奪" + , "伊" + , "靈" + , "稅" + , "途" + , "滅" + , "賽" + , "歸" + , "召" + , "鼓" + , "播" + , "盤" + , "裁" + , "險" + , "康" + , "唯" + , "錄" + , "菌" + , "純" + , "借" + , "糖" + , "蓋" + , "橫" + , "符" + , "私" + , "努" + , "堂" + , "域" + , "槍" + , "潤" + , "幅" + , "哈" + , "竟" + , "熟" + , "蟲" + , "澤" + , "腦" + , "壤" + , "碳" + , "歐" + , "遍" + , "側" + , "寨" + , "敢" + , "徹" + , "慮" + , "斜" + , "薄" + , "庭" + , "納" + , "彈" + , "飼" + , "伸" + , "折" + , "麥" + , "濕" + , "暗" + , "荷" + , "瓦" + , "塞" + , "床" + , "築" + , "惡" + , "戶" + , "訪" + , "塔" + , "奇" + , "透" + , "梁" + , "刀" + , "旋" + , "跡" + , "卡" + , "氯" + , "遇" + , "份" + , "毒" + , "泥" + , "退" + , "洗" + , "擺" + , "灰" + , "彩" + , "賣" + , "耗" + , "夏" + , "擇" + , "忙" + , "銅" + , "獻" + , "硬" + , "予" + , "繁" + , "圈" + , "雪" + , "函" + , "亦" + , "抽" + , "篇" + , "陣" + , "陰" + , "丁" + , "尺" + , "追" + , "堆" + , "雄" + , "迎" + , "泛" + , "爸" + , "樓" + , "避" + , "謀" + , "噸" + , "野" + , "豬" + , "旗" + , "累" + , "偏" + , "典" + , "館" + , "索" + , "秦" + , "脂" + , "潮" + , "爺" + , "豆" + , "忽" + , "托" + , "驚" + , "塑" + , "遺" + , "愈" + , "朱" + , "替" + , "纖" + , "粗" + , "傾" + , "尚" + , "痛" + , "楚" + , "謝" + , "奮" + , "購" + , "磨" + , "君" + , "池" + , "旁" + , "碎" + , "骨" + , "監" + , "捕" + , "弟" + , "暴" + , "割" + , "貫" + , "殊" + , "釋" + , "詞" + , "亡" + , "壁" + , "頓" + , "寶" + , "午" + , "塵" + , "聞" + , "揭" + , "炮" + , "殘" + , "冬" + , "橋" + , "婦" + , "警" + , "綜" + , "招" + , "吳" + , "付" + , "浮" + , "遭" + , "徐" + , "您" + , "搖" + , "谷" + , "贊" + , "箱" + , "隔" + , "訂" + , "男" + , "吹" + , "園" + , "紛" + , "唐" + , "敗" + , "宋" + , "玻" + , "巨" + , "耕" + , "坦" + , "榮" + , "閉" + , "灣" + , "鍵" + , "凡" + , "駐" + , "鍋" + , "救" + , "恩" + , "剝" + , "凝" + , "鹼" + , "齒" + , "截" + , "煉" + , "麻" + , "紡" + , "禁" + , "廢" + , "盛" + , "版" + , "緩" + , "淨" + , "睛" + , "昌" + , "婚" + , "涉" + , "筒" + , "嘴" + , "插" + , "岸" + , "朗" + , "莊" + , "街" + , "藏" + , "姑" + , "貿" + , "腐" + , "奴" + , "啦" + , "慣" + , "乘" + , "夥" + , "恢" + , "勻" + , "紗" + , "扎" + , "辯" + , "耳" + , "彪" + , "臣" + , "億" + , "璃" + , "抵" + , "脈" + , "秀" + , "薩" + , "俄" + , "網" + , "舞" + , "店" + , "噴" + , "縱" + , "寸" + , "汗" + , "掛" + , "洪" + , "賀" + , "閃" + , "柬" + , "爆" + , "烯" + , "津" + , "稻" + , "牆" + , "軟" + , "勇" + , "像" + , "滾" + , "厘" + , "蒙" + , "芳" + , "肯" + , "坡" + , "柱" + , "盪" + , "腿" + , "儀" + , "旅" + , "尾" + , "軋" + , "冰" + , "貢" + , "登" + , "黎" + , "削" + , "鑽" + , "勒" + , "逃" + , "障" + , "氨" + , "郭" + , "峰" + , "幣" + , "港" + , "伏" + , "軌" + , "畝" + , "畢" + , "擦" + , "莫" + , "刺" + , "浪" + , "秘" + , "援" + , "株" + , "健" + , "售" + , "股" + , "島" + , "甘" + , "泡" + , "睡" + , "童" + , "鑄" + , "湯" + , "閥" + , "休" + , "匯" + , "舍" + , "牧" + , "繞" + , "炸" + , "哲" + , "磷" + , "績" + , "朋" + , "淡" + , "尖" + , "啟" + , "陷" + , "柴" + , "呈" + , "徒" + , "顏" + , "淚" + , "稍" + , "忘" + , "泵" + , "藍" + , "拖" + , "洞" + , "授" + , "鏡" + , "辛" + , "壯" + , "鋒" + , "貧" + , "虛" + , "彎" + , "摩" + , "泰" + , "幼" + , "廷" + , "尊" + , "窗" + , "綱" + , "弄" + , "隸" + , "疑" + , "氏" + , "宮" + , "姐" + , "震" + , "瑞" + , "怪" + , "尤" + , "琴" + , "循" + , "描" + , "膜" + , "違" + , "夾" + , "腰" + , "緣" + , "珠" + , "窮" + , "森" + , "枝" + , "竹" + , "溝" + , "催" + , "繩" + , "憶" + , "邦" + , "剩" + , "幸" + , "漿" + , "欄" + , "擁" + , "牙" + , "貯" + , "禮" + , "濾" + , "鈉" + , "紋" + , "罷" + , "拍" + , "咱" + , "喊" + , "袖" + , "埃" + , "勤" + , "罰" + , "焦" + , "潛" + , "伍" + , "墨" + , "欲" + , "縫" + , "姓" + , "刊" + , "飽" + , "仿" + , "獎" + , "鋁" + , "鬼" + , "麗" + , "跨" + , "默" + , "挖" + , "鏈" + , "掃" + , "喝" + , "袋" + , "炭" + , "污" + , "幕" + , "諸" + , "弧" + , "勵" + , "梅" + , "奶" + , "潔" + , "災" + , "舟" + , "鑑" + , "苯" + , "訟" + , "抱" + , "毀" + , "懂" + , "寒" + , "智" + , "埔" + , "寄" + , "屆" + , "躍" + , "渡" + , "挑" + , "丹" + , "艱" + , "貝" + , "碰" + , "拔" + , "爹" + , "戴" + , "碼" + , "夢" + , "芽" + , "熔" + , "赤" + , "漁" + , "哭" + , "敬" + , "顆" + , "奔" + , "鉛" + , "仲" + , "虎" + , "稀" + , "妹" + , "乏" + , "珍" + , "申" + , "桌" + , "遵" + , "允" + , "隆" + , "螺" + , "倉" + , "魏" + , "銳" + , "曉" + , "氮" + , "兼" + , "隱" + , "礙" + , "赫" + , "撥" + , "忠" + , "肅" + , "缸" + , "牽" + , "搶" + , "博" + , "巧" + , "殼" + , "兄" + , "杜" + , "訊" + , "誠" + , "碧" + , "祥" + , "柯" + , "頁" + , "巡" + , "矩" + , "悲" + , "灌" + , "齡" + , "倫" + , "票" + , "尋" + , "桂" + , "鋪" + , "聖" + , "恐" + , "恰" + , "鄭" + , "趣" + , "抬" + , "荒" + , "騰" + , "貼" + , "柔" + , "滴" + , "猛" + , "闊" + , "輛" + , "妻" + , "填" + , "撤" + , "儲" + , "簽" + , "鬧" + , "擾" + , "紫" + , "砂" + , "遞" + , "戲" + , "吊" + , "陶" + , "伐" + , "餵" + , "療" + , "瓶" + , "婆" + , "撫" + , "臂" + , "摸" + , "忍" + , "蝦" + , "蠟" + , "鄰" + , "胸" + , "鞏" + , "擠" + , "偶" + , "棄" + , "槽" + , "勁" + , "乳" + , "鄧" + , "吉" + , "仁" + , "爛" + , "磚" + , "租" + , "烏" + , "艦" + , "伴" + , "瓜" + , "淺" + , "丙" + , "暫" + , "燥" + , "橡" + , "柳" + , "迷" + , "暖" + , "牌" + , "秧" + , "膽" + , "詳" + , "簧" + , "踏" + , "瓷" + , "譜" + , "呆" + , "賓" + , "糊" + , "洛" + , "輝" + , "憤" + , "競" + , "隙" + , "怒" + , "粘" + , "乃" + , "緒" + , "肩" + , "籍" + , "敏" + , "塗" + , "熙" + , "皆" + , "偵" + , "懸" + , "掘" + , "享" + , "糾" + , "醒" + , "狂" + , "鎖" + , "淀" + , "恨" + , "牲" + , "霸" + , "爬" + , "賞" + , "逆" + , "玩" + , "陵" + , "祝" + , "秒" + , "浙" + , "貌" + , "役" + , "彼" + , "悉" + , "鴨" + , "趨" + , "鳳" + , "晨" + , "畜" + , "輩" + , "秩" + , "卵" + , "署" + , "梯" + , "炎" + , "灘" + , "棋" + , "驅" + , "篩" + , "峽" + , "冒" + , "啥" + , "壽" + , "譯" + , "浸" + , "泉" + , "帽" + , "遲" + , "矽" + , "疆" + , "貸" + , "漏" + , "稿" + , "冠" + , "嫩" + , "脅" + , "芯" + , "牢" + , "叛" + , "蝕" + , "奧" + , "鳴" + , "嶺" + , "羊" + , "憑" + , "串" + , "塘" + , "繪" + , "酵" + , "融" + , "盆" + , "錫" + , "廟" + , "籌" + , "凍" + , "輔" + , "攝" + , "襲" + , "筋" + , "拒" + , "僚" + , "旱" + , "鉀" + , "鳥" + , "漆" + , "沈" + , "眉" + , "疏" + , "添" + , "棒" + , "穗" + , "硝" + , "韓" + , "逼" + , "扭" + , "僑" + , "涼" + , "挺" + , "碗" + , "栽" + , "炒" + , "杯" + , "患" + , "餾" + , "勸" + , "豪" + , "遼" + , "勃" + , "鴻" + , "旦" + , "吏" + , "拜" + , "狗" + , "埋" + , "輥" + , "掩" + , "飲" + , "搬" + , "罵" + , "辭" + , "勾" + , "扣" + , "估" + , "蔣" + , "絨" + , "霧" + , "丈" + , "朵" + , "姆" + , "擬" + , "宇" + , "輯" + , "陝" + , "雕" + , "償" + , "蓄" + , "崇" + , "剪" + , "倡" + , "廳" + , "咬" + , "駛" + , "薯" + , "刷" + , "斥" + , "番" + , "賦" + , "奉" + , "佛" + , "澆" + , "漫" + , "曼" + , "扇" + , "鈣" + , "桃" + , "扶" + , "仔" + , "返" + , "俗" + , "虧" + , "腔" + , "鞋" + , "棱" + , "覆" + , "框" + , "悄" + , "叔" + , "撞" + , "騙" + , "勘" + , "旺" + , "沸" + , "孤" + , "吐" + , "孟" + , "渠" + , "屈" + , "疾" + , "妙" + , "惜" + , "仰" + , "狠" + , "脹" + , "諧" + , "拋" + , "黴" + , "桑" + , "崗" + , "嘛" + , "衰" + , "盜" + , "滲" + , "臟" + , "賴" + , "湧" + , "甜" + , "曹" + , "閱" + , "肌" + , "哩" + , "厲" + , "烴" + , "緯" + , "毅" + , "昨" + , "偽" + , "症" + , "煮" + , "嘆" + , "釘" + , "搭" + , "莖" + , "籠" + , "酷" + , "偷" + , "弓" + , "錐" + , "恆" + , "傑" + , "坑" + , "鼻" + , "翼" + , "綸" + , "敘" + , "獄" + , "逮" + , "罐" + , "絡" + , "棚" + , "抑" + , "膨" + , "蔬" + , "寺" + , "驟" + , "穆" + , "冶" + , "枯" + , "冊" + , "屍" + , "凸" + , "紳" + , "坯" + , "犧" + , "焰" + , "轟" + , "欣" + , "晉" + , "瘦" + , "禦" + , "錠" + , "錦" + , "喪" + , "旬" + , "鍛" + , "壟" + , "搜" + , "撲" + , "邀" + , "亭" + , "酯" + , "邁" + , "舒" + , "脆" + , "酶" + , "閒" + , "憂" + , "酚" + , "頑" + , "羽" + , "漲" + , "卸" + , "仗" + , "陪" + , "闢" + , "懲" + , "杭" + , "姚" + , "肚" + , "捉" + , "飄" + , "漂" + , "昆" + , "欺" + , "吾" + , "郎" + , "烷" + , "汁" + , "呵" + , "飾" + , "蕭" + , "雅" + , "郵" + , "遷" + , "燕" + , "撒" + , "姻" + , "赴" + , "宴" + , "煩" + , "債" + , "帳" + , "斑" + , "鈴" + , "旨" + , "醇" + , "董" + , "餅" + , "雛" + , "姿" + , "拌" + , "傅" + , "腹" + , "妥" + , "揉" + , "賢" + , "拆" + , "歪" + , "葡" + , "胺" + , "丟" + , "浩" + , "徽" + , "昂" + , "墊" + , "擋" + , "覽" + , "貪" + , "慰" + , "繳" + , "汪" + , "慌" + , "馮" + , "諾" + , "姜" + , "誼" + , "兇" + , "劣" + , "誣" + , "耀" + , "昏" + , "躺" + , "盈" + , "騎" + , "喬" + , "溪" + , "叢" + , "盧" + , "抹" + , "悶" + , "諮" + , "刮" + , "駕" + , "纜" + , "悟" + , "摘" + , "鉺" + , "擲" + , "頗" + , "幻" + , "柄" + , "惠" + , "慘" + , "佳" + , "仇" + , "臘" + , "窩" + , "滌" + , "劍" + , "瞧" + , "堡" + , "潑" + , "蔥" + , "罩" + , "霍" + , "撈" + , "胎" + , "蒼" + , "濱" + , "倆" + , "捅" + , "湘" + , "砍" + , "霞" + , "邵" + , "萄" + , "瘋" + , "淮" + , "遂" + , "熊" + , "糞" + , "烘" + , "宿" + , "檔" + , "戈" + , "駁" + , "嫂" + , "裕" + , "徙" + , "箭" + , "捐" + , "腸" + , "撐" + , "曬" + , "辨" + , "殿" + , "蓮" + , "攤" + , "攪" + , "醬" + , "屏" + , "疫" + , "哀" + , "蔡" + , "堵" + , "沫" + , "皺" + , "暢" + , "疊" + , "閣" + , "萊" + , "敲" + , "轄" + , "鉤" + , "痕" + , "壩" + , "巷" + , "餓" + , "禍" + , "丘" + , "玄" + , "溜" + , "曰" + , "邏" + , "彭" + , "嘗" + , "卿" + , "妨" + , "艇" + , "吞" + , "韋" + , "怨" + , "矮" + , "歇" + ] diff --git a/ppad-bip39.cabal b/ppad-bip39.cabal @@ -32,6 +32,7 @@ library , ppad-sha256 , ppad-sha512 , primitive + , text test-suite bip39-tests type: exitcode-stdio-1.0