async def create_local_did(self, seed: str = None, loc_did: str = None, metadata: dict = None) -> DIDInfo:
        """
        Create and store a new local DID for use in pairwise DID relations.

        :param seed: seed from which to create (default random)
        :param loc_did: local DID value (default None to let indy-sdk generate)
        :param metadata: metadata to associate with the local DID
            (operation always sets 'since', 'modified' epoch timestamps)
        :return: DIDInfo for new local DID
        """

        LOGGER.debug('Wallet.create_local_did >>> seed: [SEED] loc_did: %s metadata: %s', loc_did, metadata)

        cfg = {}
        if seed:
            cfg['seed'] = seed
        if loc_did:
            cfg['did'] = loc_did

        if not self.handle:
            LOGGER.debug('Wallet.create_local_did <!< Wallet %s is closed', self.name)
            raise WalletState('Wallet {} is closed'.format(self.name))

        try:
            (created_did, verkey) = await did.create_and_store_my_did(self.handle, json.dumps(cfg))
        except IndyError as x_indy:
            if x_indy.error_code == ErrorCode.DidAlreadyExistsError:
                LOGGER.debug('Wallet.create_local_did <!< DID %s already present in wallet %s', loc_did, self.name)
                raise ExtantRecord('Local DID {} already present in wallet {}'.format(loc_did, self.name))
            LOGGER.debug('Wallet.create_local_did <!< indy-sdk raised error %s', x_indy.error_code)
            raise

        now = int(time())
        loc_did_metadata = {**(metadata or {}), 'since': now, 'modified': now}
        await did.set_did_metadata(self.handle, created_did, json.dumps(loc_did_metadata))

        rv = DIDInfo(created_did, verkey, loc_did_metadata)

        LOGGER.debug('Wallet.create_local_did <<< %s', rv)
        return rv
async def create_local_did ( self , seed : str = None , loc_did : str = None , metadata : dict = None ) -> DIDInfo : LOGGER . debug ( 'Wallet.create_local_did >>> seed: [SEED] loc_did: %s metadata: %s' , loc_did , metadata ) cfg = { } if seed : cfg [ 'seed' ] = seed if loc_did : cfg [ 'did' ] = loc_did if not self . handle : LOGGER . debug ( 'Wallet.create_local_did <!< Wallet %s is closed' , self . name ) raise WalletState ( 'Wallet {} is closed' . format ( self . name ) ) try : ( created_did , verkey ) = await did . create_and_store_my_did ( self . handle , json . dumps ( cfg ) ) except IndyError as x_indy : if x_indy . error_code == ErrorCode . DidAlreadyExistsError : LOGGER . debug ( 'Wallet.create_local_did <!< DID %s already present in wallet %s' , loc_did , self . name ) raise ExtantRecord ( 'Local DID {} already present in wallet {}' . format ( loc_did , self . name ) ) LOGGER . debug ( 'Wallet.create_local_did <!< indy-sdk raised error %s' , x_indy . error_code ) raise now = int ( time ( ) ) loc_did_metadata = { ** ( metadata or { } ) , 'since' : now , 'modified' : now } await did . set_did_metadata ( self . handle , created_did , json . dumps ( loc_did_metadata ) ) rv = DIDInfo ( created_did , verkey , loc_did_metadata ) LOGGER . debug ( 'Wallet.create_local_did <<< %s' , rv ) return rv
Create and store a new local DID for use in pairwise DID relations.

        :param seed: seed from which to create (default random)
        :param loc_did: local DID value (default None to let indy-sdk generate)
        :param metadata: metadata to associate with the local DID
            (operation always sets 'since', 'modified' epoch timestamps)
        :return: DIDInfo for new local DID