Blame gcr/test-openpgp.c

Packit Service f02b19
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
Packit Service f02b19
/*
Packit Service f02b19
   Copyright (C) 2011 Collabora Ltd
Packit Service f02b19
Packit Service f02b19
   The Gnome Keyring Library is free software; you can redistribute it and/or
Packit Service f02b19
   modify it under the terms of the GNU Library General Public License as
Packit Service f02b19
   published by the Free Software Foundation; either version 2 of the
Packit Service f02b19
   License, or (at your option) any later version.
Packit Service f02b19
Packit Service f02b19
   The Gnome Keyring Library is distributed in the hope that it will be useful,
Packit Service f02b19
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service f02b19
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service f02b19
   Library General Public License for more details.
Packit Service f02b19
Packit Service f02b19
   You should have received a copy of the GNU Library General Public
Packit Service f02b19
   License along with the Gnome Library; see the file COPYING.LIB.  If not,
Packit Service f02b19
   see <http://www.gnu.org/licenses/>.
Packit Service f02b19
Packit Service f02b19
   Author: Stef Walter <stefw@collabora.co.uk>
Packit Service f02b19
*/
Packit Service f02b19
Packit Service f02b19
#include "config.h"
Packit Service f02b19
Packit Service f02b19
#include "gcr/gcr-base.h"
Packit Service f02b19
#include "gcr/gcr-openpgp.h"
Packit Service f02b19
#include "gcr/gcr-record.h"
Packit Service f02b19
Packit Service f02b19
#include "egg/egg-armor.h"
Packit Service f02b19
#include "egg/egg-testing.h"
Packit Service f02b19
Packit Service f02b19
#include <gcrypt.h>
Packit Service f02b19
#include <glib.h>
Packit Service f02b19
#include <string.h>
Packit Service f02b19
Packit Service f02b19
typedef struct {
Packit Service f02b19
	const gchar *name;
Packit Service f02b19
	const gchar **records;
Packit Service f02b19
	const gchar *filename;
Packit Service f02b19
	const gchar *version;
Packit Service f02b19
	GcrOpenpgpParseFlags flags;
Packit Service f02b19
} Fixture;
Packit Service f02b19
Packit Service f02b19
static const gchar *werner_koch_records[] = {
Packit Service f02b19
	"pub:e:1024:17:68B7AB8957548DCD:899816990:1136043547::o:::sca:\n"
Packit Service f02b19
	"fpr:::::::::6BD9050FD8FC941B43412DCC68B7AB8957548DCD:\n"
Packit Service f02b19
	"uid:e::::1102866526::B712A25DC2ABEF1579696C2925859931078C2C3E::Werner Koch (gnupg sig) <dd9jn@gnu.org>:\n",
Packit Service f02b19
Packit Service f02b19
	"pub:e:1024:17:5DE249965B0358A2:921520361:1247335656::o:::sc:\n"
Packit Service f02b19
	"fpr:::::::::A4D94E92B0986AB5EE9DCD755DE249965B0358A2:\n"
Packit Service f02b19
	"uid:e::::1113145458::F5B5738FAFB7543A01BAB31A6D767FBC789FF8A8::Werner Koch <wk@gnupg.org>:\n"
Packit Service f02b19
	"uid:e::::1113145466::60095F7DAD08129CCE39E15BEB6BBE21937E3AA6::Werner Koch <wk@g10code.com>:\n"
Packit Service f02b19
	"uid:e::::921520362::392B892CF897AD0F03EB26343C4C20A48B36513E::Werner Koch:\n"
Packit Service f02b19
	"uid:e::::1113145466::3E000C0F7D13A3C57C633C16ABDC97F12EAF16C1::Werner Koch <werner@fsfe.org>:\n"
Packit Service f02b19
	"sub:e:1024:17:60784E94010A57ED:1079892559:1199124559:::::s:\n"
Packit Service f02b19
	"sub:e:2048:1:7299C628B604F148:1079892777:1136052777:::::e:\n"
Packit Service f02b19
	"sub:e:2048:1:35E52D69C3680A6E:1136137762:1199123362:::::e:\n",
Packit Service f02b19
Packit Service f02b19
	"pub:e:1024:1:53B620D01CE0C630:1136130759:1230738759::o:::sc:\n"
Packit Service f02b19
	"fpr:::::::::7B96D396E6471601754BE4DB53B620D01CE0C630:\n"
Packit Service f02b19
	"uid:e::::1136130760::142B958D9816ECF810DBB83BD257E5C7DB36C99A::Werner Koch (dist sig) <dd9jn@gnu.org>:\n",
Packit Service f02b19
Packit Service f02b19
	NULL
Packit Service f02b19
};
Packit Service f02b19
Packit Service f02b19
static const gchar *werner_sig_records[] = {
Packit Service f02b19
	"pub:e:1024:17:68B7AB8957548DCD:899816990:1136043547::o:::sca:\n"
Packit Service f02b19
	"fpr:::::::::6BD9050FD8FC941B43412DCC68B7AB8957548DCD:\n"
Packit Service f02b19
	"uid:e::::1102866526::B712A25DC2ABEF1579696C2925859931078C2C3E::Werner Koch (gnupg sig) <dd9jn@gnu.org>:\n"
Packit Service f02b19
	"sig:::17:68B7AB8957548DCD:1102866526:::::13x:\n",
Packit Service f02b19
Packit Service f02b19
	"pub:e:1024:17:5DE249965B0358A2:921520361:1247335656::o:::sc:\n"
Packit Service f02b19
	"fpr:::::::::A4D94E92B0986AB5EE9DCD755DE249965B0358A2:\n"
Packit Service f02b19
	"uid:e::::1113145458::F5B5738FAFB7543A01BAB31A6D767FBC789FF8A8::Werner Koch <wk@gnupg.org>:\n"
Packit Service f02b19
	"sig:::17:5DE249965B0358A2:1113145458:::::13x:\n"
Packit Service f02b19
	"uid:e::::1113145466::60095F7DAD08129CCE39E15BEB6BBE21937E3AA6::Werner Koch <wk@g10code.com>:\n"
Packit Service f02b19
	"sig:::17:5DE249965B0358A2:1113145466:::::13x:\n"
Packit Service f02b19
	"uid:e::::921520362::392B892CF897AD0F03EB26343C4C20A48B36513E::Werner Koch:\n"
Packit Service f02b19
	"sig:::17:5DE249965B0358A2:921520362:::::13x:\n"
Packit Service f02b19
	"uid:e::::1113145466::3E000C0F7D13A3C57C633C16ABDC97F12EAF16C1::Werner Koch <werner@fsfe.org>:\n"
Packit Service f02b19
	"sig:::17:5DE249965B0358A2:1113145466:::::13x:\n"
Packit Service f02b19
	"sub:e:1024:17:60784E94010A57ED:1079892559:1199124559:::::s:\n"
Packit Service f02b19
	"sig:::17:5DE249965B0358A2:1148562461:::::18x:\n"
Packit Service f02b19
	"sub:e:2048:1:7299C628B604F148:1079892777:1136052777:::::e:\n"
Packit Service f02b19
	"sig:::17:5DE249965B0358A2:1079892777:::::18x:\n"
Packit Service f02b19
	"sub:e:2048:1:35E52D69C3680A6E:1136137762:1199123362:::::e:\n"
Packit Service f02b19
	"sig:::17:5DE249965B0358A2:1136137762:::::18x:\n",
Packit Service f02b19
Packit Service f02b19
	"pub:e:1024:1:53B620D01CE0C630:1136130759:1230738759::o:::sc:\n"
Packit Service f02b19
	"fpr:::::::::7B96D396E6471601754BE4DB53B620D01CE0C630:\n"
Packit Service f02b19
	"uid:e::::1136130760::142B958D9816ECF810DBB83BD257E5C7DB36C99A::Werner Koch (dist sig) <dd9jn@gnu.org>:\n"
Packit Service f02b19
	"sig:::1:53B620D01CE0C630:1136130760:::::13x:\n",
Packit Service f02b19
Packit Service f02b19
	NULL
Packit Service f02b19
};
Packit Service f02b19
Packit Service f02b19
static const gchar *pubring_records[] = {
Packit Service f02b19
	"pub:o:2048:1:4842D952AFC000FD:1305189489:::o:::scSCE:\n"
Packit Service f02b19
	"fpr:::::::::61A6EA3E0115080227A32EC94842D952AFC000FD:\n"
Packit Service f02b19
	"uid:o::::1305189489::D449F1605254754B0BBFA424FC34E50609103BBB::Test Number 1 (unlimited) <test-number-1@example.com>:\n"
Packit Service f02b19
	"uid:o::::1305189849::D0A8FA7B15DC4BE3F8F03A49C372F2718C78AFC0::Dr. Strangelove <lovingbomb@example.com>:\n"
Packit Service f02b19
	"sub:o:2048:1:4852132BBED15014:1305189489::::::e:\n",
Packit Service f02b19
Packit Service f02b19
	"pub:e:1024:1:268FEE686262C395:1305189628:1305276028::o:::sc:\n"
Packit Service f02b19
	"fpr:::::::::A4853C22EA82C8ADC6692751268FEE686262C395:\n"
Packit Service f02b19
	"uid:e::::1305189628::2E9D48BD771DA765D2B48A0233D0E8F393F6E839::Test Number 2 (all gone) <test-number-2@example.com>:\n"
Packit Service f02b19
	"sub:e:1024:1:C5877FABF4772E4F:1305189628:1305276028:::::e:\n",
Packit Service f02b19
Packit Service f02b19
	"pub:e:1024:17:68B7AB8957548DCD:899816990:1136043547::o:::sca:\n"
Packit Service f02b19
	"fpr:::::::::6BD9050FD8FC941B43412DCC68B7AB8957548DCD:\n"
Packit Service f02b19
	"uid:e::::1102866526::B712A25DC2ABEF1579696C2925859931078C2C3E::Werner Koch (gnupg sig) <dd9jn@gnu.org>:\n",
Packit Service f02b19
Packit Service f02b19
	"pub:e:1024:17:5DE249965B0358A2:921520361:1247335656::o:::sc:\n"
Packit Service f02b19
	"fpr:::::::::A4D94E92B0986AB5EE9DCD755DE249965B0358A2:\n"
Packit Service f02b19
	"uid:e::::1113145458::F5B5738FAFB7543A01BAB31A6D767FBC789FF8A8::Werner Koch <wk@gnupg.org>:\n"
Packit Service f02b19
	"uid:e::::1113145466::60095F7DAD08129CCE39E15BEB6BBE21937E3AA6::Werner Koch <wk@g10code.com>:\n"
Packit Service f02b19
	"uid:e::::921520362::392B892CF897AD0F03EB26343C4C20A48B36513E::Werner Koch:\n"
Packit Service f02b19
	"uid:e::::1113145466::3E000C0F7D13A3C57C633C16ABDC97F12EAF16C1::Werner Koch <werner@fsfe.org>:\n"
Packit Service f02b19
	"sub:e:1024:17:60784E94010A57ED:1079892559:1199124559:::::s:\n"
Packit Service f02b19
	"sub:e:2048:1:7299C628B604F148:1079892777:1136052777:::::e:\n"
Packit Service f02b19
	"sub:e:2048:1:35E52D69C3680A6E:1136137762:1199123362:::::e:\n",
Packit Service f02b19
Packit Service f02b19
	"pub:o:1024:17:C7463639B2D7795E:978642983:::o:::scSCE:\n"
Packit Service f02b19
	"fpr:::::::::055FC78F112193492C4F37AFC7463639B2D7795E:\n"
Packit Service f02b19
	"rvk:o::17::::::3FC732041D23E9EA66DDB5009C9DBC21DF74DC61:80:\n"
Packit Service f02b19
	"uid:o::::978642983::44C6F00AAE524A8955CAB76F2BB16126530BB203::Philip R. Zimmermann <prz@mit.edu>:\n"
Packit Service f02b19
	"uid:o::::978643127::BD93DF0D0D564E85F73ECBECFFB1B5BA5FF2838D::Philip R. Zimmermann <prz@acm.org>:\n"
Packit Service f02b19
	"uat:o::::978751266::E0F87F37495D4ED247BB66A08D7360D8D81F9976::1 3391:\n"
Packit Service f02b19
	"uat:o::::1013326898::10A2C49F62C540090ECD679C518AACAA8E960BA5::1 3479:\n"
Packit Service f02b19
	"uid:o::::1052692250::09D1F68A1C44AC42E7FCC5615EEDBB0FD581DCDE::Philip R. Zimmermann <prz@philzimmermann.com>:\n"
Packit Service f02b19
	"sub:o:3072:16:C4EB1C56A8E92834:978642983::::::e:\n",
Packit Service f02b19
Packit Service f02b19
	"pub:o:4096:1:DB698D7199242560:1012189561:::o:::scSCEA:\n"
Packit Service f02b19
	"fpr:::::::::7D92FD313AB6F3734CC59CA1DB698D7199242560:\n"
Packit Service f02b19
	"uid:o::::1012189561::0E5FC22DD5518890217F20F1FF832597932B46C1::David M. Shaw <dshaw@jabberwocky.com>:\n"
Packit Service f02b19
	"sub:o:2048:16:AE2827D11643B926:1012189956:1327549956:::::e:\n"
Packit Service f02b19
	"sub:o:1024:17:E2665C8749E1CBC9:1012190171:1327550171:::::sca:\n",
Packit Service f02b19
Packit Service f02b19
	"pub:o:2048:1:9710B89BCA57AD7C:1102303986:::o:::scSC:\n"
Packit Service f02b19
	"fpr:::::::::50BB6FFC9719DFD2BEBB04C69710B89BCA57AD7C:\n"
Packit Service f02b19
	"uid:o::::1112650864::A96F758EFD5D67EA9450860C7D15A96DAA1B40E2::PGP Global Directory Verification Key:\n"
Packit Service f02b19
	"uat:o::::1112650864::83B0B68B95892BBCE32F04BA0FBAC6CEAD4EDE49::1 3422:\n",
Packit Service f02b19
Packit Service f02b19
	"pub:e:1024:1:53B620D01CE0C630:1136130759:1230738759::o:::sc:\n"
Packit Service f02b19
	"fpr:::::::::7B96D396E6471601754BE4DB53B620D01CE0C630:\n"
Packit Service f02b19
	"uid:e::::1136130760::142B958D9816ECF810DBB83BD257E5C7DB36C99A::Werner Koch (dist sig) <dd9jn@gnu.org>:\n",
Packit Service f02b19
Packit Service f02b19
	NULL
Packit Service f02b19
};
Packit Service f02b19
Packit Service f02b19
static const gchar *secring_records[] = {
Packit Service f02b19
	"sec::2048:1:4842D952AFC000FD:1305189489::::::::::\n"
Packit Service f02b19
	"fpr:::::::::61A6EA3E0115080227A32EC94842D952AFC000FD:\n"
Packit Service f02b19
	"uid:::::::D449F1605254754B0BBFA424FC34E50609103BBB::Test Number 1 (unlimited) <test-number-1@example.com>:\n"
Packit Service f02b19
	"uid:::::::D0A8FA7B15DC4BE3F8F03A49C372F2718C78AFC0::Dr. Strangelove <lovingbomb@example.com>:\n"
Packit Service f02b19
	"ssb::2048:1:4852132BBED15014:1305189489::::::::::\n",
Packit Service f02b19
Packit Service f02b19
	"sec::1024:1:268FEE686262C395:1305189628:1305276028:::::::::\n"
Packit Service f02b19
	"fpr:::::::::A4853C22EA82C8ADC6692751268FEE686262C395:\n"
Packit Service f02b19
	"uid:::::::2E9D48BD771DA765D2B48A0233D0E8F393F6E839::Test Number 2 (all gone) <test-number-2@example.com>:\n"
Packit Service f02b19
	"ssb::1024:1:C5877FABF4772E4F:1305189628::::::::::\n",
Packit Service f02b19
Packit Service f02b19
	NULL
Packit Service f02b19
};
Packit Service f02b19
Packit Service f02b19
static Fixture fixtures[] = {
Packit Service f02b19
	{
Packit Service f02b19
	  "werner_koch",
Packit Service f02b19
	  werner_koch_records,
Packit Service f02b19
	  SRCDIR "/gcr/fixtures/werner-koch.asc",
Packit Service f02b19
	  "GnuPG v1.4.11 (GNU/Linux)",
Packit Service f02b19
	  GCR_OPENPGP_PARSE_KEYS
Packit Service f02b19
	},
Packit Service f02b19
	{
Packit Service f02b19
	  "werner_koch_with_sigs",
Packit Service f02b19
	  werner_sig_records,
Packit Service f02b19
	  SRCDIR "/gcr/fixtures/werner-koch.asc",
Packit Service f02b19
	  "GnuPG v1.4.11 (GNU/Linux)",
Packit Service f02b19
	  GCR_OPENPGP_PARSE_KEYS | GCR_OPENPGP_PARSE_SIGNATURES
Packit Service f02b19
	},
Packit Service f02b19
	{
Packit Service f02b19
	  "pubring",
Packit Service f02b19
	  pubring_records,
Packit Service f02b19
	  SRCDIR "/gcr/fixtures/pubring.gpg",
Packit Service f02b19
	  NULL,
Packit Service f02b19
	  GCR_OPENPGP_PARSE_KEYS
Packit Service f02b19
	},
Packit Service f02b19
	{
Packit Service f02b19
	  "secring",
Packit Service f02b19
	  secring_records,
Packit Service f02b19
	  SRCDIR "/gcr/fixtures/secring.gpg",
Packit Service f02b19
	  NULL,
Packit Service f02b19
	  GCR_OPENPGP_PARSE_KEYS
Packit Service f02b19
	}
Packit Service f02b19
};
Packit Service f02b19
Packit Service f02b19
typedef struct {
Packit Service f02b19
	const gchar **at;
Packit Service f02b19
	const Fixture *fixture;
Packit Service f02b19
} Test;
Packit Service f02b19
Packit Service f02b19
static void
Packit Service f02b19
setup (Test *test,
Packit Service f02b19
       gconstpointer data)
