Security:Strawman Model: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 7: Line 7:
Stack    = array [Principal]          // array of Principal
Stack    = array [Principal]          // array of Principal
Object    = record {parent:Object}      // record with parent field
Object    = record {parent:Object}      // record with parent field
Window    = record {url:String,
URL      = record {string:String,
                    origin:String}
Window    = record {location:URL,
                     principal:Principal,
                     principal:Principal,
                     opener:Window,
                     opener:Window,
Line 32: Line 34:
For all p in P, (p ^ null) == null.
For all p in P, (p ^ null) == null.


Let principal(x) = (x is Window) ? x.principal : (x is Object) ? principal(x.parent) : origin(x)
Let origin(s) = (s matches 'scheme://hostpart') || 'unknown origin'.


Let open(u) = new Window(u, principal(u), window)
Let principal(x) = (x is Window) ? x.principal : principal(x.parent).

Revision as of 00:39, 2 August 2006

Types:

Principal = (System, Origin, Null)      // disjoint type union
System    = {system}                    // system principal singleton
Origin    = {origin1, ... originN}      // set of N origin principals
Null      = {null}                      // null principal singleton
Stack     = array [Principal]           // array of Principal
Object    = record {parent:Object}      // record with parent field
URL       = record {string:String,
                    origin:String}
Window    = record {location:URL,
                    principal:Principal,
                    opener:Window,
                    document:Object}

Definitions:

Let P be the set of all principals.

Let <= be a binary relation by which P is partially ordered.

For all p in P, p <= system.

For all Origin principals p and q in P, !(p <= q) && !(q <= p).

For all p in P, unknown <= p.

For all principals p and q, there exists in P the greatest lower bound (p ^ q), the meet of p and q, defined by <=. (P, <=) is a meet semi-lattice.

For all p in P, (p ^ system) == p.

For all p in P, (p ^ null) == null.

Let origin(s) = (s matches 'scheme://hostpart') || 'unknown origin'.

Let principal(x) = (x is Window) ? x.principal : principal(x.parent).