mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-07-12 08:43:53 -05:00
Refactor the key-components mechanism a bit.
Having recently pulled it out into its own file, I think it could also do with a bit of tidying. In this rework: - the substructure for a single component now has a globally visible struct tag, so you can make a variable pointing at it, saving verbiage in every piece of code looping over a key_components - the 'is_mp_int' flag has been replaced with a type enum, so that more types can be added without further upheaval - the printing loop in cmdgen.c for puttygen --dump has factored out the initial 'name=' prefix on each line so that it isn't repeated per component type - the storage format for text components is now a strbuf rather than a plain char *, which I think is generally more useful.
This commit is contained in:
20
ssh.h
20
ssh.h
@ -542,16 +542,20 @@ struct eddsa_key {
|
||||
WeierstrassPoint *ecdsa_public(mp_int *private_key, const ssh_keyalg *alg);
|
||||
EdwardsPoint *eddsa_public(mp_int *private_key, const ssh_keyalg *alg);
|
||||
|
||||
typedef enum KeyComponentType {
|
||||
KCT_TEXT, KCT_MPINT
|
||||
} KeyComponentType;
|
||||
typedef struct key_component {
|
||||
char *name;
|
||||
KeyComponentType type;
|
||||
union {
|
||||
strbuf *str; /* used for KCT_TEXT */
|
||||
mp_int *mp; /* used for KCT_MPINT */
|
||||
};
|
||||
} key_component;
|
||||
typedef struct key_components {
|
||||
size_t ncomponents, componentsize;
|
||||
struct {
|
||||
char *name;
|
||||
bool is_mp_int;
|
||||
union {
|
||||
char *text;
|
||||
mp_int *mp;
|
||||
};
|
||||
} *components;
|
||||
key_component *components;
|
||||
} key_components;
|
||||
key_components *key_components_new(void);
|
||||
void key_components_add_text(key_components *kc,
|
||||
|
Reference in New Issue
Block a user