To create a binary seed from the mnemonic, we use the PBKDF2 function with a
mnemonic sentence (in UTF-8 NFKD) used as the password and the string "mnemonic"
+ passphrase (again in UTF-8 NFKD) used as the salt.
Implementation from
BitcoinJ implementation
A SecureRandom implementation that is able to override the standard JVM provided
implementation, and which simply serves random numbers by reading /dev/urandom.
Given the components of a signature and a selector value, recover and return the public
key that generated the signature according to the algorithm in SEC1v2 section 4.1.6.