General

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.

Links

react-native-keychain

See a few places in this file

oblador/react-native-keychain

oblador/react-native-keychain

Secure Enclave encryption

Encrypting for Apple's Secure Enclave

agens-no/EllipticCurveKeyPair