How to use Botan to verify a web3 wallet/password? The specification here seems quite clear, but unfortunately I'm still doing something wrong...
I have this (single small c++ file) repository which very straightforwardly follows the password/wallet verification process. However, the result of my cryptographic operations do not match with the wallet's mac key (the signal that the password is correct).
I have verified that thisisatestwallet.json (included in the repository) does open with the password thisisatestwallet, and the spec seems so simple there isn't much room for me to screw up. And yet...
If anyone could glance at that and tell me what I'm doing wrong, I'd appreciate it!
The output I'm currently getting is as follows:
pkey:           2F299FEF2CA3390C63DABA7A13BA4CE9D60B7FC1E58DAFD5E1089D32CFD7219C
ciphertext:                                                                     C6D18F78AF6E5E7CEA4AB804D8B9A5F974CCF92EA2537416B90ABEBD77C6B580
cipher input:                                   D60B7FC1E58DAFD5E1089D32CFD7219CC6D18F78AF6E5E7CEA4AB804D8B9A5F974CCF92EA2537416B90ABEBD77C6B580
keccak out:     7D31B612939A26418CAB1DF332D27B711CAACAA7A119013A01E1DB75DE508DAA
mac:            89655FD4BB9CCF9DE0D8F1A78025A8616C9416EC700CFAAFEF17E76C7C47338E
Ah, the misunderstanding was that the spec says SHA-3 (Keccak-256), which I had assumed was SHA-3-256, but is actually Keccak-1600(256), which is part of the SHA-3 standard. Fixed.