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; }
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; }