diff options
author | Charlie Brej <cbrej@cs.man.ac.uk> | 2010-08-03 16:06:26 +0100 |
---|---|---|
committer | Charlie Brej <cbrej@cs.man.ac.uk> | 2010-08-03 16:06:26 +0100 |
commit | 1bc0f2acef117f909d93793fb5c32c15f15b0088 (patch) | |
tree | 05a9b719630d850613d1b5e906231057c9ed45e2 | |
parent | 31b55d05a859f8c9e86306ab240dcf3078ff70f4 (diff) |
Add user agent to tidbits
-rw-r--r-- | src/libtidbit/tidbit-key.c | 3 | ||||
-rw-r--r-- | src/libtidbit/tidbit-key.h | 5 | ||||
-rw-r--r-- | src/libtidbit/tidbit-record.c | 18 |
3 files changed, 17 insertions, 9 deletions
diff --git a/src/libtidbit/tidbit-key.c b/src/libtidbit/tidbit-key.c index 157055a..3c0d51f 100644 --- a/src/libtidbit/tidbit-key.c +++ b/src/libtidbit/tidbit-key.c @@ -27,7 +27,7 @@ #include "tidbit.h" #include "tidbit-key.h" -PtrTidbitKey tidbit_key_get (char* application) //FIXME make/get a real key +PtrTidbitKey tidbit_key_get (char* application, char* agent) //FIXME make/get a real key { GnomeKeyringPasswordSchema my_schema = { @@ -44,6 +44,7 @@ PtrTidbitKey tidbit_key_get (char* application) //FIXME make/get a real key PtrTidbitKey key = g_new(TidbitKey, 1); key->ref_count = 1; + key->agent = g_strdup(agent); GnomeKeyringResult key_result = gnome_keyring_find_password_sync (&my_schema, &raw_pem, "application", application, diff --git a/src/libtidbit/tidbit-key.h b/src/libtidbit/tidbit-key.h index 6cf5969..ce59b25 100644 --- a/src/libtidbit/tidbit-key.h +++ b/src/libtidbit/tidbit-key.h @@ -31,14 +31,15 @@ struct _TidbitKey{ int ref_count; int size; char* public_key_string; + char* agent; TidbitKeyType type; union { RSA *rsa; - DSA *dsa; + DSA *dsa; //FIXME Add differentiantion and decoding DSA } data; }; -PtrTidbitKey tidbit_key_get (char* application); +PtrTidbitKey tidbit_key_get (char* application, char* agent); void tidbit_key_ref (PtrTidbitKey key); void tidbit_key_unref (PtrTidbitKey key); char* tidbit_key_sign_data (PtrTidbitKey key, char* data); diff --git a/src/libtidbit/tidbit-record.c b/src/libtidbit/tidbit-record.c index 2af6944..58f5d46 100644 --- a/src/libtidbit/tidbit-record.c +++ b/src/libtidbit/tidbit-record.c @@ -41,9 +41,7 @@ #define TIDBIT_RECORD_ELEMENT_KEY_CHAR_IS_VALID(_chr) (((_chr) >= 'a' && (_chr) <= 'z') || (_chr) == '_') #define TIDBIT_RECORD_ELEMENT_VALUE_CHAR_IS_VALID(_chr) ((_chr) >= 0x20) -#define TIDBIT_RECORD_HEADER_V0_1 "TIDBIT/0.1" - -#define TIDBIT_RECORD_HEADER TIDBIT_RECORD_HEADER_V0_1 +#define TIDBIT_RECORD_HEADER "TIDBIT/0.1; libtidbit/0.1" static PtrTidbitRecord tidbit_record_new_raw (void) { @@ -120,7 +118,7 @@ void tidbit_record_sign (PtrTidbitRecord record, PtrTidbitKey key) g_assert(record->status == TIDBIT_RECORD_STATUS_NEW); record->user_name = g_strdup(key->public_key_string); //FIXME use function GString* rec_str = g_string_sized_new (TIDBIT_RECORD_MAX_SIZE); - g_string_append (rec_str, TIDBIT_RECORD_HEADER "\n"); + g_string_append_printf (rec_str, TIDBIT_RECORD_HEADER"; %s\n", key->agent); g_string_append_printf (rec_str, TIDBIT_RECORD_ELEMENT_KEY_USERKEY TIDBIT_RECORD_ELEMENT_SEPARATOR "%s\n", record->user_name); g_string_append_printf (rec_str, TIDBIT_RECORD_ELEMENT_KEY_TABLE TIDBIT_RECORD_ELEMENT_SEPARATOR "%s\n", record->table_name); @@ -182,8 +180,16 @@ PtrTidbitRecord tidbit_record_from_raw (char* raw) PtrTidbitRecord record = tidbit_record_new_raw (); record->raw = g_strdup(raw); - g_str_has_prefix(data, TIDBIT_RECORD_HEADER "\n"); - data += strlen(TIDBIT_RECORD_HEADER "\n"); + if (!g_str_has_prefix(data, "TIDBIT")) + return record; + data += strlen("TIDBIT"); + while (*data){ + if (*data == '\n'){ + data++; + break; + } + data++; + } if (!tidbit_record_extract_pair_from_raw (data, &data, &key, &value)) return record; |