X-Git-Url: https://the.earth.li/gitweb/?p=onak.git;a=blobdiff_plain;f=decodekey.h;h=5eb78d173226b573fa64f6c2d3d3df9de686c690;hp=987c3fc7d7c26c51c46c09c5e7bb4f8a07a10b32;hb=58ed9a0076feb9604154b99da6ed1907ca7df089;hpb=d1e174344cb2d8d3681cd3c3d6dfe0c70d60da20 diff --git a/decodekey.h b/decodekey.h index 987c3fc..5eb78d1 100644 --- a/decodekey.h +++ b/decodekey.h @@ -1,16 +1,29 @@ /* * keyindex.h - Routines to list an OpenPGP key. * - * Jonathan McDowell + * Copyright 2002-2008 Jonathan McDowell * - * Copyright 2002 Project Purple + * This program 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; version 2 of the License. + * + * This program 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 along with + * this program. If not, see . */ #ifndef __DECODEKEY_H__ #define __DECODEKEY_H__ +#include +#include #include "keystructs.h" #include "ll.h" +#include "onak.h" /** * keysigs - Return the sigs on a given OpenPGP signature packet list. @@ -33,7 +46,8 @@ struct ll *keysigs(struct ll *curll, * key or pulls the data directly from v2/3. NULL can be passed for any * values which aren't cared about. */ -void sig_info(struct openpgp_packet *packet, uint64_t *keyid, time_t *creation); +onak_status_t sig_info(struct openpgp_packet *packet, uint64_t *keyid, + time_t *creation); /** * sig_keyid - Return the keyid for a given OpenPGP signature packet. @@ -55,12 +69,44 @@ uint64_t sig_keyid(struct openpgp_packet *packet); char **keyuids(struct openpgp_publickey *key, char **primary); /** - * keysubkeys - Takes a key and returns an array of its subkey keyids. + * keysubkeys - Takes a key & returns an array of its subkey fingerprints * @key: The key to get the subkeys of. * * keysubkeys takes a public key structure and returns an array of the - * subkey keyids for that key. + * subkey fingerprints for that key. + */ +struct openpgp_fingerprint *keysubkeys(struct openpgp_publickey *key); + +/** + * parse_subpackets - Parse the subpackets of a Type 4 signature. + * @data: The subpacket data. + * @len: The amount of data available to read. + * @parselen: The amount of data that was actually parsed. + * @keyid: A pointer to where we should return the keyid. + * @creationtime: A pointer to where we should return the creation time. + * + * This function parses the subkey data of a Type 4 signature and fills + * in the supplied variables. It also returns the length of the data + * processed. If the value of any piece of data is not desired a NULL + * can be passed instead of a pointer to a storage area for that value. */ -uint64_t *keysubkeys(struct openpgp_publickey *key); +onak_status_t parse_subpackets(unsigned char *data, size_t len, + size_t *parselen, uint64_t *keyid, time_t *creation); + +enum onak_oid { + ONAK_OID_UNKNOWN = 0, + ONAK_OID_INVALID, + ONAK_OID_CURVE25519, + ONAK_OID_ED25519, + ONAK_OID_NISTP256, + ONAK_OID_NISTP384, + ONAK_OID_NISTP521, + ONAK_OID_BRAINPOOLP256R1, + ONAK_OID_BRAINPOOLP384R1, + ONAK_OID_BRAINPOOLP512R1, + ONAK_OID_SECP256K1, +}; + +enum onak_oid onak_parse_oid(uint8_t *buf, size_t len); #endif