8 static void skr_found(SilcSKR skr, SilcSKRFind find, SilcSKRStatus status,
9 SilcDList results, void *context)
13 SILC_LOG_DEBUG(("Result status %d", status));
14 if (status & SILC_SKR_OK) {
15 SILC_LOG_DEBUG(("Found %d keys", silc_dlist_count(results)));
17 while ((key = silc_dlist_get(results)) != SILC_LIST_END)
18 SILC_LOG_DEBUG(("Key: %s", ((SilcPublicKey)key->key)->identifier));
20 silc_dlist_uninit(results);
26 int main(int argc, char **argv)
28 SilcBool success = FALSE;
29 SilcSchedule schedule;
34 if (argc > 1 && !strcmp(argv[1], "-d")) {
36 silc_log_debug_hexdump(TRUE);
37 silc_log_set_debug_string("*skr*");
40 SILC_LOG_DEBUG(("Allocating scheduler"));
41 schedule = silc_schedule_init(0, NULL);
43 SILC_LOG_DEBUG(("Allocating SKR"));
44 skr = silc_skr_alloc();
48 SILC_LOG_DEBUG(("Adding public key to SKR"));
49 pk = silc_calloc(1, sizeof(*pk));
51 pk->pk_type = SILC_PKCS_SILC;
52 pk->name = strdup("rsa");
55 pk->identifier = silc_pkcs_encode_identifier("foo", "foo.com",
56 "Foo T. Bar", "foo@foo.com",
58 silc_skr_add_public_key(skr, pk, 0, NULL);
60 SILC_LOG_DEBUG(("Adding public key to SKR"));
61 pk = silc_calloc(1, sizeof(*pk));
63 pk->pk_type = SILC_PKCS_SILC;
64 pk->name = strdup("rsa");
67 pk->identifier = silc_pkcs_encode_identifier("bar", "bar.com",
68 "Bar T. Bar", "bar@foo.com",
70 silc_skr_add_public_key(skr, pk, SILC_SKR_USAGE_IDENTIFICATION |
71 SILC_SKR_USAGE_AUTH, NULL);
73 SILC_LOG_DEBUG(("Attempting to add key twice"));
74 if (silc_skr_add_public_key(skr, pk, 0, NULL) == SILC_SKR_OK) {
75 SILC_LOG_DEBUG(("Adding key twice not detected"));
79 SILC_LOG_DEBUG(("Finding public key by email"));
80 find = silc_skr_find_alloc();
81 silc_skr_find_set_email(find, "foo@foo.com");
82 silc_skr_find(skr, schedule, find, skr_found, NULL);
83 silc_skr_find_free(find);
87 SILC_LOG_DEBUG(("Finding public key by country"));
88 find = silc_skr_find_alloc();
89 silc_skr_find_set_country(find, "FI");
90 silc_skr_find(skr, schedule, find, skr_found, NULL);
91 silc_skr_find_free(find);
95 SILC_LOG_DEBUG(("Finding public key by country, ORG and hostname"));
96 find = silc_skr_find_alloc();
97 silc_skr_find_set_country(find, "FI");
98 silc_skr_find_set_org(find, "ORG");
99 silc_skr_find_set_host(find, "foo.com");
100 silc_skr_find(skr, schedule, find, skr_found, NULL);
101 silc_skr_find_free(find);
105 SILC_LOG_DEBUG(("Finding public key by SILC public key"));
106 silc_skr_find_silc(skr, pk, skr_found, NULL);
110 SILC_LOG_DEBUG(("Finding public key by country and usage (must not find)"));
111 find = silc_skr_find_alloc();
112 silc_skr_find_set_country(find, "FI");
113 silc_skr_find_set_usage(find, SILC_SKR_USAGE_ENC);
114 silc_skr_find(skr, schedule, find, skr_found, NULL);
115 silc_skr_find_free(find);
119 SILC_LOG_DEBUG(("Finding public key by country and usage"));
120 find = silc_skr_find_alloc();
121 silc_skr_find_set_country(find, "FI");
122 silc_skr_find_set_usage(find, SILC_SKR_USAGE_IDENTIFICATION);
123 silc_skr_find(skr, schedule, find, skr_found, NULL);
124 silc_skr_find_free(find);
129 silc_schedule_uninit(schedule);
134 SILC_LOG_DEBUG(("Testing was %s", success ? "SUCCESS" : "FAILURE"));
135 fprintf(stderr, "Testing was %s\n", success ? "SUCCESS" : "FAILURE");