I was wondering about this, and it seems kind of case-specific. For the internal methods, we can just pass the inputs to the native layer, but what kind of policy should we set for externally-facing APIs? Is this enough?

* `null` signature: use `config.BuildSignature()`
* `null` message: empty message