Packit Service f02b19
{
Packit Service f02b19
	const Fixture *fixture = data;
Packit Service f02b19
	test->fixture = fixture;
Packit Service f02b19
	test->at = fixture->records;
Packit Service f02b19
}
Packit Service f02b19
Packit Service f02b19
static void
Packit Service f02b19
teardown (Test *test,
Packit Service f02b19
          gconstpointer data)
Packit Service f02b19
{
Packit Service f02b19
Packit Service f02b19
}
Packit Service f02b19
Packit Service f02b19
static void
Packit Service f02b19
compare_fixture_with_records (const gchar *fixture,
Packit Service f02b19
                              GPtrArray *records)
Packit Service f02b19
{
Packit Service f02b19
	gchar *record;
Packit Service f02b19
	gchar **lines;
Packit Service f02b19
	guint i;
Packit Service f02b19
Packit Service f02b19
	lines = g_strsplit (fixture, "\n", -1);
Packit Service f02b19
	for (i = 0; i < records->len; i++) {
Packit Service f02b19
		record = _gcr_record_format (records->pdata[i]);
Packit Service f02b19
		g_assert_cmpstr (record, ==, lines[i]);
Packit Service f02b19
		g_free (record);
Packit Service f02b19
	}
Packit Service f02b19
Packit Service f02b19
	if (lines[i] == NULL) {
Packit Service f02b19
		g_test_message ("more openpgp records parsed than in fixture");
Packit Service f02b19
		g_assert_not_reached ();
Packit Service f02b19
	}
Packit Service f02b19
Packit Service f02b19
	g_strfreev (lines);
Packit Service f02b19
}
Packit Service f02b19
Packit Service f02b19
static void
Packit Service f02b19
on_openpgp_packet  (GPtrArray *records,
Packit Service f02b19
                    GBytes *outer,
Packit Service f02b19
                    gpointer user_data)
