Decrypts a message by anonymous-encryption scheme.

    Sealed boxes are designed to anonymously send messages to a Recipient given its public key.
    Only the Recipient can decrypt these messages, using its private key.
    While the Recipient can verify the integrity of the message, it cannot verify the identity of the Sender.

    Note to use DID keys with this function you can call key_for_did to get key id (verkey)
    for specific DID.

    Note: use unpack_message function for A2A goals.

    :param wallet_handle: wallet handler (created by open_wallet).
    :param recipient_vk: id (verkey) of my key. The key must be created by calling indy_create_key or create_and_store_my_did
    :param encrypted_msg: encrypted message
    :return: decrypted message as an array of bytes

async def anon_decrypt(wallet_handle: int,
                       recipient_vk: str,
                       encrypted_msg: bytes) -> bytes:
    """
    Decrypts a message by anonymous-encryption scheme.

    Sealed boxes are designed to anonymously send messages to a Recipient given its public key.
    Only the Recipient can decrypt these messages, using its private key.
    While the Recipient can verify the integrity of the message, it cannot verify the identity of the Sender.

    Note to use DID keys with this function you can call key_for_did to get key id (verkey)
    for specific DID.

    Note: use unpack_message function for A2A goals.

    :param wallet_handle: wallet handler (created by open_wallet).
    :param recipient_vk: id (verkey) of my key. The key must be created by calling indy_create_key or create_and_store_my_did
    :param encrypted_msg: encrypted message
    :return: decrypted message as an array of bytes
    """

    logger = logging.getLogger(__name__)
    logger.debug("anon_decrypt: >>> wallet_handle: %r, recipient_vk: %r, encrypted_msg: %r",
                 wallet_handle,
                 recipient_vk,
                 encrypted_msg)

    def transform_cb(arr_ptr: POINTER(c_uint8), arr_len: c_uint32):
        return bytes(arr_ptr[:arr_len]),

    if not hasattr(anon_decrypt, "cb"):
        logger.debug("anon_decrypt: Creating callback")
        anon_decrypt.cb = create_cb(CFUNCTYPE(None, c_int32, c_int32, POINTER(c_uint8), c_uint32), transform_cb)

    c_wallet_handle = c_int32(wallet_handle)
    c_recipient_vk = c_char_p(recipient_vk.encode('utf-8'))
    c_encrypted_msg_len = c_uint32(len(encrypted_msg))
    decrypted_message = await do_call('indy_crypto_anon_decrypt',
                                      c_wallet_handle,
                                      c_recipient_vk,
                                      encrypted_msg,
                                      c_encrypted_msg_len,
                                      anon_decrypt.cb)

    logger.debug("crypto_box_seal_open: <<< res: %r", decrypted_message)
    return decrypted_message