1

我正在研究 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。

这是伪代码吗?我对正在发生的事情感到困惑,例如 atbox()throw ...;。我感谢任何提示或建议。

这是我得到这个的规范PDF。

4

1 回答 1

1

throw位是伪代码。真正的代码可以通过svn获得。

Marc Stiegler 在http://www.youtube.com/watch?v=eL5o4PFuxTY上描述了 sealer/unsealer 模式和其他安全分解模式

于 2012-04-18T05:57:48.870 回答