gboolean gkd_ssh_agent_proto_write_public (EggBuffer *resp, GckAttributes *attrs) { gboolean ret = FALSE; const gchar *salgo; gulong algo; g_assert (resp); g_assert (attrs); if (!gck_attributes_find_ulong (attrs, CKA_KEY_TYPE, &algo)) g_return_val_if_reached (FALSE); salgo = gkd_ssh_agent_proto_algo_to_keytype (algo); g_assert (salgo); egg_buffer_add_string (resp, salgo); switch (algo) { case CKK_RSA: ret = gkd_ssh_agent_proto_write_public_rsa (resp, attrs); break; case CKK_DSA: ret = gkd_ssh_agent_proto_write_public_dsa (resp, attrs); break; default: g_return_val_if_reached (FALSE); break; } return ret; }
static gboolean buffer_add_utf8_string (EggBuffer *buffer, const char *str) { if (str && !g_utf8_validate (str, -1, NULL)) return FALSE; return egg_buffer_add_string (buffer, str); }
int gkm_rpc_message_write_zero_string (GkmRpcMessage *msg, CK_UTF8CHAR* string) { assert (msg); assert (string); assert (!msg->signature || gkm_rpc_message_verify_part (msg, "z")); return egg_buffer_add_string (&msg->buffer, (const char*)string); }