我正在研究Caja并且在理解它是如何工作方面遇到一些麻烦:
function Brand() {
var flag = false, payload = null;
return caja.freeze({
seal: function(payloadToSeal) {
function box() {
flag = true;
payload = payloadToSeal;
}
box.toString = function() {
return "(box)";
};
unseal: function(box) {
flag = false;
payload = null;
try {
box();
if (!flag) { throw ...; }
return payload;
} finally {
flag = false;
payload = null;
}
}
});
}
这个标题为:
图。 10:权利放大。每个品牌都有密封和开封 功能,表现得像匹配的加密和解密密钥。封口 一个对象返回一个密封的盒子,只能被开封 相应的开封功能。这里显示的实现技术 是由于M. Stiegler。
这是伪代码吗?我对正在发生的事情感到困惑,例如box()
和throw ...;
。我感谢任何提示或建议。
答案 0 :(得分:1)
throw
位是伪代码。真实代码可通过svn获得。
Marc Stiegler在http://www.youtube.com/watch?v=eL5o4PFuxTY
描述了封口机/开封模式以及其他安全分解模式