"] }, ["asyncBlocking"]
85 | );
86 |
87 | /**
88 | * Interaction between background-script and front-script
89 | */
90 | chrome.extension.onMessage.addListener(event.onMessage);
91 |
92 |
93 | /**
94 | * Add context menu entry for filling in username + password
95 | */
96 | chrome.contextMenus.create({
97 | "title": "Fill &User + Pass",
98 | "contexts": [ "editable" ],
99 | "onclick": function(info, tab) {
100 | chrome.tabs.sendMessage(tab.id, {
101 | action: "fill_user_pass"
102 | });
103 | }
104 | });
105 |
106 | /**
107 | * Add context menu entry for filling in only password which matches for given username
108 | */
109 | chrome.contextMenus.create({
110 | "title": "Fill &Pass Only",
111 | "contexts": [ "editable" ],
112 | "onclick": function(info, tab) {
113 | chrome.tabs.sendMessage(tab.id, {
114 | action: "fill_pass_only"
115 | });
116 | }
117 | });
118 |
119 | /**
120 | * Add context menu entry for creating icon for generate-password dialog
121 | */
122 | chrome.contextMenus.create({
123 | "title": "Show Password &Generator Icons",
124 | "contexts": [ "editable" ],
125 | "onclick": function(info, tab) {
126 | chrome.tabs.sendMessage(tab.id, {
127 | action: "activate_password_generator"
128 | });
129 | }
130 | });
131 |
132 | /**
133 | * Add context menu entry for creating icon for generate-password dialog
134 | */
135 | chrome.contextMenus.create({
136 | "title": "&Save credentials",
137 | "contexts": [ "editable" ],
138 | "onclick": function(info, tab) {
139 | chrome.tabs.sendMessage(tab.id, {
140 | action: "remember_credentials"
141 | });
142 | }
143 | });
144 |
145 | /**
146 | * Listen for keyboard shortcuts specified by user
147 | */
148 | chrome.commands.onCommand.addListener(function(command) {
149 |
150 | if(command === "fill-username-password") {
151 | chrome.tabs.query({ active: true, currentWindow: true }, function(tabs) {
152 | if (tabs.length) {
153 | chrome.tabs.sendMessage(tabs[0].id, { action: "fill_user_pass" });
154 | }
155 | });
156 | }
157 |
158 | if(command === "fill-password") {
159 | chrome.tabs.query({ active: true, currentWindow: true }, function(tabs) {
160 | if (tabs.length) {
161 | chrome.tabs.sendMessage(tabs[0].id, { action: "fill_pass_only" });
162 | }
163 | });
164 | }
165 | });
166 |
167 | /**
168 | * Interval which updates the browserAction (e.g. blinking icon)
169 | */
170 | window.setInterval(function() {
171 | browserAction.update(_interval);
172 | }, _interval);
--------------------------------------------------------------------------------
/chromeipass/background/page.js:
--------------------------------------------------------------------------------
1 | var page = {};
2 |
3 | // special information for every tab
4 | page.tabs = {};
5 |
6 | page.currentTabId = -1;
7 | page.settings = (typeof(localStorage.settings) == 'undefined') ? {} : JSON.parse(localStorage.settings);
8 | page.blockedTabs = {};
9 |
10 | page.initSettings = function() {
11 | event.onLoadSettings();
12 | if(!("checkUpdateKeePassHttp" in page.settings)) {
13 | page.settings.checkUpdateKeePassHttp = 3;
14 | }
15 | if(!("autoCompleteUsernames" in page.settings)) {
16 | page.settings.autoCompleteUsernames = 1;
17 | }
18 | if(!("autoFillAndSend" in page.settings)) {
19 | page.settings.autoFillAndSend = 1;
20 | }
21 | if(!("usePasswordGenerator" in page.settings)) {
22 | page.settings.usePasswordGenerator = 1;
23 | }
24 | if(!("autoFillSingleEntry" in page.settings)) {
25 | page.settings.autoFillSingleEntry = 1;
26 | }
27 | if(!("autoRetrieveCredentials" in page.settings)) {
28 | page.settings.autoRetrieveCredentials = 1;
29 | }
30 | if(!("hostname" in page.settings)) {
31 | page.settings.hostname = "localhost";
32 | }
33 | if(!("port" in page.settings)) {
34 | page.settings.port = "19455";
35 | }
36 | localStorage.settings = JSON.stringify(page.settings);
37 | }
38 |
39 | page.initOpenedTabs = function() {
40 | chrome.tabs.query({}, function(tabs) {
41 | for(var i = 0; i < tabs.length; i++) {
42 | page.createTabEntry(tabs[i].id);
43 | }
44 | });
45 | }
46 |
47 | page.isValidProtocol = function(url) {
48 | var protocol = url.substring(0, url.indexOf(":"));
49 | protocol = protocol.toLowerCase();
50 | return !(url.indexOf(".") == -1 || (protocol != "http" && protocol != "https" && protocol != "ftp" && protocol != "sftp"));
51 | }
52 |
53 | page.switchTab = function(callback, tab) {
54 | browserAction.showDefault(null, tab);
55 |
56 | chrome.tabs.sendMessage(tab.id, {action: "activated_tab"});
57 | }
58 |
59 | page.clearCredentials = function(tabId, complete) {
60 | if(!page.tabs[tabId]) {
61 | return;
62 | }
63 |
64 | page.tabs[tabId].credentials = {};
65 | delete page.tabs[tabId].credentials;
66 |
67 | if(complete) {
68 | page.tabs[tabId].loginList = [];
69 |
70 | chrome.tabs.sendMessage(tabId, {
71 | action: "clear_credentials"
72 | });
73 | }
74 | }
75 |
76 | page.createTabEntry = function(tabId) {
77 | //console.log("page.createTabEntry("+tabId+")");
78 | page.tabs[tabId] = {
79 | "stack": [],
80 | "errorMessage": null,
81 | "loginList": {}
82 | };
83 | }
84 |
85 | page.removePageInformationFromNotExistingTabs = function() {
86 | var rand = Math.floor(Math.random()*1001);
87 | if(rand == 28) {
88 | chrome.tabs.query({}, function(tabs) {
89 | var $tabIds = {};
90 | var $infoIds = Object.keys(page.tabs);
91 |
92 | for(var i = 0; i < tabs.length; i++) {
93 | $tabIds[tabs[i].id] = true;
94 | }
95 |
96 | for(var i = 0; i < $infoIds.length; i++) {
97 | if(!($infoIds[i] in $tabIds)) {
98 | delete page.tabs[$infoIds[i]];
99 | }
100 | }
101 | });
102 | }
103 | };
104 |
105 | page.debugConsole = function() {
106 | if(arguments.length > 1) {
107 | console.log(page.sprintf(arguments[0], arguments));
108 | }
109 | else {
110 | console.log(arguments[0]);
111 | }
112 | };
113 |
114 | page.sprintf = function(input, args) {
115 | return input.replace(/{(\d+)}/g, function(match, number) {
116 | return typeof args[number] != 'undefined'
117 | ? (typeof args[number] == 'object' ? JSON.stringify(args[number]) : args[number])
118 | : match
119 | ;
120 | });
121 | }
122 |
123 | page.debugDummy = function() {};
124 |
125 | page.debug = page.debugDummy;
126 |
127 | page.setDebug = function(bool) {
128 | if(bool) {
129 | page.debug = page.debugConsole;
130 | return "Debug mode enabled";
131 | }
132 | else {
133 | page.debug = page.debugDummy;
134 | return "Debug mode disabled";
135 | }
136 | };
137 |
--------------------------------------------------------------------------------
/chromeipass/background/utf8.js:
--------------------------------------------------------------------------------
1 | var UTF8 = {
2 | decode : function (utftext) {
3 | var string = "";
4 | var i = 0;
5 | var c = c1 = c2 = 0;
6 |
7 | while (i < utftext.length) {
8 | c = utftext.charCodeAt(i);
9 | if (c < 128) {
10 | string += String.fromCharCode(c);
11 | i++;
12 | }
13 | else if((c > 191) && (c < 224)) {
14 | c2 = utftext.charCodeAt(i+1);
15 | string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
16 | i += 2;
17 | } else {
18 | c2 = utftext.charCodeAt(i+1);
19 | c3 = utftext.charCodeAt(i+2);
20 | string += String.fromCharCode(
21 | ((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
22 | i += 3;
23 | }
24 |
25 | }
26 | return string;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/chromeipass/bootstrap-btn.css:
--------------------------------------------------------------------------------
1 | .b2c-btn {
2 | display: inline-block;
3 | *display: inline;
4 | padding: 4px 14px;
5 | margin-bottom: 0;
6 | *margin-left: .3em;
7 | font-size: 14px;
8 | line-height: 20px;
9 | *line-height: 20px;
10 | color: #333333;
11 | text-align: center;
12 | text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
13 | vertical-align: middle;
14 | cursor: pointer;
15 | background-color: #f5f5f5;
16 | *background-color: #e6e6e6;
17 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
18 | background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
19 | background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
20 | background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
21 | background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
22 | background-repeat: repeat-x;
23 | border: 1px solid #bbbbbb;
24 | *border: 0;
25 | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
26 | border-color: #e6e6e6 #e6e6e6 #bfbfbf;
27 | border-bottom-color: #a2a2a2;
28 | -webkit-border-radius: 4px;
29 | -moz-border-radius: 4px;
30 | border-radius: 4px;
31 | filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
32 | filter: progid:dximagetransform.microsoft.gradient(enabled=false);
33 | *zoom: 1;
34 | -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
35 | -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
36 | box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
37 | }
38 |
39 | .b2c-btn:hover,
40 | .b2c-btn:active,
41 | .b2c-btn.active,
42 | .b2c-btn.disabled,
43 | .b2c-btn[disabled] {
44 | color: #333333;
45 | background-color: #e6e6e6;
46 | *background-color: #d9d9d9;
47 | }
48 |
49 | .b2c-btn:active,
50 | .b2c-btn.active {
51 | background-color: #cccccc \9;
52 | }
53 |
54 | .b2c-btn:first-child {
55 | *margin-left: 0;
56 | }
57 |
58 | .b2c-btn:hover {
59 | color: #333333;
60 | text-decoration: none;
61 | background-color: #e6e6e6;
62 | *background-color: #d9d9d9;
63 | /* Buttons in IE7 don't get borders, so darken on hover */
64 |
65 | background-position: 0 -15px;
66 | -webkit-transition: background-position 0.1s linear;
67 | -moz-transition: background-position 0.1s linear;
68 | -o-transition: background-position 0.1s linear;
69 | transition: background-position 0.1s linear;
70 | }
71 |
72 | .b2c-btn:focus {
73 | outline: thin dotted #333;
74 | outline: 5px auto -webkit-focus-ring-color;
75 | outline-offset: -2px;
76 | }
77 |
78 | .b2c-btn.active,
79 | .b2c-btn:active {
80 | background-color: #e6e6e6;
81 | background-color: #d9d9d9 \9;
82 | background-image: none;
83 | outline: 0;
84 | -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
85 | -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
86 | box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
87 | }
88 |
89 | .b2c-btn.disabled,
90 | .b2c-btn[disabled] {
91 | cursor: default;
92 | background-color: #e6e6e6;
93 | background-image: none;
94 | opacity: 0.65;
95 | filter: alpha(opacity=65);
96 | -webkit-box-shadow: none;
97 | -moz-box-shadow: none;
98 | box-shadow: none;
99 | }
100 |
101 | .b2c-btn-large {
102 | padding: 9px 14px;
103 | font-size: 16px;
104 | line-height: normal;
105 | -webkit-border-radius: 5px;
106 | -moz-border-radius: 5px;
107 | border-radius: 5px;
108 | }
109 |
110 | .b2c-btn-large [class^="icon-"] {
111 | margin-top: 2px;
112 | }
113 |
114 | .b2c-btn-small {
115 | padding: 3px 9px;
116 | font-size: 12px;
117 | line-height: 18px;
118 | }
119 |
120 | .b2c-btn-small [class^="icon-"] {
121 | margin-top: 0;
122 | }
123 |
124 | .b2c-btn-mini {
125 | padding: 2px 6px;
126 | font-size: 11px;
127 | line-height: 17px;
128 | }
129 |
130 | .b2c-btn-block {
131 | display: block;
132 | width: 100%;
133 | padding-right: 0;
134 | padding-left: 0;
135 | -webkit-box-sizing: border-box;
136 | -moz-box-sizing: border-box;
137 | box-sizing: border-box;
138 | }
139 |
140 | .b2c-btn-block + .b2c-btn-block {
141 | margin-top: 5px;
142 | }
143 |
144 | input[type="submit"].b2c-btn-block,
145 | input[type="reset"].b2c-btn-block,
146 | input[type="button"].b2c-btn-block {
147 | width: 100%;
148 | }
149 |
150 | .b2c-btn-primary.active,
151 | .b2c-btn-warning.active,
152 | .b2c-btn-danger.active,
153 | .b2c-btn-success.active,
154 | .b2c-btn-info.active,
155 | .b2c-btn-inverse.active {
156 | color: rgba(255, 255, 255, 0.75);
157 | }
158 |
159 | .b2c-btn {
160 | border-color: #c5c5c5;
161 | border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);
162 | }
163 |
164 | .b2c-btn-primary {
165 | color: #ffffff;
166 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
167 | background-color: #006dcc;
168 | *background-color: #0044cc;
169 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
170 | background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
171 | background-image: -o-linear-gradient(top, #0088cc, #0044cc);
172 | background-image: linear-gradient(to bottom, #0088cc, #0044cc);
173 | background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
174 | background-repeat: repeat-x;
175 | border-color: #0044cc #0044cc #002a80;
176 | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
177 | filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
178 | filter: progid:dximagetransform.microsoft.gradient(enabled=false);
179 | }
180 |
181 | .b2c-btn-primary:hover,
182 | .b2c-btn-primary:active,
183 | .b2c-btn-primary.active,
184 | .b2c-btn-primary.disabled,
185 | .b2c-btn-primary[disabled] {
186 | color: #ffffff;
187 | background-color: #0044cc;
188 | *background-color: #003bb3;
189 | }
190 |
191 | .b2c-btn-primary:active,
192 | .b2c-btn-primary.active {
193 | background-color: #003399 \9;
194 | }
195 |
196 | .b2c-btn-warning {
197 | color: #ffffff;
198 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
199 | background-color: #faa732;
200 | *background-color: #f89406;
201 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
202 | background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
203 | background-image: -o-linear-gradient(top, #fbb450, #f89406);
204 | background-image: linear-gradient(to bottom, #fbb450, #f89406);
205 | background-image: -moz-linear-gradient(top, #fbb450, #f89406);
206 | background-repeat: repeat-x;
207 | border-color: #f89406 #f89406 #ad6704;
208 | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
209 | filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
210 | filter: progid:dximagetransform.microsoft.gradient(enabled=false);
211 | }
212 |
213 | .b2c-btn-warning:hover,
214 | .b2c-btn-warning:active,
215 | .b2c-btn-warning.active,
216 | .b2c-btn-warning.disabled,
217 | .b2c-btn-warning[disabled] {
218 | color: #ffffff;
219 | background-color: #f89406;
220 | *background-color: #df8505;
221 | }
222 |
223 | .b2c-btn-warning:active,
224 | .b2c-btn-warning.active {
225 | background-color: #c67605 \9;
226 | }
227 |
228 | .b2c-btn-danger {
229 | color: #ffffff;
230 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
231 | background-color: #da4f49;
232 | *background-color: #bd362f;
233 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
234 | background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
235 | background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
236 | background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
237 | background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
238 | background-repeat: repeat-x;
239 | border-color: #bd362f #bd362f #802420;
240 | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
241 | filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
242 | filter: progid:dximagetransform.microsoft.gradient(enabled=false);
243 | }
244 |
245 | .b2c-btn-danger:hover,
246 | .b2c-btn-danger:active,
247 | .b2c-btn-danger.active,
248 | .b2c-btn-danger.disabled,
249 | .b2c-btn-danger[disabled] {
250 | color: #ffffff;
251 | background-color: #bd362f;
252 | *background-color: #a9302a;
253 | }
254 |
255 | .b2c-btn-danger:active,
256 | .b2c-btn-danger.active {
257 | background-color: #942a25 \9;
258 | }
259 |
260 | .b2c-btn-success {
261 | color: #ffffff;
262 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
263 | background-color: #5bb75b;
264 | *background-color: #51a351;
265 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
266 | background-image: -webkit-linear-gradient(top, #62c462, #51a351);
267 | background-image: -o-linear-gradient(top, #62c462, #51a351);
268 | background-image: linear-gradient(to bottom, #62c462, #51a351);
269 | background-image: -moz-linear-gradient(top, #62c462, #51a351);
270 | background-repeat: repeat-x;
271 | border-color: #51a351 #51a351 #387038;
272 | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
273 | filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
274 | filter: progid:dximagetransform.microsoft.gradient(enabled=false);
275 | }
276 |
277 | .b2c-btn-success:hover,
278 | .b2c-btn-success:active,
279 | .b2c-btn-success.active,
280 | .b2c-btn-success.disabled,
281 | .b2c-btn-success[disabled] {
282 | color: #ffffff;
283 | background-color: #51a351;
284 | *background-color: #499249;
285 | }
286 |
287 | .b2c-btn-success:active,
288 | .b2c-btn-success.active {
289 | background-color: #408140 \9;
290 | }
291 |
292 | .b2c-btn-info {
293 | color: #ffffff;
294 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
295 | background-color: #49afcd;
296 | *background-color: #2f96b4;
297 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
298 | background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
299 | background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
300 | background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
301 | background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
302 | background-repeat: repeat-x;
303 | border-color: #2f96b4 #2f96b4 #1f6377;
304 | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
305 | filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
306 | filter: progid:dximagetransform.microsoft.gradient(enabled=false);
307 | }
308 |
309 | .b2c-btn-info:hover,
310 | .b2c-btn-info:active,
311 | .b2c-btn-info.active,
312 | .b2c-btn-info.disabled,
313 | .b2c-btn-info[disabled] {
314 | color: #ffffff;
315 | background-color: #2f96b4;
316 | *background-color: #2a85a0;
317 | }
318 |
319 | .b2c-btn-info:active,
320 | .b2c-btn-info.active {
321 | background-color: #24748c \9;
322 | }
323 |
324 | .b2c-btn-inverse {
325 | color: #ffffff;
326 | text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
327 | background-color: #363636;
328 | *background-color: #222222;
329 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
330 | background-image: -webkit-linear-gradient(top, #444444, #222222);
331 | background-image: -o-linear-gradient(top, #444444, #222222);
332 | background-image: linear-gradient(to bottom, #444444, #222222);
333 | background-image: -moz-linear-gradient(top, #444444, #222222);
334 | background-repeat: repeat-x;
335 | border-color: #222222 #222222 #000000;
336 | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
337 | filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
338 | filter: progid:dximagetransform.microsoft.gradient(enabled=false);
339 | }
340 |
341 | .b2c-btn-inverse:hover,
342 | .b2c-btn-inverse:active,
343 | .b2c-btn-inverse.active,
344 | .b2c-btn-inverse.disabled,
345 | .b2c-btn-inverse[disabled] {
346 | color: #ffffff;
347 | background-color: #222222;
348 | *background-color: #151515;
349 | }
350 |
351 | .b2c-btn-inverse:active,
352 | .b2c-btn-inverse.active {
353 | background-color: #080808 \9;
354 | }
355 |
356 | button.b2c-btn,
357 | input[type="submit"].b2c-btn {
358 | *padding-top: 3px;
359 | *padding-bottom: 3px;
360 | }
361 |
362 | button.b2c-btn::-moz-focus-inner,
363 | input[type="submit"].b2c-btn::-moz-focus-inner {
364 | padding: 0;
365 | border: 0;
366 | }
367 |
368 | button.b2c-btn.b2c-btn-large,
369 | input[type="submit"].b2c-btn.b2c-btn-large {
370 | *padding-top: 7px;
371 | *padding-bottom: 7px;
372 | }
373 |
374 | button.b2c-btn.b2c-btn-small,
375 | input[type="submit"].b2c-btn.b2c-btn-small {
376 | *padding-top: 3px;
377 | *padding-bottom: 3px;
378 | }
379 |
380 | button.b2c-btn.b2c-btn-mini,
381 | input[type="submit"].b2c-btn.b2c-btn-mini {
382 | *padding-top: 1px;
383 | *padding-bottom: 1px;
384 | }
385 |
386 | .b2c-input-append {
387 | display: inline-block;
388 | margin-bottom: 10px;
389 | white-space: nowrap;
390 | vertical-align: middle;
391 | }
392 |
393 | .b2c-input-append input,
394 | .b2c-input-append select,
395 | .b2c-input-append .b2c-uneditable-input,
396 | .b2c-input-append .b2c-dropdown-menu,
397 | .b2c-input-append .b2c-popover {
398 | font-size: 14px;
399 | }
400 |
401 | .b2c-input-append input,
402 | .b2c-input-append select,
403 | .b2c-input-append .b2c-uneditable-input {
404 | position: relative;
405 | margin-bottom: 0;
406 | *margin-left: 0;
407 | vertical-align: top;
408 | -webkit-border-radius: 0 4px 4px 0;
409 | -moz-border-radius: 0 4px 4px 0;
410 | border-radius: 0 4px 4px 0;
411 | }
412 |
413 | .b2c-input-append input:focus,
414 | .b2c-input-append select:focus,
415 | .b2c-input-append .b2c-b2c-uneditable-input:focus {
416 | z-index: 2;
417 | }
418 |
419 | .b2c-input-append .b2c-add-on {
420 | display: inline-block;
421 | width: auto;
422 | height: 20px;
423 | min-width: 16px;
424 | padding: 4px 5px;
425 | font-size: 14px;
426 | font-weight: normal;
427 | line-height: 20px;
428 | text-align: center;
429 | text-shadow: 0 1px 0 #ffffff;
430 | background-color: #eeeeee;
431 | border: 1px solid #ccc;
432 | }
433 |
434 | .b2c-input-append .b2c-add-on,
435 | .b2c-input-append .b2c-btn,
436 | .b2c-input-append .b2c-btn-group > .b2c-dropdown-toggle {
437 | vertical-align: top;
438 | -webkit-border-radius: 0;
439 | -moz-border-radius: 0;
440 | border-radius: 0;
441 | }
442 |
443 | .b2c-input-append .b2c-active {
444 | background-color: #a9dba9;
445 | border-color: #46a546;
446 | }
447 |
448 | .b2c-input-append input,
449 | .b2c-input-append select,
450 | .b2c-input-append .b2c-uneditable-input {
451 | -webkit-border-radius: 4px 0 0 4px;
452 | -moz-border-radius: 4px 0 0 4px;
453 | border-radius: 4px 0 0 4px;
454 | }
455 |
456 | .b2c-input-append .b2c-add-on,
457 | .b2c-input-append .b2c-btn,
458 | .b2c-input-append .b2c-btn-group {
459 | margin-left: -1px;
460 | }
461 |
462 | .b2c-input-append .b2c-add-on:last-child,
463 | .b2c-input-append .b2c-btn:last-child,
464 | .b2c-input-append .b2c-btn-group:last-child > .b2c-dropdown-toggle {
465 | -webkit-border-radius: 0 4px 4px 0;
466 | -moz-border-radius: 0 4px 4px 0;
467 | border-radius: 0 4px 4px 0;
468 | }
--------------------------------------------------------------------------------
/chromeipass/chromeipass.css:
--------------------------------------------------------------------------------
1 | .cip-ui-autocomplete li.cip-ui-menu-item {
2 | text-align: left !important;
3 | font-size: 12px !important;
4 | font-weight: normal !important;
5 | font-style: normal !important;
6 | font-family: Verdana, Arial, sans-serif !important;
7 | color: #222222 !important;
8 | }
9 | .cip-ui-dialog-titlebar-close {
10 | visibility: hidden !important;
11 | }
12 | .cip-ui-widget-overlay {
13 | background: none !important;
14 | z-index: 2147483601 !important;
15 | }
16 | .cip-ui-dialog {
17 | z-index: 2147483602 !important;
18 | }
19 | .cip-ui-dialog .cip-ui-dialog-title {
20 | font-size:.9em !important;
21 | }
22 | .cip-ui-dialog .cip-ui-dialog-titlebar {
23 | padding:.1em .5em !important;
24 | }
25 | .cip-ui-dialog-content {
26 | font-size: .9em !important;
27 | }
28 |
29 | #cip-genpw-dialog {
30 | text-align: left !important;
31 | }
32 | #cip-genpw-dialog button {
33 | height: 26px !important;
34 | }
35 | .cip-genpw-clearfix:after {
36 | clear: both;
37 | line-height: 0;
38 | content: "";
39 | display: table;
40 | }
41 | .cip-genpw-icon {
42 | position: absolute;
43 | cursor: pointer;
44 | }
45 | .cip-genpw-icon.cip-icon-key-small {
46 | width: 16px;
47 | height: 16px;
48 | background-image: url(chrome-extension://__MSG_@@extension_id__/icons/key_16x16.png);
49 | }
50 | .cip-genpw-icon.cip-icon-key-big {
51 | width: 24px;
52 | height: 24px;
53 | background-image: url(chrome-extension://__MSG_@@extension_id__/icons/key_24x24.png);
54 | }
55 | .cip-genpw-password-frame {
56 | margin-top: 5px !important;
57 | margin-bottom: 5px !important;
58 | }
59 | .cip-genpw-password-frame > * {
60 | height: 20px !important;
61 | font-size: 11px !important;
62 | }
63 | .cip-genpw-textfield {
64 | background: none !important;
65 | font-size: 11px !important;
66 | display: inline !important;
67 | border: 1px solid rgb(170, 170, 170) !important;
68 | padding: 1px 2px !important;
69 | max-width: none !important;
70 | min-width: 0 !important;
71 | font-size: 1em !important;
72 | width: 240px !important;
73 | padding-left: 5px !important;
74 | }
75 | #cip-genpw-quality {
76 | width: 50px !important;
77 | padding-top: 1px !important;
78 | padding-bottom: 1px !important;
79 | }
80 | .cip-genpw-label {
81 | display: block !important;
82 | margin: 5px 0 !important;
83 | }
84 | .cip-genpw-checkbox {
85 | vertical-align: middle !important;
86 | }
87 | #cip-genpw-btn-fillin {
88 | margin-right: 5px;
89 | }
90 |
91 | .b2c-modal-backdrop {
92 | position: fixed;
93 | top: 0;
94 | right: 0;
95 | bottom: 0;
96 | left: 0;
97 | z-index: 2147483645;
98 | }
99 | .b2c-modal-backdrop:after {
100 | content:'';
101 | position: fixed;
102 | top: 0;
103 | right: 0;
104 | bottom: 0;
105 | left: 0;
106 | background-color: #000000;
107 | opacity: 0.8;
108 | filter: alpha(opacity=80);
109 | }
110 | #b2c-cipDefine-fields {
111 | z-index: 2147483646;
112 | }
113 | #b2c-cipDefine-description {
114 | z-index: 2147483646;
115 | color: #efefef;
116 | border: 2px solid #555555;
117 | padding: 7px 5px;
118 | position: absolute;
119 | top: 100px;
120 | left: 150px;
121 | text-align: left;
122 | cursor: pointer;
123 | background-color:rgba(255,255,255,0.3);
124 | font-size: 15px;
125 | }
126 | #b2c-cipDefine-description div:first-of-type {
127 | margin-top: 0;
128 | padding-top: 0;
129 | text-align: left;
130 | color: #efefef;
131 | padding-bottom: 8px;
132 | font-weight: bold;
133 | font-size: 160%;
134 | }
135 | #b2c-cipDefine-description p {
136 | margin-top: 10px;
137 | padding-top: 10px;
138 | color: #efefef;
139 | border-top: 2px solid #666666;
140 | line-height: 110%;
141 | }
142 | #b2c-help {
143 | margin-bottom: 3px;
144 | }
145 | .b2c-fixed-field {
146 | position: absolute;
147 | border: 2px solid #efefef;
148 | cursor: pointer;
149 | z-index: 2147483646;
150 | text-align: left;
151 | font-weight: bold;
152 | background-color:rgba(239,239,239,0.4);
153 | }
154 | .b2c-fixed-hover-field {
155 | border: 2px solid orange;
156 | background-color:rgba(255,165,239,0.4);
157 | }
158 | .b2c-fixed-password-field {
159 | border: 2px solid red;
160 | color: #efefef;
161 | background-color:rgba(255,0,0,0.4);
162 | }
163 | .b2c-fixed-username-field {
164 | border: 2px solid limegreen;
165 | color: #efefef;
166 | background-color:rgba(50,205,50,0.4);
167 | }
168 | .b2c-fixed-string-field {
169 | border: 2px solid deepskyblue;
170 | color: #efefef;
171 | background-color:rgba(30,144,255,0.4);
172 | }
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_bang_aqua-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_bang_aqua-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_bang_aqua_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_bang_aqua_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_bang_blue-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_bang_blue-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_bang_blue_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_bang_blue_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_bang_green-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_bang_green-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_bang_green_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_bang_green_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_bang_grey-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_bang_grey-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_bang_grey_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_bang_grey_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_bang_orange-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_bang_orange-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_bang_orange_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_bang_orange_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_bang_pink-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_bang_pink-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_bang_pink_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_bang_pink_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_bang_purple-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_bang_purple-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_bang_purple_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_bang_purple_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_bang_red-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_bang_red-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_bang_red_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_bang_red_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_bang_yellow-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_bang_yellow-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_bang_yellow_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_bang_yellow_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_cross_aqua-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_cross_aqua-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_cross_aqua_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_cross_aqua_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_cross_blue-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_cross_blue-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_cross_blue_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_cross_blue_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_cross_green-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_cross_green-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_cross_green_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_cross_green_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_cross_grey-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_cross_grey-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_cross_grey_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_cross_grey_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_cross_orange-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_cross_orange-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_cross_orange_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_cross_orange_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_cross_pink-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_cross_pink-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_cross_pink_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_cross_pink_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_cross_purple-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_cross_purple-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_cross_purple_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_cross_purple_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_cross_red-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_cross_red-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_cross_red_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_cross_red_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_cross_yellow-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_cross_yellow-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_cross_yellow_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_cross_yellow_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_bang_aqua-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_bang_aqua-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_bang_aqua_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_bang_aqua_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_bang_blue-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_bang_blue-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_bang_blue_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_bang_blue_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_bang_green-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_bang_green-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_bang_green_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_bang_green_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_bang_grey-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_bang_grey-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_bang_grey_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_bang_grey_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_bang_orange-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_bang_orange-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_bang_orange_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_bang_orange_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_bang_pink-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_bang_pink-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_bang_pink_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_bang_pink_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_bang_purple-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_bang_purple-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_bang_purple_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_bang_purple_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_bang_red-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_bang_red-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_bang_red_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_bang_red_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_bang_yellow-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_bang_yellow-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_bang_yellow_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_bang_yellow_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_cross_aqua-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_cross_aqua-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_cross_aqua_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_cross_aqua_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_cross_blue-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_cross_blue-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_cross_blue_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_cross_blue_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_cross_green-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_cross_green-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_cross_green_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_cross_green_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_cross_grey-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_cross_grey-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_cross_grey_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_cross_grey_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_cross_orange-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_cross_orange-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_cross_orange_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_cross_orange_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_cross_pink-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_cross_pink-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_cross_pink_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_cross_pink_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_cross_purple-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_cross_purple-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_cross_purple_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_cross_purple_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_cross_red-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_cross_red-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_cross_red_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_cross_red_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_cross_yellow-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_cross_yellow-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_cross_yellow_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_cross_yellow_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_normal_aqua-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_normal_aqua-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_normal_aqua_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_normal_aqua_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_normal_blue-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_normal_blue-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_normal_blue_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_normal_blue_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_normal_green-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_normal_green-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_normal_green_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_normal_green_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_normal_grey-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_normal_grey-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_normal_grey_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_normal_grey_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_normal_orange-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_normal_orange-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_normal_orange_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_normal_orange_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_normal_pink-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_normal_pink-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_normal_pink_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_normal_pink_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_normal_purple-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_normal_purple-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_normal_purple_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_normal_purple_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_normal_red-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_normal_red-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_normal_red_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_normal_red_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_normal_yellow-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_normal_yellow-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_normal_yellow_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_normal_yellow_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_questionmark_aqua-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_questionmark_aqua-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_questionmark_aqua_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_questionmark_aqua_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_questionmark_blue-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_questionmark_blue-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_questionmark_blue_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_questionmark_blue_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_questionmark_green-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_questionmark_green-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_questionmark_green_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_questionmark_green_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_questionmark_grey-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_questionmark_grey-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_questionmark_grey_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_questionmark_grey_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_questionmark_orange-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_questionmark_orange-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_questionmark_orange_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_questionmark_orange_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_questionmark_pink-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_questionmark_pink-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_questionmark_pink_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_questionmark_pink_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_questionmark_purple-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_questionmark_purple-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_questionmark_purple_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_questionmark_purple_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_questionmark_red-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_questionmark_red-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_questionmark_red_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_questionmark_red_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_questionmark_yellow-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_questionmark_yellow-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_new_questionmark_yellow_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_new_questionmark_yellow_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_normal_aqua-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_normal_aqua-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_normal_aqua_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_normal_aqua_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_normal_blue-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_normal_blue-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_normal_blue_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_normal_blue_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_normal_green-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_normal_green-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_normal_green_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_normal_green_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_normal_grey-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_normal_grey-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_normal_grey_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_normal_grey_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_normal_orange-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_normal_orange-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_normal_orange_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_normal_orange_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_normal_pink-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_normal_pink-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_normal_pink_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_normal_pink_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_normal_purple-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_normal_purple-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_normal_purple_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_normal_purple_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_normal_red-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_normal_red-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_normal_red_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_normal_red_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_normal_yellow-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_normal_yellow-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_normal_yellow_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_normal_yellow_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_questionmark_aqua-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_questionmark_aqua-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_questionmark_aqua_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_questionmark_aqua_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_questionmark_blue-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_questionmark_blue-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_questionmark_blue_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_questionmark_blue_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_questionmark_green-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_questionmark_green-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_questionmark_green_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_questionmark_green_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_questionmark_grey-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_questionmark_grey-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_questionmark_grey_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_questionmark_grey_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_questionmark_orange-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_questionmark_orange-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_questionmark_orange_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_questionmark_orange_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_questionmark_pink-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_questionmark_pink-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_questionmark_pink_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_questionmark_pink_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_questionmark_purple-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_questionmark_purple-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_questionmark_purple_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_questionmark_purple_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_questionmark_red-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_questionmark_red-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_questionmark_red_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_questionmark_red_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_questionmark_yellow-inverse_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_questionmark_yellow-inverse_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_questionmark_yellow_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_questionmark_yellow_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_remember_red_background_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_remember_red_background_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/19x19/icon_remember_red_lock_19x19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/19x19/icon_remember_red_lock_19x19.png
--------------------------------------------------------------------------------
/chromeipass/icons/keepass_128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/keepass_128x128.png
--------------------------------------------------------------------------------
/chromeipass/icons/keepass_16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/keepass_16x16.png
--------------------------------------------------------------------------------
/chromeipass/icons/keepass_38x38.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/keepass_38x38.png
--------------------------------------------------------------------------------
/chromeipass/icons/keepass_48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/keepass_48x48.png
--------------------------------------------------------------------------------
/chromeipass/icons/key_16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/key_16x16.png
--------------------------------------------------------------------------------
/chromeipass/icons/key_24x24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/icons/key_24x24.png
--------------------------------------------------------------------------------
/chromeipass/images/ui-bg_flat_0_aaaaaa_40x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/images/ui-bg_flat_0_aaaaaa_40x100.png
--------------------------------------------------------------------------------
/chromeipass/images/ui-bg_flat_75_ffffff_40x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/images/ui-bg_flat_75_ffffff_40x100.png
--------------------------------------------------------------------------------
/chromeipass/images/ui-bg_glass_55_fbf9ee_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/images/ui-bg_glass_55_fbf9ee_1x400.png
--------------------------------------------------------------------------------
/chromeipass/images/ui-bg_glass_65_ffffff_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/images/ui-bg_glass_65_ffffff_1x400.png
--------------------------------------------------------------------------------
/chromeipass/images/ui-bg_glass_75_dadada_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/images/ui-bg_glass_75_dadada_1x400.png
--------------------------------------------------------------------------------
/chromeipass/images/ui-bg_glass_75_e6e6e6_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/images/ui-bg_glass_75_e6e6e6_1x400.png
--------------------------------------------------------------------------------
/chromeipass/images/ui-bg_glass_95_fef1ec_1x400.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/images/ui-bg_glass_95_fef1ec_1x400.png
--------------------------------------------------------------------------------
/chromeipass/images/ui-bg_highlight-soft_75_cccccc_1x100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/images/ui-bg_highlight-soft_75_cccccc_1x100.png
--------------------------------------------------------------------------------
/chromeipass/jquery-ui-1.10.2.custom.min.css:
--------------------------------------------------------------------------------
1 | /*! jQuery UI - v1.10.2 - 2013-03-26
2 | * http://jqueryui.com
3 | * Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.dialog.css, jquery.ui.menu.css
4 | * Copyright 2013 jQuery Foundation and other contributors Licensed MIT */
5 |
6 | /*
7 | removed all classes with "icon"
8 | replaced .ui- with .cip-ui-
9 | replaced url(images with url(chrome-extension://__MSG_@@extension_id__/images
10 | */
11 | .cip-ui-helper-hidden{display:none}.cip-ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.cip-ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.cip-ui-helper-clearfix:before,.cip-ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.cip-ui-helper-clearfix:after{clear:both}.cip-ui-helper-clearfix{min-height:0}.cip-ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.cip-ui-front{z-index:100}.cip-ui-state-disabled{cursor:default!important}.cip-ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.cip-ui-resizable{position:relative}.cip-ui-resizable-handle{position:absolute;font-size:.1px;display:block}.cip-ui-resizable-disabled .cip-ui-resizable-handle,.cip-ui-resizable-autohide .cip-ui-resizable-handle{display:none}.cip-ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.cip-ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.cip-ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.cip-ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.cip-ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.cip-ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.cip-ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.cip-ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.cip-ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.cip-ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.cip-ui-button,.cip-ui-button:link,.cip-ui-button:visited,.cip-ui-button:hover,.cip-ui-button:active{text-decoration:none}.cip-ui-button .cip-ui-button-text{display:block;line-height:normal}.cip-ui-button-text-only .cip-ui-button-text{padding:.4em 1em}input.cip-ui-button{padding:.4em 1em}.cip-ui-buttonset{margin-right:7px}.cip-ui-buttonset .cip-ui-button{margin-left:0;margin-right:-.3em}input.cip-ui-button::-moz-focus-inner,button.cip-ui-button::-moz-focus-inner{border:0;padding:0}.cip-ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.cip-ui-dialog .cip-ui-dialog-titlebar{padding:.4em 1em;position:relative}.cip-ui-dialog .cip-ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.cip-ui-dialog .cip-ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:21px;margin:-10px 0 0 0;padding:1px;height:20px}.cip-ui-dialog .cip-ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0;overflow:auto}.cip-ui-dialog .cip-ui-dialog-buttonpane{text-align:left;border-width:1px 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.cip-ui-dialog .cip-ui-dialog-buttonpane .cip-ui-dialog-buttonset{float:right}.cip-ui-dialog .cip-ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.cip-ui-dialog .cip-ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.cip-ui-draggable .cip-ui-dialog-titlebar{cursor:move}.cip-ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:0}.cip-ui-menu .cip-ui-menu{margin-top:-3px;position:absolute}.cip-ui-menu .cip-ui-menu-item{margin:0;padding:0;width:100%}.cip-ui-menu .cip-ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0}.cip-ui-menu .cip-ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:400}.cip-ui-menu .cip-ui-menu-item a.cip-ui-state-focus,.cip-ui-menu .cip-ui-menu-item a.cip-ui-state-active{font-weight:400;margin:-1px}.cip-ui-menu .cip-ui-state-disabled{font-weight:400;margin:.4em 0 .2em;line-height:1.5}.cip-ui-menu .cip-ui-state-disabled a{cursor:default}.cip-ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.cip-ui-widget .cip-ui-widget{font-size:1em}.cip-ui-widget input,.cip-ui-widget select,.cip-ui-widget textarea,.cip-ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.cip-ui-widget-content{border:1px solid #aaa;background:#fff url(chrome-extension://__MSG_@@extension_id__/images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.cip-ui-widget-content a{color:#222}.cip-ui-widget-header{border:1px solid #aaa;background:#ccc url(chrome-extension://__MSG_@@extension_id__/images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold}.cip-ui-widget-header a{color:#222}.cip-ui-state-default,.cip-ui-widget-content .cip-ui-state-default,.cip-ui-widget-header .cip-ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(chrome-extension://__MSG_@@extension_id__/images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555}.cip-ui-state-default a,.cip-ui-state-default a:link,.cip-ui-state-default a:visited{color:#555;text-decoration:none}.cip-ui-state-hover,.cip-ui-widget-content .cip-ui-state-hover,.cip-ui-widget-header .cip-ui-state-hover,.cip-ui-state-focus,.cip-ui-widget-content .cip-ui-state-focus,.cip-ui-widget-header .cip-ui-state-focus{border:1px solid #999;background:#dadada url(chrome-extension://__MSG_@@extension_id__/images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.cip-ui-state-hover a,.cip-ui-state-hover a:hover,.cip-ui-state-hover a:link,.cip-ui-state-hover a:visited{color:#212121;text-decoration:none}.cip-ui-state-active,.cip-ui-widget-content .cip-ui-state-active,.cip-ui-widget-header .cip-ui-state-active{border:1px solid #aaa;background:#fff url(chrome-extension://__MSG_@@extension_id__/images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.cip-ui-state-active a,.cip-ui-state-active a:link,.cip-ui-state-active a:visited{color:#212121;text-decoration:none}.cip-ui-state-highlight,.cip-ui-widget-content .cip-ui-state-highlight,.cip-ui-widget-header .cip-ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(chrome-extension://__MSG_@@extension_id__/images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.cip-ui-state-highlight a,.cip-ui-widget-content .cip-ui-state-highlight a,.cip-ui-widget-header .cip-ui-state-highlight a{color:#363636}.cip-ui-state-error,.cip-ui-widget-content .cip-ui-state-error,.cip-ui-widget-header .cip-ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(chrome-extension://__MSG_@@extension_id__/images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.cip-ui-state-error a,.cip-ui-widget-content .cip-ui-state-error a,.cip-ui-widget-header .cip-ui-state-error a{color:#cd0a0a}.cip-ui-state-error-text,.cip-ui-widget-content .cip-ui-state-error-text,.cip-ui-widget-header .cip-ui-state-error-text{color:#cd0a0a}.cip-ui-priority-primary,.cip-ui-widget-content .cip-ui-priority-primary,.cip-ui-widget-header .cip-ui-priority-primary{font-weight:bold}.cip-ui-priority-secondary,.cip-ui-widget-content .cip-ui-priority-secondary,.cip-ui-widget-header .cip-ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.cip-ui-state-disabled,.cip-ui-widget-content .cip-ui-state-disabled,.cip-ui-widget-header .cip-ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.cip-ui-corner-all,.cip-ui-corner-top,.cip-ui-corner-left,.cip-ui-corner-tl{border-top-left-radius:4px}.cip-ui-corner-all,.cip-ui-corner-top,.cip-ui-corner-right,.cip-ui-corner-tr{border-top-right-radius:4px}.cip-ui-corner-all,.cip-ui-corner-bottom,.cip-ui-corner-left,.cip-ui-corner-bl{border-bottom-left-radius:4px}.cip-ui-corner-all,.cip-ui-corner-bottom,.cip-ui-corner-right,.cip-ui-corner-br{border-bottom-right-radius:4px}.cip-ui-widget-overlay{background:#aaa url(chrome-extension://__MSG_@@extension_id__/images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.cip-ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(chrome-extension://__MSG_@@extension_id__/images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
--------------------------------------------------------------------------------
/chromeipass/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "chromeIPass",
3 | "version": "2.8.1",
4 | "manifest_version": 2,
5 | "description": "KeePass integration for browser Chrome using KeePassHttp",
6 | "icons": {
7 | "16": "icons/keepass_16x16.png",
8 | "48": "icons/keepass_48x48.png",
9 | "128": "icons/keepass_128x128.png"
10 | },
11 |
12 | "browser_action": {
13 | "default_icon": {
14 | "19": "icons/19x19/icon_normal_blue_19x19.png",
15 | "38": "icons/keepass_38x38.png"
16 | },
17 | "default_title": "chromeIPass",
18 | "default_popup": "popups/popup.html"
19 | },
20 |
21 | "options_page": "options/options.html",
22 | "background": {
23 | "scripts": [
24 | "background/aes.js",
25 | "background/cryptoHelpers.js",
26 | "background/utf8.js",
27 | "background/keepass.js",
28 | "background/httpauth.js",
29 | "background/browserAction.js",
30 | "background/page.js",
31 | "background/event.js",
32 | "background/init.js"
33 | ]
34 | },
35 | "content_scripts": [
36 | {
37 | "matches": ["http://*/*", "https://*/*"],
38 | "js": ["jquery-1.11.1.min.js", "jquery-ui-1.10.2.custom.min.js", "chromeipass.js"],
39 | "css": ["jquery-ui-1.10.2.custom.min.css", "bootstrap-btn.css", "chromeipass.css"],
40 | "run_at": "document_idle",
41 | "all_frames": true
42 | }
43 | ],
44 | "commands": {
45 | "fill-username-password": {
46 | "description": "Insert username + password",
47 | "suggested_key": {
48 | "default": "Ctrl+Shift+U",
49 | "mac": "Command+Shift+U"
50 | }
51 | },
52 | "fill-password": {
53 | "description": "Insert a password",
54 | "suggested_key": {
55 | "default": "Ctrl+Shift+P",
56 | "mac": "Command+Shift+P"
57 | }
58 | }
59 | },
60 | "web_accessible_resources": [
61 | "jquery.min.map",
62 | "icons/key_16x16.png",
63 | "icons/key_24x24.png",
64 | "images/ui-bg_flat_0_aaaaaa_40x100.png",
65 | "images/ui-bg_flat_0_aaaaaa_40x100.png",
66 | "images/ui-bg_flat_75_ffffff_40x100.png",
67 | "images/ui-bg_glass_55_fbf9ee_1x400.png",
68 | "images/ui-bg_glass_65_ffffff_1x400.png",
69 | "images/ui-bg_glass_75_dadada_1x400.png",
70 | "images/ui-bg_glass_75_e6e6e6_1x400.png",
71 | "images/ui-bg_glass_95_fef1ec_1x400.png",
72 | "images/ui-bg_highlight-soft_75_cccccc_1x100.png"
73 | ],
74 | "permissions": [
75 | "activeTab",
76 | "contextMenus",
77 | "clipboardWrite",
78 | "tabs",
79 | "webRequest",
80 | "webRequestBlocking",
81 | "https://*/*",
82 | "http://*/*",
83 | "http://localhost:19455/",
84 | "http://localhost/",
85 | "https://raw.github.com/"
86 | ]
87 | }
88 |
--------------------------------------------------------------------------------
/chromeipass/options/bootstrap-responsive.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Responsive v2.3.0
3 | *
4 | * Copyright 2012 Twitter, Inc
5 | * Licensed under the Apache License v2.0
6 | * http://www.apache.org/licenses/LICENSE-2.0
7 | *
8 | * Designed and built with all the love in the world @twitter by @mdo and @fat.
9 | */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@-ms-viewport{width:device-width}.hidden{display:none;visibility:hidden}.visible-phone{display:none!important}.visible-tablet{display:none!important}.hidden-desktop{display:none!important}.visible-desktop{display:inherit!important}@media(min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}}@media(max-width:767px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-phone{display:inherit!important}.hidden-phone{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:inherit!important}.hidden-print{display:none!important}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:30px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:30px}input.span12,textarea.span12,.uneditable-input.span12{width:1156px}input.span11,textarea.span11,.uneditable-input.span11{width:1056px}input.span10,textarea.span10,.uneditable-input.span10{width:956px}input.span9,textarea.span9,.uneditable-input.span9{width:856px}input.span8,textarea.span8,.uneditable-input.span8{width:756px}input.span7,textarea.span7,.uneditable-input.span7{width:656px}input.span6,textarea.span6,.uneditable-input.span6{width:556px}input.span5,textarea.span5,.uneditable-input.span5{width:456px}input.span4,textarea.span4,.uneditable-input.span4{width:356px}input.span3,textarea.span3,.uneditable-input.span3{width:256px}input.span2,textarea.span2,.uneditable-input.span2{width:156px}input.span1,textarea.span1,.uneditable-input.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:710px}input.span11,textarea.span11,.uneditable-input.span11{width:648px}input.span10,textarea.span10,.uneditable-input.span10{width:586px}input.span9,textarea.span9,.uneditable-input.span9{width:524px}input.span8,textarea.span8,.uneditable-input.span8{width:462px}input.span7,textarea.span7,.uneditable-input.span7{width:400px}input.span6,textarea.span6,.uneditable-input.span6{width:338px}input.span5,textarea.span5,.uneditable-input.span5{width:276px}input.span4,textarea.span4,.uneditable-input.span4{width:214px}input.span3,textarea.span3,.uneditable-input.span3{width:152px}input.span2,textarea.span2,.uneditable-input.span2{width:90px}input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}[class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="offset"]:first-child{margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}.controls-row [class*="span"]+[class*="span"]{margin-left:0}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:20px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.media .pull-left,.media .pull-right{display:block;float:none;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:none;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}}
10 |
--------------------------------------------------------------------------------
/chromeipass/options/http-auth-dialog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/options/http-auth-dialog.png
--------------------------------------------------------------------------------
/chromeipass/options/options.js:
--------------------------------------------------------------------------------
1 | if(cIPJQ) {
2 | var $ = cIPJQ.noConflict(true);
3 | }
4 |
5 | $(function() {
6 | options.initMenu();
7 | options.initGeneralSettings();
8 | options.initConnectedDatabases();
9 | options.initSpecifiedCredentialFields();
10 | options.initAbout();
11 | });
12 |
13 | var options = options || {};
14 |
15 | options.settings = typeof(localStorage.settings)=='undefined' ? {} : JSON.parse(localStorage.settings);
16 | options.keyRing = typeof(localStorage.keyRing)=='undefined' ? {} : JSON.parse(localStorage.keyRing);
17 |
18 | options.initMenu = function() {
19 | $(".navbar:first ul.nav:first li a").click(function(e) {
20 | e.preventDefault();
21 | $(".navbar:first ul.nav:first li").removeClass("active");
22 | $(this).parent("li").addClass("active");
23 | $("div.tab").hide();
24 | $("div.tab#tab-" + $(this).attr("href").substring(1)).fadeIn();
25 | });
26 |
27 | $("div.tab:first").show();
28 | }
29 |
30 | options.initGeneralSettings = function() {
31 | $("#tab-general-settings input[type=checkbox]").each(function() {
32 | $(this).attr("checked", options.settings[$(this).attr("name")]);
33 | });
34 |
35 | $("#tab-general-settings input[type=checkbox]").change(function() {
36 | options.settings[$(this).attr("name")] = $(this).is(':checked');
37 | localStorage.settings = JSON.stringify(options.settings);
38 |
39 | chrome.extension.sendMessage({
40 | action: 'load_settings'
41 | });
42 | });
43 |
44 | $("#tab-general-settings input[type=radio]").each(function() {
45 | if($(this).val() == options.settings[$(this).attr("name")]) {
46 | $(this).attr("checked", options.settings[$(this).attr("name")]);
47 | }
48 | });
49 |
50 | $("#tab-general-settings input[type=radio]").change(function() {
51 | options.settings[$(this).attr("name")] = $(this).val();
52 | localStorage.settings = JSON.stringify(options.settings);
53 |
54 | chrome.extension.sendMessage({
55 | action: 'load_settings'
56 | });
57 | });
58 |
59 | chrome.extension.sendMessage({
60 | action: "get_keepasshttp_versions"
61 | }, options.showKeePassHttpVersions);
62 |
63 | $("#tab-general-settings button.checkUpdateKeePassHttp:first").click(function(e) {
64 | e.preventDefault();
65 | $(this).attr("disabled", true);
66 | chrome.extension.sendMessage({
67 | action: "check_update_keepasshttp"
68 | }, options.showKeePassHttpVersions);
69 | });
70 |
71 | $("#showDangerousSettings").click(function() {
72 | $('#dangerousSettings').is(":visible") ? $(this).text("Show these settings anyway") : $(this).text("Hide");
73 | $("#dangerousSettings").toggle();
74 | });
75 |
76 | $("#hostname").val(options.settings["hostname"]);
77 | $("#port").val(options.settings["port"]);
78 | $("#blinkTimeout").val(options.settings["blinkTimeout"]);
79 | $("#blinkMinTimeout").val(options.settings["blinkMinTimeout"]);
80 | $("#allowedRedirect").val(options.settings["allowedRedirect"]);
81 |
82 | $("#portButton").click(function() {
83 | var port = $.trim($("#port").val());
84 | var portNumber = parseInt(port);
85 | if(isNaN(port) || portNumber < 1025 || portNumber > 99999) {
86 | $("#port").closest(".control-group").addClass("error");
87 | alert("The port number has to be in range 1025 - 99999.\nNothing saved!");
88 | return;
89 | }
90 |
91 | options.settings["port"] = portNumber.toString();
92 | $("#port").closest(".control-group").removeClass("error").addClass("success");
93 | setTimeout(function() {$("#port").closest(".control-group").removeClass("success")}, 2500);
94 |
95 | localStorage.settings = JSON.stringify(options.settings);
96 |
97 | chrome.extension.sendMessage({
98 | action: 'load_settings'
99 | });
100 | });
101 |
102 | $("#hostnameButton").click(function() {
103 | var hostname = $("#hostname").val();
104 | if($.trim(hostname) == "") {
105 | $("#hostname").closest(".control-group").addClass("error");
106 | alert("Hostname cannot be empty.\nNothing saved!");
107 | return;
108 | }
109 |
110 | options.settings["hostname"] = hostname;
111 | $("#hostname").closest(".control-group").removeClass("error").addClass("success");
112 | setTimeout(function() {$("#hostname").closest(".control-group").removeClass("success")}, 2500);
113 |
114 | localStorage.settings = JSON.stringify(options.settings);
115 |
116 | chrome.extension.sendMessage({
117 | action: 'load_settings'
118 | });
119 | });
120 |
121 | $("#blinkTimeoutButton").click(function(){
122 | var blinkTimeout = $.trim($("#blinkTimeout").val());
123 | var blinkTimeoutval = parseInt(blinkTimeout);
124 |
125 | options.settings["blinkTimeout"] = blinkTimeoutval.toString();
126 | $("#blinkTimeout").closest(".control-group").removeClass("error").addClass("success");
127 | setTimeout(function() {$("#blinkTimeout").closest(".control-group").removeClass("success")}, 2500);
128 |
129 | localStorage.settings = JSON.stringify(options.settings);
130 |
131 | chrome.extension.sendMessage({
132 | action: 'load_settings'
133 | });
134 | });
135 |
136 | $("#blinkMinTimeoutButton").click(function(){
137 | var blinkMinTimeout = $.trim($("#blinkMinTimeout").val());
138 | var blinkMinTimeoutval = parseInt(blinkMinTimeout);
139 |
140 | options.settings["blinkMinTimeout"] = blinkMinTimeoutval.toString();
141 | $("#blinkMinTimeout").closest(".control-group").removeClass("error").addClass("success");
142 | setTimeout(function() {$("#blinkMinTimeout").closest(".control-group").removeClass("success")}, 2500);
143 |
144 | localStorage.settings = JSON.stringify(options.settings);
145 |
146 | chrome.extension.sendMessage({
147 | action: 'load_settings'
148 | });
149 | });
150 |
151 | $("#allowedRedirectButton").click(function(){
152 | var allowedRedirect = $.trim($("#allowedRedirect").val());
153 | var allowedRedirectval = parseInt(allowedRedirect);
154 |
155 | options.settings["allowedRedirect"] = allowedRedirectval.toString();
156 | $("#allowedRedirect").closest(".control-group").removeClass("error").addClass("success");
157 | setTimeout(function() {$("#allowedRedirect").closest(".control-group").removeClass("success")}, 2500);
158 |
159 | localStorage.settings = JSON.stringify(options.settings);
160 |
161 | chrome.extension.sendMessage({
162 | action: 'load_settings'
163 | });
164 | });
165 | };
166 |
167 | options.showKeePassHttpVersions = function(response) {
168 | if(response.current <= 0) {
169 | response.current = "unknown";
170 | }
171 | if(response.latest <= 0) {
172 | response.latest = "unknown";
173 | }
174 | $("#tab-general-settings .kphVersion:first em.yourVersion:first").text(response.current);
175 | $("#tab-general-settings .kphVersion:first em.latestVersion:first").text(response.latest);
176 |
177 | $("#tab-about em.versionKPH").text(response.current);
178 |
179 | $("#tab-general-settings button.checkUpdateKeePassHttp:first").attr("disabled", false);
180 | }
181 |
182 | options.initConnectedDatabases = function() {
183 | $("#dialogDeleteConnectedDatabase").modal({keyboard: true, show: false, backdrop: true});
184 | $("#tab-connected-databases tr.clone:first button.delete:first").click(function(e) {
185 | e.preventDefault();
186 | $("#dialogDeleteConnectedDatabase").data("hash", $(this).closest("tr").data("hash"));
187 | $("#dialogDeleteConnectedDatabase .modal-body:first span:first").text($(this).closest("tr").children("td:first").text());
188 | $("#dialogDeleteConnectedDatabase").modal("show");
189 | });
190 |
191 | $("#dialogDeleteConnectedDatabase .modal-footer:first button.yes:first").click(function(e) {
192 | $("#dialogDeleteConnectedDatabase").modal("hide");
193 |
194 | var $hash = $("#dialogDeleteConnectedDatabase").data("hash");
195 | $("#tab-connected-databases #tr-cd-" + $hash).remove();
196 |
197 | delete options.keyRing[$hash];
198 | localStorage.keyRing = JSON.stringify(options.keyRing);
199 |
200 | chrome.extension.sendMessage({
201 | action: 'load_keyring'
202 | });
203 |
204 | if($("#tab-connected-databases table tbody:first tr").length > 2) {
205 | $("#tab-connected-databases table tbody:first tr.empty:first").hide();
206 | }
207 | else {
208 | $("#tab-connected-databases table tbody:first tr.empty:first").show();
209 | }
210 | });
211 |
212 | $("#tab-connected-databases tr.clone:first .dropdown-menu:first").width("230px");
213 |
214 | $("#tab-connected-databases tr.clone:first .color.dropdown .dropdown-menu a").click(function(e) {
215 | e.preventDefault();
216 | var $icon = $(this).attr("href").substring(1);
217 | var $hash = $(this).closest("tr").data("hash");
218 |
219 | $(this).parent().parent().find("a.dropdown-toggle:first").find("img:first").attr("src", "/icons/19x19/icon_normal_" + $icon + "_19x19.png");
220 |
221 | options.keyRing[$hash].icon = $icon;
222 | localStorage.keyRing = JSON.stringify(options.keyRing);
223 | chrome.extension.sendMessage({
224 | action: 'load_keyring'
225 | });
226 | });
227 |
228 | var $trClone = $("#tab-connected-databases table tr.clone:first").clone(true);
229 | $trClone.removeClass("clone");
230 | for(var hash in options.keyRing) {
231 | var $tr = $trClone.clone(true);
232 | $tr.data("hash", hash);
233 | $tr.attr("id", "tr-cd-" + hash);
234 |
235 | var $icon = options.keyRing[hash].icon || "blue";
236 | $("a.dropdown-toggle:first img:first", $tr).attr("src", "/icons/19x19/icon_normal_" + $icon + "_19x19.png");
237 |
238 | $tr.children("td:first").text(options.keyRing[hash].id);
239 | var lastUsed = (options.keyRing[hash].lastUsed) ? new Date(options.keyRing[hash].lastUsed).toLocaleString() : "unknown";
240 | $tr.children("td:eq(2)").text(lastUsed);
241 | var date = (options.keyRing[hash].created) ? new Date(options.keyRing[hash].created).toLocaleDateString() : "unknown";
242 | $tr.children("td:eq(3)").text(date);
243 | $("#tab-connected-databases table tbody:first").append($tr);
244 | }
245 |
246 | if($("#tab-connected-databases table tbody:first tr").length > 2) {
247 | $("#tab-connected-databases table tbody:first tr.empty:first").hide();
248 | }
249 | else {
250 | $("#tab-connected-databases table tbody:first tr.empty:first").show();
251 | }
252 | $("#connect-button").click(function() {
253 | chrome.extension.sendMessage({
254 | action: "associate"
255 | });
256 | });
257 | }
258 |
259 | options.initSpecifiedCredentialFields = function() {
260 | $("#dialogDeleteSpecifiedCredentialFields").modal({keyboard: true, show: false, backdrop: true});
261 | $("#tab-specified-fields tr.clone:first button.delete:first").click(function(e) {
262 | e.preventDefault();
263 | $("#dialogDeleteSpecifiedCredentialFields").data("url", $(this).closest("tr").data("url"));
264 | $("#dialogDeleteSpecifiedCredentialFields").data("tr-id", $(this).closest("tr").attr("id"));
265 | $("#dialogDeleteSpecifiedCredentialFields .modal-body:first strong:first").text($(this).closest("tr").children("td:first").text());
266 | $("#dialogDeleteSpecifiedCredentialFields").modal("show");
267 | });
268 |
269 | $("#dialogDeleteSpecifiedCredentialFields .modal-footer:first button.yes:first").click(function(e) {
270 | $("#dialogDeleteSpecifiedCredentialFields").modal("hide");
271 |
272 | var $url = $("#dialogDeleteSpecifiedCredentialFields").data("url");
273 | var $trId = $("#dialogDeleteSpecifiedCredentialFields").data("tr-id");
274 | $("#tab-specified-fields #" + $trId).remove();
275 |
276 | delete options.settings["defined-credential-fields"][$url];
277 | localStorage.settings = JSON.stringify(options.settings);
278 |
279 | chrome.extension.sendMessage({
280 | action: 'load_settings'
281 | });
282 |
283 | if($("#tab-specified-fields table tbody:first tr").length > 2) {
284 | $("#tab-specified-fields table tbody:first tr.empty:first").hide();
285 | }
286 | else {
287 | $("#tab-specified-fields table tbody:first tr.empty:first").show();
288 | }
289 | });
290 |
291 | var $trClone = $("#tab-specified-fields table tr.clone:first").clone(true);
292 | $trClone.removeClass("clone");
293 | var counter = 1;
294 | for(var url in options.settings["defined-credential-fields"]) {
295 | var $tr = $trClone.clone(true);
296 | $tr.data("url", url);
297 | $tr.attr("id", "tr-scf" + counter);
298 | counter += 1;
299 |
300 | $tr.children("td:first").text(url);
301 | $("#tab-specified-fields table tbody:first").append($tr);
302 | }
303 |
304 | if($("#tab-specified-fields table tbody:first tr").length > 2) {
305 | $("#tab-specified-fields table tbody:first tr.empty:first").hide();
306 | }
307 | else {
308 | $("#tab-specified-fields table tbody:first tr.empty:first").show();
309 | }
310 | }
311 |
312 | options.initAbout = function() {
313 | $("#tab-about em.versionCIP").text(chrome.app.getDetails().version);
314 | }
315 |
--------------------------------------------------------------------------------
/chromeipass/popups/popup.css:
--------------------------------------------------------------------------------
1 | body {
2 | font-family: sans-serif;
3 | min-width:357px;
4 | overflow-x:hidden;
5 | background: #eee;
6 | font-size: 15px;
7 | }
8 | .credentials ul {
9 | margin-left: 0;
10 | margin-right: 0;
11 | padding-left: 0;
12 | padding-right: 0;
13 | list-style-position: inside;
14 | }
15 | .credentials li {
16 | list-style: none;
17 | padding-top: 1px;
18 | padding-bottom: 1px;
19 | padding-left: 10px;
20 | padding-right: 5px;
21 | margin-left: 10px;
22 | margin-right: 5px;
23 | }
24 | .credentials a {
25 | cursor: pointer;
26 | display: block;
27 | color: #336;
28 | }
29 | .credentials li:hover {
30 | cursor: pointer;
31 | background: #ccc;
32 | }
33 |
34 | .settings {
35 | padding-bottom: 10px;
36 | margin-bottom: 10px;
37 | border-bottom: 1px solid #333;
38 | font-size: 90%;
39 | }
40 | .settings label {
41 | display: block;
42 | }
43 | .settings label input {
44 | vertical-align: middle;
45 | }
46 | .settings .description {
47 | margin-top: 3px;
48 | font-size: 80%;
49 | color: #787878;
50 | }
51 | .small {
52 | margin-top: 3px;
53 | margin-left: 12px;
54 | font-size: 80%;
55 | color: #787878;
56 | }
57 | #update-available {
58 | display: none;
59 | font-size: 90%;
60 | color: #cc0000;
61 | font-weight: bold;
62 | border-top: 1px solid #333;
63 | padding-top: 10px;
64 | margin-top: 10px;
65 | }
66 | #update-available a:link,
67 | #update-available a:visited {
68 | text-decoration: underline;
69 | color: #cc0000;
70 | }
71 | #update-available a:hover,
72 | #update-available a:active {
73 | text-decoration: none;
74 | }
--------------------------------------------------------------------------------
/chromeipass/popups/popup.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | KeePass - Popup
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
Settings
13 |
Choose own credential fields for this page
14 |
15 |
20 |
21 |
22 |
23 |
Checking status...
24 |
25 |
26 |
35 |
36 |
48 |
49 |
56 |
57 |
67 |
68 |
69 |
70 | chromeIPass has encountered an error:
71 |
72 |
73 |
74 |
75 |
76 | Reload
77 |
78 |
79 |
80 |
81 |
--------------------------------------------------------------------------------
/chromeipass/popups/popup.js:
--------------------------------------------------------------------------------
1 | function status_response(r) {
2 | $('#initial-state').hide();
3 | $('#error-encountered').hide();
4 | $('#need-reconfigure').hide();
5 | $('#not-configured').hide();
6 | $('#configured-and-associated').hide();
7 | $('#configured-not-associated').hide();
8 |
9 |
10 | if(!r.keePassHttpAvailable || r.databaseClosed) {
11 | $('#error-message').html(r.error);
12 | $('#error-encountered').show();
13 | }
14 | else if(!r.configured) {
15 | $('#not-configured').show();
16 | }
17 | else if(r.encryptionKeyUnrecognized) {
18 | $('#need-reconfigure').show();
19 | $('#need-reconfigure-message').html(r.error);
20 | }
21 | else if(!r.associated) {
22 | //$('#configured-not-associated').show();
23 | //$('#unassociated-identifier').html(r.identifier);
24 | $('#need-reconfigure').show();
25 | $('#need-reconfigure-message').html(r.error);
26 | }
27 | else if(typeof(r.error) != "undefined") {
28 | $('#error-encountered').show();
29 | $('#error-message').html(r.error);
30 | }
31 | else {
32 | $('#configured-and-associated').show();
33 | $('#associated-identifier').html(r.identifier);
34 | }
35 | }
36 |
37 | $(function() {
38 | $("#connect-button").click(function() {
39 | chrome.extension.sendMessage({
40 | action: "associate"
41 | });
42 | close();
43 | });
44 |
45 | $("#reconnect-button").click(function() {
46 | chrome.extension.sendMessage({
47 | action: "associate"
48 | });
49 | close();
50 | });
51 |
52 | $("#reload-status-button").click(function() {
53 | chrome.extension.sendMessage({
54 | action: "get_status"
55 | }, status_response);
56 | });
57 |
58 | $("#redetect-fields-button").click(function() {
59 | chrome.tabs.query({"active": true, "windowId": chrome.windows.WINDOW_ID_CURRENT}, function(tabs) {
60 | if (tabs.length === 0)
61 | return; // For example: only the background devtools or a popup are opened
62 | var tab = tabs[0];
63 |
64 | chrome.tabs.sendMessage(tab.id, {
65 | action: "redetect_fields"
66 | });
67 | });
68 | });
69 |
70 | chrome.extension.sendMessage({
71 | action: "get_status"
72 | }, status_response);
73 | });
--------------------------------------------------------------------------------
/chromeipass/popups/popup_functions.js:
--------------------------------------------------------------------------------
1 | var $ = cIPJQ.noConflict(true);
2 | var _settings = typeof(localStorage.settings)=='undefined' ? {} : JSON.parse(localStorage.settings);
3 | //var global = chrome.extension.getBackgroundPage();
4 |
5 | function updateAvailableResponse(available) {
6 | if(available) {
7 | $("#update-available").show();
8 | }
9 | else {
10 | $("#update-available").hide();
11 | }
12 | }
13 |
14 | function initSettings() {
15 | $("#settings #btn-options").click(function() {
16 | close();
17 | chrome.tabs.create({
18 | url: "../options/options.html"
19 | })
20 | });
21 |
22 | $("#settings #btn-choose-credential-fields").click(function() {
23 | var global = chrome.extension.getBackgroundPage();
24 | chrome.tabs.sendMessage(global.page.currentTabId, {
25 | action: "choose_credential_fields"
26 | });
27 | close();
28 | });
29 | }
30 |
31 |
32 | $(function() {
33 | initSettings();
34 |
35 | chrome.extension.sendMessage({
36 | action: "update_available_keepasshttp"
37 | }, updateAvailableResponse);
38 | });
39 |
--------------------------------------------------------------------------------
/chromeipass/popups/popup_httpauth.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | KeePass - Popup
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
Settings
13 |
Choose own credential fields for this page
14 |
15 |
20 |
21 |
22 |
23 |
24 | Select the login information you would like to get logged in with:
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/chromeipass/popups/popup_httpauth.js:
--------------------------------------------------------------------------------
1 | $(function() {
2 | var global = chrome.extension.getBackgroundPage();
3 |
4 | chrome.tabs.getSelected(null, function(tab) {
5 | //var data = global.tab_httpauth_list["tab" + tab.id];
6 | var data = global.page.tabs[tab.id].loginList;
7 | var ul = document.getElementById("login-list");
8 | for (var i = 0; i < data.logins.length; i++) {
9 | var li = document.createElement("li");
10 | var a = document.createElement("a");
11 | a.textContent = data.logins[i].Login + " (" + data.logins[i].Name + ")";
12 | li.appendChild(a);
13 | $(a).data("url", data.url.replace(/:\/\//g, "://" + data.logins[i].Login + ":" + data.logins[i].Password + "@"));
14 | $(a).click(function() {
15 | chrome.tabs.update(tab.id, {"url": $(this).data("url")});
16 | close();
17 | });
18 | ul.appendChild(li);
19 | }
20 | });
21 | });
--------------------------------------------------------------------------------
/chromeipass/popups/popup_login.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | KeePass - Popup
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
Settings
13 |
Choose own credential fields for this page
14 |
15 |
20 |
21 |
22 |
23 |
24 | Select the login information you would like to get entered into the page:
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/chromeipass/popups/popup_login.js:
--------------------------------------------------------------------------------
1 | $(function() {
2 | var global = chrome.extension.getBackgroundPage();
3 |
4 | chrome.tabs.query({"active": true, "windowId": chrome.windows.WINDOW_ID_CURRENT}, function(tabs) {
5 | if (tabs.length === 0)
6 | return; // For example: only the background devtools or a popup are opened
7 | var tab = tabs[0];
8 |
9 | var logins = global.page.tabs[tab.id].loginList;
10 | var ul = document.getElementById("login-list");
11 | for (var i = 0; i < logins.length; i++) {
12 | var li = document.createElement("li");
13 | var a = document.createElement("a");
14 | a.textContent = logins[i];
15 | li.appendChild(a);
16 | a.setAttribute("id", "" + i);
17 | a.addEventListener('click', function(e) {
18 | var id = e.target.id;
19 | chrome.tabs.sendMessage(tab.id, {
20 | action: 'fill_user_pass_with_specific_login',
21 | id: id
22 | });
23 | close();
24 | });
25 | ul.appendChild(li);
26 | }
27 | });
28 | });
--------------------------------------------------------------------------------
/chromeipass/popups/popup_multiple-fields.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | KeePass - Popup
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Settings
12 |
Choose own credential fields for this page
13 |
14 |
19 |
20 |
21 |
22 |
23 | chromeIPass found more than one password field on this page. To enter your
24 | logins, right-click on one of the password fields, and choose either the
25 | "Fill User + Pass
" or "Fill Pass Only
" command.
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/chromeipass/popups/popup_remember.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | KeePass - Popup
4 |
5 |
6 |
7 |
8 |
9 |
17 |
18 |
19 |
33 |
34 |
35 |
Credentials will be saved in connected database with identifier .
36 |
37 |
38 |
39 |
The used username is currently not saved!
40 |
The credentials with the used username are marked bold.
41 |
42 | Please choose the credentials you want to update:
43 |
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/chromeipass/popups/popup_remember.js:
--------------------------------------------------------------------------------
1 | var _tab;
2 |
3 | function _initialize(tab) {
4 | _tab = tab;
5 |
6 | // no credentials set or credentials already cleared
7 | if(!_tab.credentials.username) {
8 | _close();
9 | return;
10 | }
11 |
12 | // no existing credentials to update --> disable update-button
13 | if(_tab.credentials.list.length == 0) {
14 | $("#btn-update").attr("disabled", true).removeClass("b2c-btn-warning");
15 | }
16 |
17 | var url = _tab.credentials.url;
18 | url = (url.length > 50) ? url.substring(0, 50) + "..." : url;
19 | $(".information-url:first span:first").text(url);
20 | $(".information-username:first span:first").text(_tab.credentials.username);
21 |
22 | $("#btn-new").click(function(e) {
23 | chrome.extension.sendMessage({
24 | action: 'add_credentials',
25 | args: [_tab.credentials.username, _tab.credentials.password, _tab.credentials.url]
26 | }, _verifyResult);
27 | });
28 |
29 | $("#btn-update").click(function(e) {
30 | e.preventDefault();
31 |
32 | // only one entry which could be updated
33 | if(_tab.credentials.list.length == 1) {
34 | chrome.extension.sendMessage({
35 | action: 'update_credentials',
36 | args: [_tab.credentials.list[0].Uuid, _tab.credentials.username, _tab.credentials.password, _tab.credentials.url]
37 | }, _verifyResult);
38 | }
39 | else {
40 | $(".credentials:first .username-new:first strong:first").text(_tab.credentials.username);
41 | $(".credentials:first .username-exists:first strong:first").text(_tab.credentials.username);
42 |
43 | if(_tab.credentials.usernameExists) {
44 | $(".credentials:first .username-new:first").hide();
45 | $(".credentials:first .username-exists:first").show();
46 | }
47 | else {
48 | $(".credentials:first .username-new:first").show();
49 | $(".credentials:first .username-exists:first").hide();
50 | }
51 |
52 | for(var i = 0; i < _tab.credentials.list.length; i++) {
53 | var $a = $("")
54 | .attr("href", "#")
55 | .text(_tab.credentials.list[i].Login + " (" + _tab.credentials.list[i].Name + ")")
56 | .data("entryId", i)
57 | .click(function(e) {
58 | e.preventDefault();
59 | chrome.extension.sendMessage({
60 | action: 'update_credentials',
61 | args: [_tab.credentials.list[$(this).data("entryId")].Uuid, _tab.credentials.username, _tab.credentials.password, _tab.credentials.url]
62 | }, _verifyResult);
63 | });
64 |
65 | if(_tab.credentials.usernameExists && _tab.credentials.username == _tab.credentials.list[i].Login) {
66 | $a.css("font-weight", "bold");
67 | }
68 |
69 | var $li = $("").append($a);
70 | $("ul#list").append($li);
71 | }
72 |
73 | $(".credentials").show();
74 | }
75 | });
76 |
77 | $("#btn-dismiss").click(function(e) {
78 | e.preventDefault();
79 | _close();
80 | });
81 | }
82 |
83 | function _connected_database(db) {
84 | if(db.count > 1 && db.identifier) {
85 | $(".connected-database:first em:first").text(db.identifier);
86 | $(".connected-database:first").show();
87 | }
88 | else {
89 | $(".connected-database:first").hide();
90 | }
91 | }
92 |
93 | function _verifyResult(code) {
94 | if(code == "success") {
95 | _close();
96 | }
97 | }
98 |
99 | function _close() {
100 | chrome.extension.sendMessage({
101 | action: 'remove_credentials_from_tab_information'
102 | });
103 |
104 | chrome.extension.sendMessage({
105 | action: 'pop_stack'
106 | });
107 |
108 | close();
109 | }
110 |
111 | $(function() {
112 | chrome.extension.sendMessage({
113 | action: 'stack_add',
114 | args: ["icon_remember_red_background_19x19.png", "popup_remember.html", 10, true, 0]
115 | });
116 |
117 | chrome.extension.sendMessage({
118 | action: 'get_tab_information'
119 | }, _initialize);
120 |
121 | chrome.extension.sendMessage({
122 | action: 'get_connected_database'
123 | }, _connected_database);
124 | });
--------------------------------------------------------------------------------
/chromeipass/popups/throbber.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/chromeipass/popups/throbber.gif
--------------------------------------------------------------------------------
/documentation/PassIFox.md:
--------------------------------------------------------------------------------
1 | # PassIFox
2 |
3 | PassIFox extension for Firefox4+
4 |
5 | Implements a transparent replacement for the built-in Firefox password storage
6 |
7 | This extension is for use with [KeePassHttp](https://github.com/pfn/keepasshttp)
8 |
9 | The XPI can be installed using the link: https://passifox.appspot.com/passifox.xpi
10 |
11 | ### Requirements
12 | - [KeePassXC](https://keepassxc.org/) v2.1.1 or higher
13 |
14 | OR
15 | - [KeePass](http://keepass.info/)
16 | - [KeePassHttp](https://github.com/pfn/keepasshttp/)
17 |
18 | ### Installation
19 |
20 | [Download PassIFox](https://passifox.appspot.com/passifox.xpi) and drag-n-drop it into your Firefox. The installation process should start.
21 |
22 | ### Configuration
23 |
24 | There is no explicit configuration necessary. Only `Remember passwords for
25 | sites` in Firefox under Preferences > Security has to be enabled. PassIFox
26 | and KeePassHttp will communicate with each other on http://localhost:19455/
27 |
28 | When a login form is discovered for the first time, PassIFox will
29 | initialize itself and request an "Association" with KeePass (KeePassHttp).
30 | Alternatively, for forms that do not fill automatically, a context menu
31 | item on text and password fields allow manually filling in a login.
32 |
33 | Once that is completed, Firefox can freely retrieve passwords from
34 | KeePass. KeePass must be running and unlocked in order for passwords
35 | to be available.
36 |
37 | Entries in KeePass can be stored as http://host.name/ or just host.name
38 | without any extra fluff. KeePassHttp will do the work to figure out what
39 | you want. There are some permissions things where KeePassHttp will
40 | notify you when passwords are requested and the hostnames do not exactly
41 | match. When those prompts occur, you can accept, deny and remember your
42 | choice.
43 |
44 | For example, take the URL "http://www.google.com/" the entry in KeePass
45 | can be named http://www.google.com, www.google.com, or google.com
46 | Any will match a request for passwords, but if the entry is named
47 | google.com, and a request for comes from http://www.google.com you
48 | will be prompted to approve the request, and if you like, you can choose
49 | to remember the selection so that you are not prompted again.
50 |
51 | NOTE: Keep in mind, the field in which you put the names is the 'Title'
52 | field, and not 'URL'. Use 'URL' to store a shortcut link that will take
53 | you to your site. Use the 'Title' field to match sites for logins.
--------------------------------------------------------------------------------
/documentation/chromeIPass - old readme from web store.txt:
--------------------------------------------------------------------------------
1 | KeePass integration for browser Chrome using KeePassHttp
2 |
3 | NEW UPDATE, Version 2.2.1, brings many requested features to ChromeIPass.
4 |
5 | ChromeIPass brings KeePass integration to the Google Chrome browser!
6 |
7 | For users of KeePass 2.17 and newer, please make sure to use KeePassHttp 1.0.4.0 or newer; previous versions will not work. For users of KeePass 2.16 and older, be sure to use KeePassHttp 1.0.3.9 and lower. It is strongly recommended that you use the latest versions of KeePassHttp and KeePass.
8 |
9 | Changes:
10 | 2.3.4: Lukas Schulze: fix "checking status" bug
11 | 2.3.3: Lukas Schulze: added permissions for update-function for KeePassHttp; added keyboard support for context-menu; fixed escaping identifiers; fixed detection of field combinations when pressing Ctrl+Shift+U; redesigned dialog of password-generator
12 | 2.3.1: Lukas Schulze: added password-generator (only works with the latest version of KeePassHttp, disabled for older versions); changed the way of identifying and accessing credential fields (no longer uses only the ID of an field, because several sites don't use unique IDs); improved feature choose-own-credential-fields
13 | 2.2.3: Lukas Schulze: fix jQuery css styling issues (chromeipass no longer override web-site appearance). Fix jquery date pickers.
14 | 2.2.1: Update to webstore manifest version2. Completely re-worked for the updated Chrome extension APIs, supports updating and saving new KeePass entries, supports HTTP authentication (Basic and Digest auth). Many more new features. All new enhancements are courtesy of Lukas Schulze, thank you!
15 | 1.0.7: fix forms that use HTML5's type="email" for username (e.g. amazon)
16 | 1.0.4: minor bugfix in getFields, filter user fields to only be text
17 | 1.0.6: utf8 support for login and password fields, thanks DeniSix
18 |
19 | Support:
20 | * Please post any questions or support issues at the github messenger/tracker (the "Developer Website" link to the right)
21 |
22 | Features:
23 | * Secure integration with KeePass using the KeePassHttp plugin (https://github.com/pfn/keepasshttp/ download from https://passifox.appspot.com/KeePassHttp.plgx)
24 | * Automated password form fill
25 | * Support for multiple logins at a single site (intuitive pageAction-based workflow)
26 | * Context menu entries for manually selecting username and password fields to fill
27 | * Notifications are always displayed whenever passwords are retrieved from KeePass, in some instances it is even possible to deny and allow access. (When the host names do not match exactly, user interaction is required to allow access; the decision can be remembered).
28 | * Open source, available for inspection at https://github.com/pfn/passifox
29 | * Also supported on Firefox4: use the same KeePass database for Google Chrome and Firefox
30 |
31 | Future features and enhancements:
32 | * Automatic password generation and entry creation
33 |
34 | Requirements:
35 | * KeePass 2 (http://keepass.info) version 2.17 or newer
36 | * KeePassHttp (https://github.com/pfn/keepasshttp/ download at https://passifox.appspot.com/KeePassHttp.plgx)
37 |
38 | Directions:
39 | 1) Install KeePass
40 | 2) Install KeePassHttp by dropping KeePassHttp.plgx into the KeePass Program Files directory
41 | 2a) Log into KeePass
42 | 2b) Verify KeePassHttp has been installed correctly by checking Tools > Plugins
43 | 3) Navigate to any page containing a password
44 | 4) Click the KeePass icon in the URL bar and click the "Connect" button
45 | 5) Switch to the KeePass window and enter a descriptive name for your "Chrome Browser" into the dialog that popped up and click save.
46 | 6) Your passwords are now securely retrieved from KeePass and automatically entered into password forms and fields when needed.
47 | 7) Passwords in KeePass should be entered with the "Title" containing the domain or host name for the site in question; KeePassHttp does some basic pattern matching, for example "google.com" would match http://login.google.com/ if there were such a thing. (KeePassHttp 1.0.2.0 now searches the "URL" field in the same way)
48 | 8) If you are ever lost, click on the KeePass icon in the URL bar and it will let you know status as well as any available options.
49 |
50 | Linux and Mac users:
51 | If you are using KeePass with Mono, then you're in luck. I have tested KeePassHttp with Mono 2.6.7 and it appears to work well. I cannot get the plgx file to work on Linux, perhaps you may have more luck, but I can get my dll files to work directly when put into the KeePass directory (possibly the Plugin directory as well, I have not tried). You can get KeePassHttp.dll and Newtonsoft.Json.dll from https://github.com/pfn/keepasshttp/tree/master/KeePassHttp
52 |
53 | Windows users:
54 | If the PLGX file does not work, it is possible to use the DLL files as mentioned above for Linux and Mac users. The above DLLs are universal binaries and work cross-platform.
55 |
56 | It is recommended to disable the builtin Chrome password management when using this extension.
--------------------------------------------------------------------------------
/documentation/chromeIPass-changelog:
--------------------------------------------------------------------------------
1 | 2.3.4: Lukas Schulze: fix "checking status" bug
2 | 2.3.3: Lukas Schulze: added permissions for update-function for KeePassHttp; added keyboard support for context-menu; fixed escaping identifiers; fixed detection of field combinations when pressing Ctrl+Shift+U; redesigned dialog of password-generator
3 | 2.3.1: Lukas Schulze: added password-generator (only works with the latest version of KeePassHttp, disabled for older versions); changed the way of identifying and accessing credential fields (no longer uses only the ID of an field, because several sites don't use unique IDs); improved feature choose-own-credential-fields
4 | 2.2.3: Lukas Schulze: fix jQuery css styling issues (chromeipass no longer override web-site appearance). Fix jquery date pickers.
5 | 2.2.1: Update to webstore manifest version2. Completely re-worked for the updated Chrome extension APIs, supports updating and saving new KeePass entries, supports HTTP authentication (Basic and Digest auth). Many more new features. All new enhancements are courtesy of Lukas Schulze, thank you!
6 | 1.0.7: fix forms that use HTML5's type="email" for username (e.g. amazon)
7 | 1.0.4: minor bugfix in getFields, filter user fields to only be text
8 | 1.0.6: utf8 support for login and password fields, thanks DeniSix
--------------------------------------------------------------------------------
/documentation/images/cip-autocomplete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/cip-autocomplete.png
--------------------------------------------------------------------------------
/documentation/images/cip-browser-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/cip-browser-icon.png
--------------------------------------------------------------------------------
/documentation/images/cip-choose-credential-fields.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/cip-choose-credential-fields.png
--------------------------------------------------------------------------------
/documentation/images/cip-console-background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/cip-console-background.png
--------------------------------------------------------------------------------
/documentation/images/cip-console-inline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/cip-console-inline.png
--------------------------------------------------------------------------------
/documentation/images/cip-context-menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/cip-context-menu.png
--------------------------------------------------------------------------------
/documentation/images/cip-extensions-developer-mode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/cip-extensions-developer-mode.png
--------------------------------------------------------------------------------
/documentation/images/cip-extensions-normal-mode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/cip-extensions-normal-mode.png
--------------------------------------------------------------------------------
/documentation/images/cip-password-generator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/cip-password-generator.png
--------------------------------------------------------------------------------
/documentation/images/cip-popup-choose-credentials.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/cip-popup-choose-credentials.png
--------------------------------------------------------------------------------
/documentation/images/cip-popup-connect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/cip-popup-connect.png
--------------------------------------------------------------------------------
/documentation/images/cip-popup-normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/cip-popup-normal.png
--------------------------------------------------------------------------------
/documentation/images/cip-popup-remember-update.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/cip-popup-remember-update.png
--------------------------------------------------------------------------------
/documentation/images/cip-popup-remember.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/cip-popup-remember.png
--------------------------------------------------------------------------------
/documentation/images/cip-settings-connected-databases.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/cip-settings-connected-databases.png
--------------------------------------------------------------------------------
/documentation/images/cip-settings-general.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/cip-settings-general.png
--------------------------------------------------------------------------------
/documentation/images/cip-settings-specified-credential-fields.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/cip-settings-specified-credential-fields.png
--------------------------------------------------------------------------------
/documentation/images/cip-store-screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/cip-store-screenshot.png
--------------------------------------------------------------------------------
/documentation/images/http-auth-request.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/http-auth-request.png
--------------------------------------------------------------------------------
/documentation/images/keepass-association-key.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/keepass-association-key.png
--------------------------------------------------------------------------------
/documentation/images/keepass-password-generation-options.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/keepass-password-generation-options.png
--------------------------------------------------------------------------------
/documentation/images/psd/cip-autocomplete.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/psd/cip-autocomplete.psd
--------------------------------------------------------------------------------
/documentation/images/psd/cip-browser-icon.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/psd/cip-browser-icon.psd
--------------------------------------------------------------------------------
/documentation/images/psd/cip-choose-credential-fields.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/psd/cip-choose-credential-fields.psd
--------------------------------------------------------------------------------
/documentation/images/psd/cip-console-background.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/psd/cip-console-background.psd
--------------------------------------------------------------------------------
/documentation/images/psd/cip-console-inline.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/psd/cip-console-inline.psd
--------------------------------------------------------------------------------
/documentation/images/psd/cip-context-menu.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/psd/cip-context-menu.psd
--------------------------------------------------------------------------------
/documentation/images/psd/cip-extensions-developer-mode.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/psd/cip-extensions-developer-mode.psd
--------------------------------------------------------------------------------
/documentation/images/psd/cip-extensions-normal-mode.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/psd/cip-extensions-normal-mode.psd
--------------------------------------------------------------------------------
/documentation/images/psd/cip-password-generator.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/psd/cip-password-generator.psd
--------------------------------------------------------------------------------
/documentation/images/psd/cip-popup-choose-credentials.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/psd/cip-popup-choose-credentials.psd
--------------------------------------------------------------------------------
/documentation/images/psd/cip-popup-connect.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/psd/cip-popup-connect.psd
--------------------------------------------------------------------------------
/documentation/images/psd/cip-popup-normal.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/psd/cip-popup-normal.psd
--------------------------------------------------------------------------------
/documentation/images/psd/cip-popup-remember-update.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/psd/cip-popup-remember-update.psd
--------------------------------------------------------------------------------
/documentation/images/psd/cip-popup-remember.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/psd/cip-popup-remember.psd
--------------------------------------------------------------------------------
/documentation/images/psd/cip-settings-connected-databases.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/psd/cip-settings-connected-databases.psd
--------------------------------------------------------------------------------
/documentation/images/psd/cip-settings-general.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/psd/cip-settings-general.psd
--------------------------------------------------------------------------------
/documentation/images/psd/cip-settings-specified-credential-fields.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/psd/cip-settings-specified-credential-fields.psd
--------------------------------------------------------------------------------
/documentation/images/psd/cip-store-screenshot.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/psd/cip-store-screenshot.psd
--------------------------------------------------------------------------------
/documentation/images/psd/http-auth-request.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/psd/http-auth-request.psd
--------------------------------------------------------------------------------
/documentation/images/psd/keepass-association-key.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/psd/keepass-association-key.psd
--------------------------------------------------------------------------------
/documentation/images/psd/keepass-password-generation-options.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/documentation/images/psd/keepass-password-generation-options.psd
--------------------------------------------------------------------------------
/passifox.xpi:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/passifox.xpi
--------------------------------------------------------------------------------
/passifox/chrome.manifest:
--------------------------------------------------------------------------------
1 | content passifox chrome/content/
2 | skin passifox classic/1.0 chrome/skin/default/
3 | resource passifox ./
4 |
5 | overlay chrome://browser/content/browser.xul chrome://passifox/content/passifox.xul
6 | contract @hanhuy.com/login-manager-storage;1 {fa199659-10c4-4e3a-a73b-e2b4e1deae96}
7 | component {fa199659-10c4-4e3a-a73b-e2b4e1deae96} components/loginmanagerstorage.js
8 | category login-manager-storage nsILoginManagerStorage @hanhuy.com/login-manager-storage;1
9 |
--------------------------------------------------------------------------------
/passifox/chrome/content/passifox.xul:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
12 |
132 |
133 |
--------------------------------------------------------------------------------
/passifox/chrome/skin/default/keepass-big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/passifox/chrome/skin/default/keepass-big.png
--------------------------------------------------------------------------------
/passifox/chrome/skin/default/keepass.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/pfn/passifox/e2dc0537eb97ad005698da3eeddecced8c087f2d/passifox/chrome/skin/default/keepass.png
--------------------------------------------------------------------------------
/passifox/components/loginmanagerstorage.js:
--------------------------------------------------------------------------------
1 | const Ci = Components.interfaces;
2 | const Cu = Components.utils;
3 | const Cc = Components.classes;
4 |
5 | Cu.import("resource://gre/modules/XPCOMUtils.jsm");
6 | Cu.import("resource://gre/modules/Services.jsm");
7 | Cu.import("resource://passifox/modules/KeePassFox.jsm");
8 |
9 | function LoginManagerStorage() {
10 | this.wrappedJSObject = this;
11 | XPCOMUtils.defineLazyGetter(this, "_kpf", function() new KeePassFox());
12 | XPCOMUtils.defineLazyGetter(this, "_loginSavingDB", function() {
13 | let f = Services.dirsvc.get("ProfD", Ci.nsIFile);
14 | f.append("passifox-ignore-hosts.sqlite");
15 | let ss = Cc["@mozilla.org/storage/service;1"]
16 | .getService(Ci.mozIStorageService);
17 | let c = ss.openDatabase(f);
18 | if (!c.tableExists("hosts")) {
19 | c.beginTransaction();
20 | c.executeSimpleSQL("CREATE TABLE hosts (name varchar)");
21 | c.executeSimpleSQL("CREATE UNIQUE INDEX hostname ON hosts (name)");
22 | c.commitTransaction();
23 | }
24 | return c;
25 | });
26 | function makeSt(s) function() this._loginSavingDB.createStatement(s);
27 | XPCOMUtils.defineLazyGetter(this, "_getAllLoginSavingSt",
28 | makeSt("SELECT name FROM hosts"));
29 | XPCOMUtils.defineLazyGetter(this, "_insLoginSavingSt",
30 | makeSt("INSERT INTO hosts VALUES (:name)"));
31 | XPCOMUtils.defineLazyGetter(this, "_delLoginSavingSt",
32 | makeSt("DELETE FROM hosts WHERE name = :name"));
33 | XPCOMUtils.defineLazyGetter(this, "_getLoginSavingSt",
34 | makeSt("SELECT name FROM hosts WHERE name = :name"));
35 | this.log("Creating storage service");
36 | }
37 |
38 | LoginManagerStorage.prototype = {
39 | classDescription: "KeePassFox Login Manager Storage",
40 | classID: Components.ID("{fa199659-10c4-4e3a-a73b-e2b4e1deae96}"),
41 | QueryInterface: XPCOMUtils.generateQI([Ci.nsISupports,
42 | Ci.nsILoginManagerStorage]),
43 | _xpcom_factory: {
44 | createInstance: function(outer, iid) {
45 | if (outer != null)
46 | throw Components.results.NS_ERROR_NO_AGGREGATION;
47 | if (!LoginManagerStorage.instance)
48 | LoginManagerStorage.instance = new LoginManagerStorage();
49 | return LoginManagerStorage.instance.QueryInterface(iid);
50 | },
51 | },
52 | uiBusy: false, // XXX seems to be needed in <=ff4.0b7
53 | log: function(m) {
54 | if (!this._kpf._debug)
55 | return;
56 | Services.console.logStringMessage("LoginManagerStorage: " + m);
57 | },
58 | stub: function(arguments) {
59 | if (!this._kpf._debug)
60 | return;
61 | let args = [];
62 | for (let i = 0; i < arguments.length; i++) {
63 | let arg = arguments[i];
64 | if (typeof(arg) == "object")
65 | arg = JSON.stringify(arg);
66 | args.push(arg);
67 | }
68 | this.log(arguments.callee.name + "(" + args.join(",") + ")");
69 | },
70 |
71 | init: function _init() { }, // don't need to init
72 | initialize: function _init() { }, // don't need to init
73 | // ignored, no implementation
74 | initWithFile: function _initWithFile(inFile, outFile) { },
75 |
76 | addLogin: function addLogin(login) {
77 | this.stub(arguments);
78 | let r = {
79 | url: login.hostname,
80 | submiturl: login.formSubmitURL,
81 | username: login.username,
82 | password: login.password
83 | };
84 | if (login.httpRealm)
85 | r.realm = login.httpRealm;
86 |
87 | login.QueryInterface(Ci.nsILoginMetaInfo);
88 | if (login.guid)
89 | r.uuid = login.guid;
90 |
91 | this._kpf.set_login(r);
92 | this._sendNotification("addLogin", login);
93 | },
94 | // not implemented--removals should be managed in KeePass
95 | removeLogin: function _removeLogin(login) {
96 | //this._sendNotification("removeLogin", login);
97 | },
98 |
99 | modifyLogin: function modifyLogin(oldLogin, newLoginData) {
100 | let newLogin;
101 | let needsUpdate = false;
102 | newLogin = oldLogin.clone().QueryInterface(Ci.nsILoginMetaInfo);
103 | if (newLoginData instanceof Ci.nsILoginInfo) {
104 | newLogin.init(newLoginData.hostname,
105 | newLoginData.formSubmitURL, newLoginData.httpRealm,
106 | newLoginData.username, newLoginData.password,
107 | newLoginData.usernameField, newLoginData.passwordField);
108 | newLogin.QueryInterface(Ci.nsILoginMetaInfo);
109 |
110 | if (newLogin.username != oldLogin.username) {
111 | this.log("Updating username");
112 | needsUpdate = true;
113 | }
114 | if (newLogin.password != oldLogin.password) {
115 | this.log("Updating password");
116 | needsUpdate = true;
117 | }
118 | } else if (newLoginData instanceof Ci.nsIPropertyBag) {
119 | let propEnum = newLoginData.enumerator;
120 | while (propEnum.hasMoreElements()) {
121 | let prop = propEnum.getNext().QueryInterface(Ci.nsIProperty);
122 | switch (prop.name) {
123 | // nsILoginInfo properties...
124 | //
125 | // only care about these 4 for updating
126 | case "hostname":
127 | case "username":
128 | case "password":
129 | case "formSubmitURL":
130 | needsUpdate = true;
131 | this.log("updating field: " + prop.name);
132 | case "usernameField":
133 | case "passwordField":
134 | case "httpRealm":
135 | // nsILoginMetaInfo properties...
136 | case "guid":
137 | case "timeCreated":
138 | case "timeLastUsed":
139 | case "timePasswordChanged":
140 | case "timesUsed":
141 | if (prop.name == "guid") {
142 | this.log("Guid is changing?! Not supported");
143 | break;
144 | }
145 | newLogin[prop.name] = prop.value;
146 | break;
147 |
148 | // Fake property, allows easy incrementing.
149 | case "timesUsedIncrement":
150 | newLogin.timesUsed += prop.value;
151 | break;
152 |
153 | // Fail if caller requests setting an unknown property.
154 | default:
155 | throw "Unexpected propertybag item: " + prop.name;
156 | }
157 | }
158 | } else {
159 | throw "newLoginData needs an expected interface!";
160 | }
161 | if (needsUpdate) {
162 | this.addLogin(newLogin);
163 | this._sendNotification("modifyLogin", [oldLogin, newLogin]);
164 | }
165 | },
166 | getAllLogins: function getAllLogins(outCount) {
167 | this.stub(arguments);
168 | let entries = this._kpf.get_all_logins();
169 | outCount.value = entries.length;
170 | let logins = [];
171 | for (let i = 0; i < entries.length; i++) {
172 | let l = Cc['@mozilla.org/login-manager/loginInfo;1']
173 | .createInstance(Ci.nsILoginInfo);
174 | l.init(entries[i].Name, null, null,
175 | entries[i].Login, "Stored in KeePass", "", "");
176 | l.QueryInterface(Ci.nsILoginMetaInfo);
177 | l.guid = entries[i].Uuid;
178 | logins.push(l);
179 | }
180 | return logins;
181 | },
182 | getAllEncryptedLogins: function getAllEncryptedLogins(outCount) {
183 | return this.getAllLogins(outCount);
184 | },
185 | searchLogins: function searchLogins(count, matchData) {
186 | this.stub(arguments);
187 | var host, form, realm;
188 |
189 | try{
190 | host = matchData.getProperty("hostname");
191 | } catch(e){
192 | host = '';
193 | }
194 | try{
195 | form = matchData.getProperty("formSubmitURL");
196 | } catch(e){
197 | form = '';
198 | }
199 | try{
200 | realm = matchData.getProperty("httpRealm");
201 | } catch(e){
202 | realm = null;
203 | }
204 |
205 | return this.findLogins(count, host, form, realm);
206 | },
207 |
208 | removeAllLogins: function() { }, // never, ever do this
209 |
210 | getAllDisabledHosts: function(count) {
211 | count.value = 0;
212 | let result = [];
213 |
214 | let st = this._getAllLoginSavingSt;
215 | this._doWithLoginSavingDB(st, function() {
216 | while (st.executeStep())
217 | result.push(st.row['name']);
218 | count.value = result.length;
219 | });
220 | return result;
221 | },
222 | getLoginSavingEnabled: function(hostname) {
223 | let st = this._getLoginSavingSt;
224 | st.params['name'] = hostname;
225 | let enabled = true;
226 | this._doWithLoginSavingDB(st, function() {
227 | enabled = !st.executeStep();
228 | });
229 | return enabled;
230 | },
231 | setLoginSavingEnabled: function(hostname, enabled) {
232 | let st = enabled ? this._delLoginSavingSt : this._insLoginSavingSt;
233 | st.params['name'] = hostname;
234 | this._doWithLoginSavingDB(st, function() st.execute());
235 | },
236 | _doWithLoginSavingDB: function(st, r) {
237 | let c = this._loginSavingDB;
238 | try {
239 | c.beginTransaction();
240 | r();
241 | c.commitTransaction();
242 | } catch (e) {
243 | c.rollbackTransaction();
244 | this.log("Error in login saving db: " + e);
245 | Cu.reportError(e);
246 | } finally {
247 | st.reset();
248 | }
249 | },
250 |
251 | get isLoggedIn() { return true; },
252 | findLogins: function findLogins(outCount, hostname, submitURL, realm) {
253 | this.stub(arguments);
254 |
255 | let entries = this._kpf.get_logins(hostname, submitURL, false, realm);
256 | outCount.value = entries.length;
257 | let logins = [];
258 | for (let i = 0; i < entries.length; i++) {
259 | let l = Cc['@mozilla.org/login-manager/loginInfo;1']
260 | .createInstance(Ci.nsILoginInfo);
261 | l.init(hostname, submitURL, realm,
262 | entries[i].Login, entries[i].Password, "", "");
263 | l.QueryInterface(Ci.nsILoginMetaInfo);
264 | l.guid = entries[i].Uuid;
265 | logins.push(l);
266 | }
267 | return logins;
268 | },
269 | // is there anything wrong with always returning a non-zero value?
270 | countLogins: function countLogins(hostname, submitURL, realm) {
271 | this.stub(arguments);
272 | let c = this._kpf.get_logins_count(hostname);
273 | return c;
274 | },
275 | // copied from storage-mozStorage.js
276 | _sendNotification: function(changeType, data) {
277 | let dataObject = data;
278 | // Can't pass a raw JS string or array though notifyObservers(). :-(
279 | if (data instanceof Array) {
280 | dataObject = Cc["@mozilla.org/array;1"].
281 | createInstance(Ci.nsIMutableArray);
282 | for (let i = 0; i < data.length; i++)
283 | dataObject.appendElement(data[i], false);
284 | } else if (typeof(data) == "string") {
285 | dataObject = Cc["@mozilla.org/supports-string;1"].
286 | createInstance(Ci.nsISupportsString);
287 | dataObject.data = data;
288 | }
289 | Services.obs.notifyObservers(dataObject,
290 | "passwordmgr-storage-changed", changeType);
291 | },
292 | };
293 |
294 | const NSGetFactory = XPCOMUtils.generateNSGetFactory([LoginManagerStorage]);
295 |
296 |
--------------------------------------------------------------------------------
/passifox/defaults/preferences/defaults.js:
--------------------------------------------------------------------------------
1 | // default connection url
2 | pref("extensions.passifox.keepasshttp_url", "http://localhost:19455/");
3 | // allow enabling and disabling of passifox notifications.
4 | // all enabled by default.
5 | pref("extensions.passifox.notification.kpf-db-note", true);
6 | pref("extensions.passifox.notification.kpf-error-note", true);
7 | pref("extensions.passifox.notification.kpf-running-note", true);
8 | pref("extensions.passifox.notification.kpf-associate-note", true);
9 | // set the default timeout (in seconds) for displaying an notification if enabled
10 | pref("extensions.passifox.notification.timeout", 30);
11 | // eof
12 |
--------------------------------------------------------------------------------
/passifox/install.rdf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | passifox@hanhuy.com
5 | 1.2.2
6 | 2
7 |
8 |
9 |
10 |
11 |
12 | PassIFox
13 | KeePass(XC) Login Manager Storage and Integration using the KeePassHttp plugin
14 | chrome://passifox/skin/keepass-big.png
15 | Perry Nguyen
16 | https://github.com/pfn/passifox
17 | https://passifox.appspot.com/update.rdf
18 |
19 |
20 |
--------------------------------------------------------------------------------
/update.rdf:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 | 1.2.0
10 |
11 |
12 | {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
13 | 4.0b1
14 | 49.*
15 | https://passifox.appspot.com/passifox.xpi
16 | sha1:6f888d614b7551c8f07b24fee2066650d8815841
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------