Ada in Infinito

I have no idea what to test further, unfortunately.

Up in Ada in Infinito - #3 by Alexd1985, they claim that they use a standard derivation, but I couldn’t reconstruct that (and had at the same time no problem in reconstructing what Yoroi, using the same method as far as I can see, does).

Shelley wallets of Infinito are no problem at all. They can just be imported in Eternl. They clearly follow a standard there.

For Byron, it’s a big mystery.

The private keys probably won’t help. They seem to be encrypted in some unspecified way. Even the thing they show as Shelley private key had nothing to do with the clear text private keys appearing in the derivation (although the address in the end is the same one).

Maybe someone else has another idea?

For the record, what I tried, so that we don’t do double work:

I imported the trivial seed phrase abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about into Infinito. The Byron address then is Ae2tdPwUPEZAuwy3Wj5gtUoqHgXJ3egZMEG7b6kJuTDHnSphr8jhCtCQ4hv and the Shelley address addr1qy8ac7qqy0vtulyl7wntmsxc6wex80gvcyjy33qffrhm7sh927ysx5sftuw0dlft05dz3c7revpf7jx0xnlcjz3g69mq4afdhv.

With cardano-address (https://github.com/input-output-hk/cardano-addresses), I can derive keys resulting in the Shelley address with no problem.

If they did the V2 HD wallet stuff like they claimed, it should be Icarus master key derivation and a derivation path of m/44'/1815'/0'/0/0, but that isn’t it, that would be Ae2tdPwUPEZKcVUy5JAhPjdXa6PuWMnHDgjWdK4ZyGK33L8YWjBv2saUwaa for that trivial example seed phrase. I also tried likely errors (switching hardened and un-hardened, accounts 1H and 2H, chain 1, addresses 1 and 2, and all combinations of those.

FWIW, the script with all I tried:

#!/bin/sh
SEEDPHRASE="abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about"

SHELLEY_SEARCH="addr1qy8ac7qqy0vtulyl7wntmsxc6wex80gvcyjy33qffrhm7sh927ysx5sftuw0dlft05dz3c7revpf7jx0xnlcjz3g69mq4afdhv"
account_xsk=$(echo "${SEEDPHRASE}" \
    | cardano-address key from-recovery-phrase Shelley \
    | cardano-address key child 1852H/1815H/0H)
stake_xvk=$(echo "${account_xsk}" \
    | cardano-address key child 2/0 \
    | cardano-address key public --with-chain-code)
address=$(echo "${account_xsk}" \
    | cardano-address key child 0/0 \
    | cardano-address key public --with-chain-code \
    | cardano-address address payment --network-tag mainnet \
    | cardano-address address delegation ${stake_xvk})
if [ "${address}" = "${SHELLEY_SEARCH}" ]
then
    echo "Found ${address}:"
    echo "    Master derivation: Shelley"
    echo "    Payment derivation: 1852H/1815H/0H/0/0"
    echo "    Stake derivation: 1852H/1815H/0H/2/0"
fi

BYRON_SEARCH="Ae2tdPwUPEZKcVUy5JAhPjdXa6PuWMnHDgjWdK4ZyGK33L8YWjBv2saUwaa Ae2tdPwUPEZAuwy3Wj5gtUoqHgXJ3egZMEG7b6kJuTDHnSphr8jhCtCQ4hv"
function check() {
    address=$(echo "${SEEDPHRASE}" \
        | cardano-address key from-recovery-phrase $1 \
        | cardano-address key child $2 \
        | cardano-address key public --with-chain-code \
        | cardano-address address bootstrap --network-tag mainnet)
    for search in ${BYRON_SEARCH}
    do
        if [ "${address}" = "${search}" ]
        then
            echo "Found ${address}:"
            echo "    Master derivation: $1"
            echo "    Derivation path: $2"
        fi
    done
}
for master in Icarus Byron
do
    for account in 0H 1H 2H 0 1 2
    do
        for address in 0H 1H 2H 0 1 2
        do
            check ${master} ${account}/${address}
        done
    done
    for purpose in 44H 1852H 0H 44 1852 0
    do
        for coin in 1815H 44H 0H 1815 44 0
        do
            for account in 0H 1H 2H 0 1 2
            do
                for chain in 0 1 0H 1H
                do
                    for address in 0 1 2 0H 1H 2H
                    do
                        check ${master} ${purpose}/${coin}/${account}/${chain}/${address}
                    done
                done
            done
        done
    done
done