1 <html xmlns="http://www.w3.org/1999/xhtml">
3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4 <style type="text/css" media="screen">
5 p, td { line-height: 1.3; }
6 p { padding-bottom: 1em; }
7 a { color: #3697b3; font-weight: bold; text-decoration: none; }
8 a:hover { color: #000; text-decoration: underline; }
9 a:active { color: #000; text-decoration: underline; }
12 <body style="font-size:12px;color:#262626;line-height:1.3;font-family:Arial, Helvetica, sans-serif;background-color:#fff;">
14 <div>GSS Commands</div>
18 <li style="list-style: none; display: inline">
20 <li>GSSCommand should consume major, minor</li>
21 <li>GSSCommand::toJSON() should produce outer shell, including major, minor</li>
22 <li>Provide reasonable default values for the GSSCommands</li>
23 <li>Provide comment examples of JSON input and output</li>
24 <li>Think through whether toJSON can generate errors</li>
25 <li>All JSONs should contain an identifier to match up the response, given a multithreaded environment where multiple requests and responses can happen out of order</li>
28 <li>GSSAcquireCred</li>
29 <li style="list-style: none; display: inline">
31 <li>The returned cred_handle needs to be cached and returned usefully.</li>
34 <li>GSSCreateSecContext</li>
35 <li style="list-style: none; display: inline">
37 <li>Rename to GSSInitSecContext?</li>
38 <li>Update to use GSSOID, GSSBuffer, etc.</li>
39 <li>Update to cache context, return that usefully</li>
40 <li>Update loadParameters to check for JSON value type, NULL</li>
41 <li>Update loadParameters to accept strings or integers where named constants exist.</li>
44 <li>GSSGetMic - only the general</li>
45 <li>GSSImportName</li>
46 <li style="list-style: none; display: inline">
48 <li>Update loadParameters to check for JSON value type, NULL</li>
51 <li>GSSUnwrap - only the general</li>
52 <li>GSSWrap - only the general</li>
53 <li>Pseudo random - need to implement totally</li>
60 <li style="list-style: none; display: inline">
62 <li>Make CopyConstructors / Assignment / etc. work for not freeing memory buffers when some stray copy of an object goes out of scope, rather than making the calling code think about it.</li>
63 <li>All datamodel objects should be able to generate their own JSON Value representation</li>
64 <li><br clear="none"/></li>
68 <li style="list-style: none; display: inline">
70 <li>You know... make it happen ;)</li>
71 <li>Make a cache object</li>
72 <li style="list-style: none; display: inline">
74 <li>it can call back into the GSS data object to let the object know of the UID string for itself, to be used when marshaling to JSON</li>
75 <li>It will be responsible for sweeping the GSS Data Objects periodically to reap unneeded ones</li>
76 <li>implementation thoughts:</li>
77 <li style="list-style: none; display: inline">
79 <li>A cache object with one hash/map/table/etc. for every kind of data object?</li>
80 <li>A cache object with a single table for all, and some way to determine data object type upon retrieval?</li>
81 <li>The overall cache object should be responsible for generating the random strings to be used as table keys</li>
86 <li>GSS Data object</li>
87 <li style="list-style: none; display: inline">
89 <li>Should have a settable cache lookup string</li>
90 <li>Should have a bool reapable?() method to set the reaping policy for this object</li>
91 <li style="list-style: none; display: inline">
93 <li>If using a simple ##-minute timer, the timer could be reset upon each access</li>
94 <li>Otherwise, it could use the natural timeout for the object, such as the timeout associated with a security context</li>
95 <li>Or should objects be linked to a specific security context, and all expire together?</li>
96 <li>Or should objects be linked to a specific web page, and all expire together?</li>
99 <li>Should have a toJSONValue() method to generate their JSON representation</li>
100 <li style="list-style: none; display: inline">
102 <li>Memory cached objects should add themselves to the cache during this method, if the object is not already added in.</li>
110 <div>Organizational</div>
114 <li>Move GSS commands into their own directory off src</li>
115 <li>Create a single routine that calls all of the appropriate stuff, given an input of a JSON string, and returns the appropriate response JSON string.</li>
116 <li>Turn src/datamodel and src/gsscommands into a library</li>
117 <li>Move GSS command tests into test/gsscommands</li>
118 <li>Make sure that the command line interface to the underlying code is the same as the FF dlopen() interface</li>
119 <li style="list-style: none; display: inline">
121 <li>So the command line needs to handle only I/O, and hand off the JSON strings to the next layer down, which is also called by the FF dlopen() implementation</li>