code: def mount(self, volume):
          
  
          volume._paths['bde'] = tempfile.mkdtemp(prefix='image_mounter_bde_')
  
          try:
              if volume.key:
                  t, v = volume.key.split(':', 1)
                  key = ['-' + t, v]
              else:
                  logger.warning("No key material provided for %s", volume)
                  key = []
          except ValueError:
              logger.exception("Invalid key material provided (%s) for %s. Expecting [arg]:[value]", volume.key, volume)
              raise ArgumentError()
  
          # noinspection PyBroadException
          try:
              cmd = ["bdemount", volume.get_raw_path(), volume._paths['bde'], '-o', str(volume.offset)]
              cmd.extend(key)
              _util.check_call_(cmd)
          except Exception as e:
              del volume._paths['bde']
              logger.exception("Failed mounting BDE volume %s.", volume)
              raise SubsystemError(e)
  
          container = volume.volumes._make_single_subvolume(flag='alloc', offset=0, size=volume.size)
          container.info['fsdescription'] = 'BDE Volume'
  
          return container
docs: Mounts a BDE container. Uses key material provided by the :attr:`keys` attribute. The key material should be
          provided in the same format as to :cmd:`bdemount`, used as follows:
  
          k:full volume encryption and tweak key
          p:passphrase
          r:recovery password
          s:file to startup key (.bek)
  
          :return: the Volume contained in the BDE container
          :raises ArgumentError: if the keys argument is invalid
          :raises SubsystemError: when the underlying command fails