Example #1
0
 def _test(self, uebdict):
     uebstring = uri.pack_extension(uebdict)
     uebhash = hashutil.uri_extension_hash(uebstring)
     fb = FakeBucketReaderWriterProxy()
     fb.put_uri_extension(uebstring)
     verifycap = uri.CHKFileVerifierURI(storage_index='x'*16, uri_extension_hash=uebhash, needed_shares=self.K, total_shares=self.M, size=self.SIZE)
     vup = checker.ValidatedExtendedURIProxy(fb, verifycap)
     return vup.start()
Example #2
0
    def test_pack(self):
        data = {"stuff": "value", "size": 12, "needed_shares": 3, "big_hash": hashutil.tagged_hash("foo", "bar")}
        ext = uri.pack_extension(data)
        d = uri.unpack_extension(ext)
        self.failUnlessReallyEqual(d["stuff"], "value")
        self.failUnlessReallyEqual(d["size"], 12)
        self.failUnlessReallyEqual(d["big_hash"], hashutil.tagged_hash("foo", "bar"))

        readable = uri.unpack_extension_readable(ext)
        self.failUnlessReallyEqual(readable["needed_shares"], 3)
        self.failUnlessReallyEqual(readable["stuff"], "value")
        self.failUnlessReallyEqual(readable["size"], 12)
        self.failUnlessReallyEqual(readable["big_hash"], base32.b2a(hashutil.tagged_hash("foo", "bar")))
        self.failUnlessReallyEqual(readable["UEB_hash"], base32.b2a(hashutil.uri_extension_hash(ext)))
Example #3
0
 def send_uri_extension_to_all_shareholders(self):
     lp = self.log("sending uri_extension", level=log.NOISY)
     self.set_status("Sending URI Extensions")
     self.set_encode_and_push_progress(extra=0.8)
     for k in ('crypttext_root_hash', 'crypttext_hash',
               ):
         assert k in self.uri_extension_data
     uri_extension = uri.pack_extension(self.uri_extension_data)
     ed = {}
     for k,v in self.uri_extension_data.items():
         if k.endswith("hash"):
             ed[k] = base32.b2a(v)
         else:
             ed[k] = v
     self.log("uri_extension_data is %s" % (ed,), level=log.NOISY, parent=lp)
     self.uri_extension_hash = hashutil.uri_extension_hash(uri_extension)
     dl = []
     for shareid in list(self.landlords):
         dl.append(self.send_uri_extension(shareid, uri_extension))
     return self._gather_responses(dl)
Example #4
0
 def send_uri_extension_to_all_shareholders(self):
     lp = self.log("sending uri_extension", level=log.NOISY)
     self.set_status("Sending URI Extensions")
     self.set_encode_and_push_progress(extra=0.8)
     for k in ('crypttext_root_hash', 'crypttext_hash',
               ):
         assert k in self.uri_extension_data
     uri_extension = uri.pack_extension(self.uri_extension_data)
     ed = {}
     for k,v in self.uri_extension_data.items():
         if k.endswith("hash"):
             ed[k] = base32.b2a(v)
         else:
             ed[k] = v
     self.log("uri_extension_data is %s" % (ed,), level=log.NOISY, parent=lp)
     self.uri_extension_hash = hashutil.uri_extension_hash(uri_extension)
     dl = []
     for shareid in list(self.landlords):
         dl.append(self.send_uri_extension(shareid, uri_extension))
     return self._gather_responses(dl)
Example #5
0
def write_good_share(storage_rref, storage_index, ueb, sharenums):
    """
    Write a valid share with the given URI extension block.
    """
    write_proxy = make_write_bucket_proxy(
        storage_rref,
        None,
        1024,
        ueb["segment_size"],
        1,
        1,
        ueb["size"],
    )
    # See allmydata/immutable/layout.py
    offset = write_proxy._offsets["uri_extension"]
    filler = b"\0" * (offset - len(write_proxy._offset_data))
    ueb_data = uri.pack_extension(ueb)
    data = (write_proxy._offset_data + filler +
            pack(write_proxy.fieldstruct, len(ueb_data)) + ueb_data)
    return write_share(storage_rref, storage_index, sharenums, data)
Example #6
0
    def test_pack(self):
        data = {"stuff": "value",
                "size": 12,
                "needed_shares": 3,
                "big_hash": hashutil.tagged_hash("foo", "bar"),
                }
        ext = uri.pack_extension(data)
        d = uri.unpack_extension(ext)
        self.failUnlessReallyEqual(d["stuff"], "value")
        self.failUnlessReallyEqual(d["size"], 12)
        self.failUnlessReallyEqual(d["big_hash"], hashutil.tagged_hash("foo", "bar"))

        readable = uri.unpack_extension_readable(ext)
        self.failUnlessReallyEqual(readable["needed_shares"], 3)
        self.failUnlessReallyEqual(readable["stuff"], "value")
        self.failUnlessReallyEqual(readable["size"], 12)
        self.failUnlessReallyEqual(readable["big_hash"],
                             base32.b2a(hashutil.tagged_hash("foo", "bar")))
        self.failUnlessReallyEqual(readable["UEB_hash"],
                             base32.b2a(hashutil.uri_extension_hash(ext)))
Example #7
0
 def _ueb_hash(self):
     return hashutil.uri_extension_hash(uri.pack_extension(
         self._ueb_data), )