You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: crypto.rs
    path of file: ./repos/holochain-rust/crates/core/src/wasm_engine/api
    
    the code of the file until where you have to start completion: use crate::wasm_engine::{api::ZomeApiResult, Runtime};
use holochain_json_api::json::*;
use holochain_wasm_utils::api_serialization::crypto::CryptoArgs;
use std::convert::TryFrom;
use wasmi::{RuntimeArgs, RuntimeValue};

/// ZomeApiFunction::Sign function code
/// args: [0] encoded MemoryAllocation as u64
/// Expected argument: u64
/// Returns an HcApiReturnCode as I64
#[holochain_tracing_macros::newrelic_autotrace(HOLOCHAIN_CORE)]
pub fn invoke_crypto(runtime: &mut Runtime, args: &RuntimeArgs) -> ZomeApiResult {
    let context = runtime.context()?;

    // deserialize args
    let args_str = runtime.load_json_string_from_args(&args);

    
pub fn invoke_crypto(runtime: &mut Runtime, args: &RuntimeArgs) -> ZomeApiResult {
    let context = runtime.context()?;

    // deserialize args
    let args_str = runtime.load_json_string_from_args(&args);

    let crypto_args = match CryptoArgs::try_from(args_str.clone()) {
        Ok(entry_input) => entry_input,
        // Exit on error
        Err(_) => {
            log_error!(
                context,
                "zome: invoke_crypto failed to deserialize SignArgs: {:?}",
                args_str
            );
            return ribosome_error_code!(ArgumentDeserializationFailed);
        }
    };

    let message = context
        .conductor_api
        .execute(crypto_args.payload.clone(), crypto_args.method.clone())
        .map(|sig| JsonString::from_json(&sig));

    log_debug!(
        context,
        "zome: crypto method {:?} of data:{:?} by:{:?} is:{:?}",
        crypto_args.method,
        crypto_args.payload,
        context.agent_id,
        message
    );

    runtime.store_result(message)
}