createKey
Creates key id for a storage key rotation and returns it once it is persisted and read back. If the provider already has key id, returns that key unchanged: a key is never overwritten or replaced, so a repeated or concurrent call yields the same key. Other keys are not touched. Throws StorageEncryptionException.KeyUnavailable if the provider holds no key yet (rotation needs provisioned storage) or its state cannot be read; nothing is changed then.