Packit Service f02b19
{
Packit Service f02b19
	Test *test = user_data;
Packit Service f02b19
	guint seen;
Packit Service f02b19
Packit Service f02b19
	/* Should be parseable again */
Packit Service f02b19
	seen = _gcr_openpgp_parse (outer, test->fixture->flags |
Packit Service f02b19
	                           GCR_OPENPGP_PARSE_NO_RECORDS, NULL, NULL);
Packit Service f02b19
	g_assert_cmpuint (seen, ==, 1);
Packit Service f02b19
Packit Service f02b19
	if (*(test->at) == NULL) {
Packit Service f02b19
		g_test_message ("more openpgp packets parsed than in fixture");
Packit Service f02b19
		g_assert_not_reached ();
Packit Service f02b19
	}
Packit Service f02b19
Packit Service f02b19
	compare_fixture_with_records (*(test->at), records);
Packit Service f02b19
	test->at++;
Packit Service f02b19
}
Packit Service f02b19
Packit Service f02b19
static void
Packit Service f02b19
on_armor_parsed (GQuark type,
Packit Service f02b19
                 GBytes *data,
Packit Service f02b19
                 GBytes *outer,
Packit Service f02b19
                 GHashTable *headers,
Packit Service f02b19
                 gpointer user_data)
Packit Service f02b19
{
Packit Service f02b19
	Test *test = user_data;
Packit Service f02b19
	const gchar *value;
Packit Service f02b19
	guint seen;
Packit Service f02b19
Packit Service f02b19
	if (test->fixture->version) {
Packit Service f02b19
		value = g_hash_table_lookup (headers, "Version");
Packit Service f02b19
		g_assert_cmpstr (value, ==, test->fixture->version);
Packit Service f02b19
	}
Packit Service f02b19
Packit Service f02b19
	seen = _gcr_openpgp_parse (data, test->fixture->flags,
Packit Service f02b19
	                           on_openpgp_packet, test);
Packit Service f02b19
	g_assert_cmpuint (seen, >, 0);
Packit Service f02b19
Packit Service f02b19
	if (*(test->at) != NULL) {
Packit Service f02b19
		g_test_message ("less openpgp packets parsed than in fixture");
Packit Service f02b19
		g_assert_not_reached ();
Packit Service f02b19
	}
Packit Service f02b19
}
Packit Service f02b19
Packit Service f02b19
static void
Packit Service f02b19
test_openpgp_armor (Test *test,
Packit Service f02b19
                    gconstpointer data)
