澄清这个Caja(安全JavaScript)代码?

时间:2012-04-17 16:50:07

标签: javascript code-analysis google-caja

我正在研究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 ...;。我感谢任何提示或建议。

Here is the Specification PDF where I got this.

1 个答案:

答案 0 :(得分:1)

throw位是伪代码。真实代码可通过svn获得。

Marc Stiegler在http://www.youtube.com/watch?v=eL5o4PFuxTY

描述了封口机/开封模式以及其他安全分解模式