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で説明しています。

于 2012-04-18T05:57:48.870 に答える