code: def gpg_profile_get_key( blockchain_id, keyname, key_id=None, proxy=None, wallet_keys=None, config_dir=None, gpghome=None ):
      
      
      assert is_valid_keyname( keyname )
      if config_dir is None:
          config_dir = get_config_dir()
  
      if gpghome is None:
          gpghome = get_default_gpg_home()
  
      accounts = blockstack_client.list_accounts( blockchain_id, proxy=proxy )
      if 'error' in accounts:
          return accounts
  
      accounts = accounts.pop('accounts')
  
      if len(accounts) == 0:
          return {'error': 'No accounts in this profile'}
  
      all_gpg_accounts = filter( lambda a: a['service'] == 'pgp', accounts )
      if len(all_gpg_accounts) == 0:
          return {'error': 'No GPG accounts in this profile'}
      
      # find the one with this key name 
      gpg_accounts = filter( lambda ga: (ga.has_key('keyName') and ga['keyName'] == keyname) or (key_id is not None and ga['identifier'] == key_id), all_gpg_accounts )
      if len(gpg_accounts) == 0:
          return {'error': 'No such GPG key found'}
  
      if len(gpg_accounts) > 1:
          return {'error': 'Multiple keys with that name'}
  
      key_url = gpg_accounts[0].get('contentUrl', DEFAULT_KEY_SERVER)
  
      # go get the key 
      key_data = gpg_fetch_key( key_url, key_id=gpg_accounts[0]['identifier'], config_dir=config_dir )
      if key_data is None:
          return {'error': 'Failed to download and verify key'}
  
      ret = {
          'status': True,
          'key_id': gpg_accounts[0]['identifier'],
          'key_data': key_data
      }
  
      return ret
docs: Get the profile key
      Return {'status': True, 'key_data': ..., 'key_id': ...} on success
      Return {'error': ...} on error