Пример #1
0
char *oauth_api_token(shd_t *api_cli, shmap_t *sess)
{
  static char ret_buf[MAX_SHARE_HASH_LENGTH];
  char *token;
  char *login;
  int err;

  token = shmap_get_str(sess, ashkey_str("access_token"));
  if (!token) {
    shkey_t *cli_k = shkey_gen(oauth_sess_token(sess));
    shkey_t *serv_k = oauth_sess_id(api_cli);
    shkey_t *key;

    key = shkey_xor(cli_k, serv_k);
    shkey_free(&cli_k);
    shkey_free(&serv_k);

    token = shkey_print(key);
    shmap_set_astr(sess, "access_token", token);
    shkey_free(&key);
  }

  memset(ret_buf, 0, sizeof(ret_buf));
  strncpy(ret_buf, token, sizeof(ret_buf)-1);

  return (ret_buf);
}
Пример #2
0
static int _lfunc_sexe_shdecode(lua_State *L)
{
  const char *enc_str = luaL_checkstring(L, 1);
  const char *key_str = luaL_checkstring(L, 2);
  shkey_t *key;
  size_t data_len;
  char *data;
  int err;

  if (!enc_str)
    enc_str = "";

  key = shkey_gen(key_str);  
  err = shdecode(enc_str, strlen(enc_str), &data, &data_len, key);
  shkey_free(&key);
  if (err) {
    lua_pushnil(L);
    return (1); /* (1) nil */
  }

  lua_pushstring(L, data);
  free(data);
  return (1); /* (1) encoded string */ 
}