commit 456198f: [Rules] More fixes for bitcoin cash addresses decoding
Vsevolod Stakhov
vsevolod at highsecure.ru
Sun Jun 21 19:56:13 UTC 2020
Author: Vsevolod Stakhov
Date: 2020-06-21 20:30:54 +0100
URL: https://github.com/rspamd/rspamd/commit/456198fdac726db604d2bbab85a0668b5c9dfa83
[Rules] More fixes for bitcoin cash addresses decoding
---
rules/bitcoin.lua | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/rules/bitcoin.lua b/rules/bitcoin.lua
index b7f9f1dbc..4331d8382 100644
--- a/rules/bitcoin.lua
+++ b/rules/bitcoin.lua
@@ -145,7 +145,13 @@ local function is_segwit_bech32_address(word)
if decoded then
local bytes = decoded:bytes()
- if bytes[1] == 0 then
+ -- The version byte’s most signficant bit is reserved and must be 0.
+ -- The 4 next bits indicate the type of address and the 3 least significant bits indicate the size of the hash.
+ local version = bit.band(bytes[1], 128)
+ local addr_type = bit.rshift(bit.band(bytes[1], 120), 3)
+ local _ = bit.band(bytes[1], 7) -- hash size
+
+ if version == 0 and (addr_type == 0 or addr_type == 8)then
-- TODO: Add checksum validation some day
return true
More information about the Commits
mailing list