Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(712)

Side by Side Diff: src/crypto.c

Issue 6659006: flimflam: add support for multiple profiles (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/flimflam.git@master
Patch Set: more ers comments Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/connman.h ('k') | src/device.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Crypto plugin API. 2 * Crypto plugin API.
3 * 3 *
4 * This file initially created by Google, Inc. 4 * This file initially created by Google, Inc.
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify 6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as 7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation. 8 * published by the Free Software Foundation.
9 * 9 *
10 * This program is distributed in the hope that it will be useful, 10 * This program is distributed in the hope that it will be useful,
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 * Remove a previously registered crypto module 69 * Remove a previously registered crypto module
70 */ 70 */
71 void connman_crypto_unregister(struct connman_crypto *crypto) 71 void connman_crypto_unregister(struct connman_crypto *crypto)
72 { 72 {
73 _DBG_CRYPTO("crypto %p name %s", crypto, crypto->name); 73 _DBG_CRYPTO("crypto %p name %s", crypto, crypto->name);
74 74
75 g_free(crypto->prefix); 75 g_free(crypto->prefix);
76 crypto_list = g_slist_remove(crypto_list, crypto); 76 crypto_list = g_slist_remove(crypto_list, crypto);
77 } 77 }
78 78
79 char *__connman_crypto_decrypt_keyvalue(const char *profile_name, 79 char *__connman_crypto_decrypt_keyvalue(const char *key, const char *value)
80 const char *key, const char *value)
81 { 80 {
82 GSList *list; 81 GSList *list;
83 82
84 CONNMAN_ASSERT(value != NULL); 83 CONNMAN_ASSERT(value != NULL);
85 84
86 for (list = crypto_list; list; list = list->next) { 85 for (list = crypto_list; list; list = list->next) {
87 struct connman_crypto *crypto = list->data; 86 struct connman_crypto *crypto = list->data;
88 87
89 if (strncmp(crypto->prefix, value, crypto->prefix_size) == 0) { 88 if (strncmp(crypto->prefix, value, crypto->prefix_size) == 0) {
90 /* 89 /*
91 * The prefix matches, so this plugin *must* be the 90 * The prefix matches, so this plugin *must* be the
92 * one that knows how to decrypt. 91 * one that knows how to decrypt.
93 */ 92 */
94 return crypto->decrypt_keyvalue(profile_name, key, 93 return crypto->decrypt_keyvalue(key,
95 &value[crypto->prefix_size]); 94 &value[crypto->prefix_size]);
96 } 95 }
97 } 96 }
98 97
99 /* 98 /*
100 * No plugins match the prefix of the encrypted value, return a copy of 99 * No plugins match the prefix of the encrypted value, return a copy of
101 * the plaintext. 100 * the plaintext.
102 */ 101 */
103 return g_strdup(value); 102 return g_strdup(value);
104 } 103 }
105 104
106 char *__connman_crypto_encrypt_keyvalue(const char *profile_name, 105 char *__connman_crypto_encrypt_keyvalue(const char *key, const char *value)
107 const char *key, const char *value)
108 { 106 {
109 GSList *list; 107 GSList *list;
110 char *rv = NULL; 108 char *rv = NULL;
111 109
112 if (value == NULL) 110 if (value == NULL)
113 return NULL; 111 return NULL;
114 112
115 for (list = crypto_list; list; list = list->next) { 113 for (list = crypto_list; list; list = list->next) {
116 struct connman_crypto *crypto = list->data; 114 struct connman_crypto *crypto = list->data;
117 char *ciphertext = crypto->encrypt_keyvalue( 115 char *ciphertext = crypto->encrypt_keyvalue(key, value);
118 profile_name, key, value);
119 116
120 if (ciphertext != NULL) { 117 if (ciphertext != NULL) {
121 rv = g_strdup_printf("%s%s", crypto->prefix, 118 rv = g_strdup_printf("%s%s", crypto->prefix,
122 ciphertext); 119 ciphertext);
123 g_free(ciphertext); 120 g_free(ciphertext);
124 break; 121 break;
125 } 122 }
126 } 123 }
127 124
128 if (rv == NULL) { 125 if (rv == NULL) {
(...skipping 11 matching lines...) Expand all
140 { 137 {
141 _DBG_CRYPTO(""); 138 _DBG_CRYPTO("");
142 139
143 return 0; 140 return 0;
144 } 141 }
145 142
146 void __connman_crypto_cleanup(void) 143 void __connman_crypto_cleanup(void)
147 { 144 {
148 _DBG_CRYPTO(""); 145 _DBG_CRYPTO("");
149 } 146 }
OLDNEW
« no previous file with comments | « src/connman.h ('k') | src/device.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698