Packit Service f02b19
{
Packit Service f02b19
	GError *error = NULL;
Packit Service f02b19
	GBytes *bytes;
Packit Service f02b19
	gchar *armor;
Packit Service f02b19
	gsize length;
Packit Service f02b19
	guint parts;
Packit Service f02b19
Packit Service f02b19
	g_file_get_contents (test->fixture->filename, &armor, &length, &error);
Packit Service f02b19
	g_assert_no_error (error);
Packit Service f02b19
Packit Service f02b19
	bytes = g_bytes_new_take (armor, length);
Packit Service f02b19
	parts = egg_armor_parse (bytes, on_armor_parsed, test);
Packit Service f02b19
	g_assert_cmpuint (parts, ==, 1);
Packit Service f02b19
Packit Service f02b19
	g_bytes_unref (bytes);
Packit Service f02b19
}
Packit Service f02b19
Packit Service f02b19
static void
Packit Service f02b19
test_openpgp_binary (Test *test,
Packit Service f02b19
                     gconstpointer data)
Packit Service f02b19
{
Packit Service f02b19
	GError *error = NULL;
Packit Service f02b19
	GBytes *bytes;
Packit Service f02b19
	gchar *binary;
Packit Service f02b19
	gsize length;
Packit Service f02b19
	guint seen;
Packit Service f02b19
Packit Service f02b19
	g_file_get_contents (test->fixture->filename, &binary, &length, &error);
Packit Service f02b19
	g_assert_no_error (error);
Packit Service f02b19
Packit Service f02b19
	bytes = g_bytes_new_take (binary, length);
Packit Service f02b19
	seen = _gcr_openpgp_parse (bytes, test->fixture->flags, on_openpgp_packet, test);
Packit Service f02b19
	g_assert_cmpuint (seen, >, 0);
Packit Service f02b19
Packit Service f02b19
	if (*(test->at) != NULL) {
Packit Service f02b19
		g_test_message ("less openpgp packets parsed than in fixture");
Packit Service f02b19
		g_assert_not_reached ();
Packit Service f02b19
	}
Packit Service f02b19
Packit Service f02b19
	g_bytes_unref (bytes);
Packit Service f02b19
}
Packit Service f02b19
Packit Service f02b19
int
Packit Service f02b19
main (int argc, char **argv)
Packit Service f02b19
{
Packit Service f02b19
	guint i;
Packit Service f02b19
	gchar *test_path;
Packit Service f02b19
Packit Service f02b19
	g_test_init (&argc, &argv, NULL);
Packit Service f02b19
	g_set_prgname ("test-openpgp");
Packit Service f02b19
Packit Service f02b19
	for (i = 0; i < G_N_ELEMENTS (fixtures); i++) {
Packit Service f02b19
		test_path = g_strdup_printf ("/gcr/openpgp/%s", fixtures[i].name);
Packit Service f02b19
		if (g_str_has_suffix (fixtures[i].filename, ".asc"))
Packit Service f02b19
			g_test_add (test_path, Test, fixtures + i, setup, test_openpgp_armor, teardown);
Packit Service f02b19
		else
Packit Service f02b19
			g_test_add (test_path, Test, fixtures + i, setup, test_openpgp_binary, teardown);
Packit Service f02b19
		g_free (test_path);
Packit Service f02b19
	}
Packit Service f02b19
Packit Service f02b19
	return g_test_run ();
Packit Service f02b19
}