This is how a typical demo should run: You show up at the appointed time and place, we access the detective cluster (via my account) and run the programs you previously submitted. You briefly explain how your model works, and convince me that you understand your design, that it is well thought out, and that you understand and can justify the trade-offs you made. I then designate one of the pre-posted scenarios, and you load that structure into your program. I may make some changes (add certs, add nodes, etc) prior to the actual start of the demo. See scenario1.txt for some more concrete examples. I will then ask you to: 1) "Show" me a typical cert. Indicate what the various fields are used for. Show me how your signing program works, and what your signed cert looks like. 2) I'll designate some principals, and ask you to attempt to verify the target at a specified policy level. You will show me the cert chain, if one exists, or indicate that a cert chain was not found. In some cases, there may be a cert chain that is NOT found by your algorithm. This is OK, so long as you can explain why it was not found and convince me that this is a good design trade-off. 3) I'll ask you to add some principals, and/or add some certificates. Perhaps including a "cross certificate" between CAs on different branches of a tree (or between different, formerly unconnected) trees. You should have provisions to generate and store these certs, even if such certs fall outside of your normal naming guidelines (perhaps with a warning and a user option to proceed). 5) I will give you a cert chain (perhaps one that you did not find above) and ask you to verify it at a certain policy level. 6) You will advance the "clock" so that a cert in some chain expires, and check to see that your routine will no longer verify the chain. 7) You will allow me to (or allow me to direct you to) modify a valid cert (i.e. by changing an expiration date, or a principal's name) WITHOUT resigning the cert. Your routine should refuse to verify this forged cert or a chain containing this cert. 8) You will explain how your revocation scheme works, and demonstrate how a certificate is revoked. You will then demonstrate that a certificate chain containing a certificate that has been revoked will no longer be verified by your routines. 9) Probably some other stuff also. This list is not comprehensive, but it's everything I can think of at the moment (e.g., I'm not planning any big surprise, but will probably think of more things to look at before the demos). I'll probably do these in a different order, maybe testing, changing the configuration, and testing again.