Create an interface in gomobile something like that
type Encryptor interface {
isSecureHardwareAvailable() bool,
generateKey() string // key alias
encrypt(keyAlias string, data []byte) []byte
decrypt(keyAlias string, data []byte) []byte
}
Then export something like Status#setEncryptor(e Encryptor) from status-go.
Then implement encryption in Java and Obj-C for Android and iOS respectively (see the links section).
To handle passwords, we can probably implement something like a separate implementation PasswordEncryptor, that you can create new PasswordEncryptor(password) and use in the setEncryptor APIs.
See a few places in this file