Example #1
0
static GcrDataFormat
parse_openpgp_packet (const guchar *beg,
                      const guchar *at,
                      const guchar *end,
                      guint8 pkt_type,
                      GcrOpenpgpParseFlags flags,
                      GPtrArray *records)
{
	gboolean ret;

	switch (pkt_type) {
	case OPENPGP_PKT_PUBLIC_KEY:
		ret = parse_public_key_or_subkey (GCR_RECORD_SCHEMA_PUB, GCR_RECORD_PUB_MAX,
		                                  beg, &at, end, flags, records);
		break;
	case OPENPGP_PKT_PUBLIC_SUBKEY:
		ret = parse_public_key_or_subkey (GCR_RECORD_SCHEMA_SUB, GCR_RECORD_PUB_MAX,
		                                  beg, &at, end, flags, records);
		break;
	case OPENPGP_PKT_USER_ID:
		ret = parse_user_id (beg, &at, end, flags, records);
		break;
	case OPENPGP_PKT_ATTRIBUTE:
		ret = parse_user_attribute (beg, &at, end, flags, records);
		break;
	case OPENPGP_PKT_SIGNATURE:
		ret = parse_signature (beg, &at, end, flags, records);
		break;
	case OPENPGP_PKT_SECRET_KEY:
		ret = parse_secret_key_or_subkey (GCR_RECORD_SCHEMA_SEC,
		                                  beg, &at, end, flags, records);
		break;
	case OPENPGP_PKT_SECRET_SUBKEY:
		ret = parse_secret_key_or_subkey (GCR_RECORD_SCHEMA_SSB,
		                                  beg, &at, end, flags, records);
		break;

	/* Stuff we don't want to be meddling with right now */
	case OPENPGP_PKT_RING_TRUST:
		return GCR_SUCCESS;

	/* Ignore packets we don't understand */
	default:
		return GCR_SUCCESS;
	}

	/* Key packet had extra data */
	if (ret == TRUE && at != end)
		ret = FALSE;

	return ret ? GCR_SUCCESS : GCR_ERROR_FAILURE;
}
Example #2
0
SeahorsePgpUid*
seahorse_pgp_uid_new (const gchar *uid_string)
{
	SeahorsePgpUid *uid;
	gchar *name = NULL;
	gchar *email = NULL;
	gchar *comment = NULL;
	
	if (uid_string)
		parse_user_id (uid_string, &name, &email, &comment);
	
	uid = g_object_new (SEAHORSE_TYPE_PGP_UID, "name", name, "email", email, "comment", comment, NULL);
	
	g_free (name);
	g_free (comment);
	g_free (email);
	
	return uid;
}