Annotation of embedaddon/strongswan/scripts/key2keyid.c, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (C) 2008-2009 Martin Willi
3: * HSR Hochschule fuer Technik Rapperswil
4: *
5: * This program is free software; you can redistribute it and/or modify it
6: * under the terms of the GNU General Public License as published by the
7: * Free Software Foundation; either version 2 of the License, or (at your
8: * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
9: *
10: * This program is distributed in the hope that it will be useful, but
11: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13: * for more details.
14: */
15:
16: #include <stdio.h>
17: #include <library.h>
18: #include <utils/debug.h>
19: #include <credentials/keys/private_key.h>
20: #include <credentials/keys/public_key.h>
21:
22: /**
23: * print the keyids of a private or public key
24: */
25: int main(int argc, char *argv[])
26: {
27: public_key_t *public;
28: private_key_t *private;
29: chunk_t chunk;
30: char buf[8096];
31: int read;
32:
33: library_init(NULL, "key2keyid");
34: lib->plugins->load(lib->plugins, PLUGINS);
35: atexit(library_deinit);
36:
37: read = fread(buf, 1, sizeof(buf), stdin);
38: if (read <= 0)
39: {
40: fprintf(stderr, "reading key failed.\n");
41: return -1;
42: }
43:
44: chunk = chunk_create(buf, read);
45:
46: private = lib->creds->create(lib->creds, CRED_PRIVATE_KEY, KEY_RSA,
47: BUILD_BLOB_PEM, chunk_clone(chunk),
48: BUILD_END);
49: if (private)
50: {
51: printf("parsed %d bits %N private key.\n",
52: private->get_keysize(private),
53: key_type_names, private->get_type(private));
54: if (private->get_fingerprint(private, KEYID_PUBKEY_INFO_SHA1, &chunk))
55: {
56: printf("subjectPublicKeyInfo keyid: %#B\n", &chunk);
57: }
58: if (private->get_fingerprint(private, KEYID_PUBKEY_SHA1, &chunk))
59: {
60: printf("subjectPublicKey keyid: %#B\n", &chunk);
61: }
62: if (private->get_fingerprint(private, KEYID_PGPV3, &chunk))
63: {
64: printf("PGP version 3 keyid: %#B\n", &chunk);
65: }
66: private->destroy(private);
67: return 0;
68: }
69:
70: public = lib->creds->create(lib->creds, CRED_PUBLIC_KEY, KEY_ANY,
71: BUILD_BLOB_PEM, chunk_clone(chunk),
72: BUILD_END);
73: if (!public)
74: {
75: public = lib->creds->create(lib->creds, CRED_PUBLIC_KEY, KEY_RSA,
76: BUILD_BLOB_PEM, chunk_clone(chunk),
77: BUILD_END);
78: }
79: if (public)
80: {
81: printf("parsed %d bits %N public key.\n",
82: public->get_keysize(public),
83: key_type_names, public->get_type(public));
84: if (public->get_fingerprint(public, KEYID_PUBKEY_INFO_SHA1, &chunk))
85: {
86: printf("subjectPublicKeyInfo keyid: %#B\n", &chunk);
87: }
88: if (public->get_fingerprint(public, KEYID_PUBKEY_SHA1, &chunk))
89: {
90: printf("subjectPublicKey keyid: %#B\n", &chunk);
91: }
92: if (public->get_fingerprint(public, KEYID_PGPV3, &chunk))
93: {
94: printf("PGP version 3 keyid: %#B\n", &chunk);
95: }
96: public->destroy(public);
97: return 0;
98: }
99:
100: fprintf(stderr, "unable to parse input key.\n");
101: return -1;
102: }
103:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>