I think everyone has misunderstood what is being done.
...This value (SHA256 hash) is the encryption key.
The encryption key is used to encrypt both contacts.json and wallet.dat files with AES-256-CTR algorithm.
The name and password are used to
encrypt the wallet data. Nothing is said about how the private keys are generated.
Exactly... It's actually a pretty good defense...
If i follow the logic, the encryption key of the wallet file is sha256(salt2.sha256(salt1.password).nickname).
It'll become virtually impossible for an attacker to use a rainbow table using this scheme, and the resulting 256 bit encryption key they use with AES-256-CTR is pretty good if i'm not mistaking