\n");
if (silc_pkcs_load_public_key(mapconn->public_key, &public_key,
SILC_PKCS_FILE_PEM) == FALSE)
if (silc_pkcs_load_public_key(mapconn->public_key, &public_key,
SILC_PKCS_FILE_BIN) == FALSE) {
fprintf(stderr, "Could not load public key file `%s'\n",
mapconn->public_key);
return FALSE;
}
ident = silc_pkcs_decode_identifier(public_key->identifier);
pk = silc_pkcs_public_key_encode(public_key, &pk_len);
fingerprint = silc_hash_fingerprint(NULL, pk, pk_len);
babbleprint = silc_hash_babbleprint(NULL, pk, pk_len);
if (silc_pkcs_alloc(public_key->name, &pkcs)) {
key_len = silc_pkcs_public_key_set(pkcs, public_key);
silc_pkcs_free(pkcs);
}
fprintf(fp, " ");
fprintf(fp, "Public key file | : | %s |
\n",
mapconn->public_key, mapconn->public_key);
fprintf(fp, " ");
fprintf(fp, "Algorithm | : | %s |
\n", public_key->name);
if (key_len) {
fprintf(fp, " ");
fprintf(fp, "Key length (bits) | : | %d |
\n", (unsigned int)key_len);
}
if (ident->realname) {
fprintf(fp, " ");
fprintf(fp, "Real name | : | %s |
\n", ident->realname);
}
if (ident->username) {
fprintf(fp, " ");
fprintf(fp, "Username | : | %s |
\n", ident->username);
}
if (ident->host) {
fprintf(fp, " ");
fprintf(fp, "Hostname | : | %s |
\n", ident->host);
}
if (ident->email) {
fprintf(fp, " ");
fprintf(fp, "Email | : | %s |
\n", ident->email);
}
if (ident->org) {
fprintf(fp, " ");
fprintf(fp, "Organization | : | %s |
\n", ident->org);
}
if (ident->country) {
fprintf(fp, " ");
fprintf(fp, "Country | : | %s |
\n", ident->country);
}
fprintf(fp, " ");
fprintf(fp, "Fingerprint (SHA1) | : | %s |
\n", fingerprint);
fprintf(fp, " ");
fprintf(fp, "Babbleprint (SHA1) | : | %s |
\n", babbleprint);
fprintf(fp, "
\n");
pd = fopen(mapconn->public_key, "r");
if (!pd)
return FALSE;
pk_len = silc_file_size(mapconn->public_key);
pdd = silc_calloc(pk_len + 2, sizeof(*pdd));
if (!pdd)
return FALSE;
fread(pdd, pk_len, 1, pd);
pdd[pk_len] = EOF;
fprintf(fp, "\n");
if (mapconn->starttime) {
fprintf(fp, " ");
fprintf(fp, "Server start time | : | %s | |
\n",
silc_get_time(mapconn->data.starttime));
}
if (mapconn->uptime) {
fprintf(fp, " ");
fprintf(fp, "Server uptime | : | %d days %d hours %d mins %d secs | |
\n",
days, hours, mins, secs);
}
if (mapconn->clients) {
fprintf(fp, " ");
fprintf(fp, "Local clients | : | %ld |
\n",
mapconn->data.clients);
}
if (mapconn->channels) {
fprintf(fp, " ");
fprintf(fp, "Local channels | : | %ld |
\n",
mapconn->data.channels);
}
if (mapconn->server_ops) {
fprintf(fp, " ");
fprintf(fp, "Local server operators | : | %ld |
\n",
mapconn->data.server_ops);
}
if (mapconn->router_ops) {
fprintf(fp, " ");
fprintf(fp, "Local router operators | : | %ld |
\n",
mapconn->data.router_ops);
}
if (mapconn->cell_clients) {
fprintf(fp, " ");
fprintf(fp, "Cell clients | : | %ld |
\n",
mapconn->data.cell_clients);
}
if (mapconn->cell_channels) {
fprintf(fp, " ");
fprintf(fp, "Cell channels | : | %ld |
\n",
mapconn->data.cell_channels);
}
if (mapconn->cell_servers) {
fprintf(fp, " ");
fprintf(fp, "Cell servers | : | %ld |
\n",
mapconn->data.cell_servers);
}
if (mapconn->all_clients) {
fprintf(fp, " ");
fprintf(fp, "All SILC clients | : | %ld |
\n",
mapconn->data.all_clients);
}
if (mapconn->all_channels) {
fprintf(fp, " ");
fprintf(fp, "All SILC channels | : | %ld |
\n",
mapconn->data.all_channels);
}
if (mapconn->all_servers) {
fprintf(fp, " ");
fprintf(fp, "All SILC servers | : | %ld |
\n",
mapconn->data.all_servers);
}
if (mapconn->all_routers) {
fprintf(fp, " ");
fprintf(fp, "All SILC routers | : | %ld |
\n",
mapconn->data.all_routers);
}
if (mapconn->all_server_ops) {
fprintf(fp, " ");
fprintf(fp, "All SILC server operators | : | %ld |
\n",
mapconn->data.all_server_ops);
}
if (mapconn->all_router_ops) {
fprintf(fp, " ");
fprintf(fp, "All SILC router operators | : | %ld |
\n",
mapconn->data.all_router_ops);
}
fprintf(fp, "
\n");
}
/* motd */
if (mapconn->motd) {
fprintf(fp, "