I don't necessarily disagree but one issue with your approach, for example, is that it's not possible to pass in an empty passphrase - an empty string is falsey and so gets replaced with null.