Final fixes for getting GSSWeb to work again.
[gssweb.git] / PauseNotes.html
1 <html xmlns="http://www.w3.org/1999/xhtml">
2    <head>
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; }
10       </style>
11    </head>
12    <body style="font-size:12px;color:#262626;line-height:1.3;font-family:Arial, Helvetica, sans-serif;background-color:#fff;">
13       <div class="ennote">
14          <div>GSS Commands</div>
15          <div>
16             <ul>
17                <li>General:</li>
18                <li style="list-style: none; display: inline">
19                   <ul>
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>
26                   </ul>
27                </li>
28                <li>GSSAcquireCred</li>
29                <li style="list-style: none; display: inline">
30                   <ul>
31                      <li>The returned cred_handle needs to be cached and returned usefully.</li>
32                   </ul>
33                </li>
34                <li>GSSCreateSecContext</li>
35                <li style="list-style: none; display: inline">
36                   <ul>
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>
42                   </ul>
43                </li>
44                <li>GSSGetMic - only the general</li>
45                <li>GSSImportName</li>
46                <li style="list-style: none; display: inline">
47                   <ul>
48                      <li>Update loadParameters to check for JSON value type, NULL</li>
49                   </ul>
50                </li>
51                <li>GSSUnwrap - only the general</li>
52                <li>GSSWrap - only the general</li>
53                <li>Pseudo random - need to implement totally</li>
54             </ul>
55             <div>Datamodel</div>
56          </div>
57          <div>
58             <ul>
59                <li>General</li>
60                <li style="list-style: none; display: inline">
61                   <ul>
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>
65                   </ul>
66                </li>
67                <li>Memory cache</li>
68                <li style="list-style: none; display: inline">
69                   <ul>
70                      <li>You know... make it happen ;)</li>
71                      <li>Make a cache object</li>
72                      <li style="list-style: none; display: inline">
73                         <ul>
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">
78                               <ul>
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>
82                               </ul>
83                            </li>
84                         </ul>
85                      </li>
86                      <li>GSS Data object</li>
87                      <li style="list-style: none; display: inline">
88                         <ul>
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">
92                               <ul>
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>
97                               </ul>
98                            </li>
99                            <li>Should have a toJSONValue() method to generate their JSON representation</li>
100                            <li style="list-style: none; display: inline">
101                               <ul>
102                                  <li>Memory cached objects should add themselves to the cache during this method, if the object is not already added in.</li>
103                               </ul>
104                            </li>
105                         </ul>
106                      </li>
107                   </ul>
108                </li>
109             </ul>
110             <div>Organizational</div>
111          </div>
112          <div>
113             <ul>
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">
120                   <ul>
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>
122                   </ul>
123                </li>
124             </ul>
125          </div>
126       </div>
127    </body>
128 </html>