X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=pubkeys.h;fp=pubkeys.h;h=0901baa5dfe8c3d88dd17d2c8937b7aaa54aa855;hb=20c35278822db437d832e47166c5936a93e891fd;hp=0000000000000000000000000000000000000000;hpb=e4499269be39b8c72f7ec33ccfc6a8b5db7830d4;p=secnet.git diff --git a/pubkeys.h b/pubkeys.h new file mode 100644 index 0000000..0901baa --- /dev/null +++ b/pubkeys.h @@ -0,0 +1,54 @@ +/* + * This file is part of secnet. + * See README for full list of copyright holders. + * + * secnet is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * secnet is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * version 3 along with secnet; if not, see + * https://www.gnu.org/licenses/gpl.html. + */ + +#ifndef pubkeys_h +#define pubkeys_h + +#include "secnet.h" + +/*----- shared with site.c -----*/ + +struct peer_pubkey { + struct sigkeyid id; + struct sigpubkey_if *pubkey; /* does not need ->sethash calling */ +}; + +struct peer_keyset { + int refcount; + serialt serial; + int nkeys; + struct peer_pubkey keys[MAX_SIG_KEYS]; +}; + +extern struct peer_keyset * +keyset_load(const char *path, struct buffer_if *data_buf, + struct log_if *log, int logcl_enoent); + +extern void keyset_dispose(struct peer_keyset **ks); + +static inline struct peer_keyset *keyset_dup(struct peer_keyset *in) { + in->refcount++; + return in; +} + +extern bool_t +pubkey_want(struct peer_keyset *building /* refcount and serial undef */, + struct sigkeyid *id, const struct sigscheme_info *scheme); + +#endif /* pubkeys_h */