charon-nm: Set DPD/close action to restart and enable indefinite keying tries
[strongswan.git] / src / libstrongswan / credentials / keys / private_key.c
1 /*
2 * Copyright (C) 2007 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 "private_key.h"
17
18 /**
19 * See header.
20 */
21 bool private_key_equals(private_key_t *this, private_key_t *other)
22 {
23 cred_encoding_type_t type;
24 chunk_t a, b;
25
26 if (this == other)
27 {
28 return TRUE;
29 }
30
31 for (type = 0; type < CRED_ENCODING_MAX; type++)
32 {
33 if (this->get_fingerprint(this, type, &a) &&
34 other->get_fingerprint(other, type, &b))
35 {
36 return chunk_equals(a, b);
37 }
38 }
39 return FALSE;
40 }
41
42 /**
43 * See header.
44 */
45 bool private_key_belongs_to(private_key_t *private, public_key_t *public)
46 {
47 cred_encoding_type_t type;
48 chunk_t a, b;
49
50 for (type = 0; type < CRED_ENCODING_MAX; type++)
51 {
52 if (private->get_fingerprint(private, type, &a) &&
53 public->get_fingerprint(public, type, &b))
54 {
55 return chunk_equals(a, b);
56 }
57 }
58 return FALSE;
59 }
60
61 /**
62 * See header.
63 */
64 bool private_key_has_fingerprint(private_key_t *private, chunk_t fingerprint)
65 {
66 cred_encoding_type_t type;
67 chunk_t current;
68
69 for (type = 0; type < KEYID_MAX; type++)
70 {
71 if (private->get_fingerprint(private, type, &current) &&
72 chunk_equals(current, fingerprint))
73 {
74 return TRUE;
75 }
76 }
77 return FALSE;
78 }
79