<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def register_storage_library(storage_type: str, c_library: str, entry_point: str) -> None: """ Load a wallet storage plug-in. An indy-sdk wallet storage plug-in is a shared library; relying parties must explicitly load it before creating or opening a wallet with the plug-in. The implementation loads a dynamic library and calls an entry point; internally, the plug-in calls the indy-sdk wallet async def register_wallet_storage_library(storage_type: str, c_library: str, fn_pfx: str). :param storage_type: wallet storage type :param c_library: plug-in library :param entry_point: function to initialize the library """


        LOGGER.debug(
            'WalletManager.register_storage_library >>> storage_type %s, c_library %s, entry_point %s',
            storage_type,
            c_library,
            entry_point)

        try:
            stg_lib = CDLL(c_library)
            result = stg_lib[entry_point]()
            if result:
                LOGGER.debug(
                    'WalletManager.register_storage_library <!< indy error code %s on storage library entry at %s',
                    result,
                    entry_point)
                raise IndyError(result)
            LOGGER.info('Loaded storage library type %s (%s)', storage_type, c_library)
        except IndyError as x_indy:
            LOGGER.debug(
                'WalletManager.register_storage_library <!< indy error code %s on load of storage library %s %s',
                x_indy.error_code,
                storage_type,
                c_library)
            raise

        LOGGER.debug('WalletManager.register_storage_library <<<')