Esempio n. 1
0
def get_stream_hash(hex_stream_name, key, hex_suggested_file_name, blob_infos):
    h = get_lbry_hash_obj()
    h.update(hex_stream_name.encode())
    h.update(key.encode())
    h.update(hex_suggested_file_name.encode())
    blobs_hashsum = get_lbry_hash_obj()
    for blob in blob_infos:
        blobs_hashsum.update(get_blob_hashsum(blob))
    h.update(blobs_hashsum.digest())
    return h.hexdigest()
Esempio n. 2
0
 def calculate_stream_hash(hex_stream_name: bytes, key: bytes, hex_suggested_file_name: bytes,
                           blob_infos: typing.List[typing.Dict]) -> str:
     h = get_lbry_hash_obj()
     h.update(hex_stream_name)
     h.update(key)
     h.update(hex_suggested_file_name)
     blobs_hashsum = get_lbry_hash_obj()
     for blob in blob_infos:
         blobs_hashsum.update(StreamDescriptor.get_blob_hashsum(blob))
     h.update(blobs_hashsum.digest())
     return h.hexdigest()
Esempio n. 3
0
def generate_id(num=None):
    h = get_lbry_hash_obj()
    if num is not None:
        h.update(str(num).encode())
    else:
        h.update(str(random.getrandbits(512)).encode())
    return h.digest()
Esempio n. 4
0
 def __init__(self, length_getter, finished_cb):
     self.write_handle = BytesIO()
     self.length_getter = length_getter
     self.finished_cb = finished_cb
     self.finished_cb_d = None
     self._hashsum = get_lbry_hash_obj()
     self.len_so_far = 0
Esempio n. 5
0
    def _create_and_add_blob(self, should_announce=False):
        # create and add blob to blob manager
        data_len = random.randint(1, 1000)
        data = b''.join(
            random.choice(string.ascii_lowercase).encode()
            for _ in range(data_len))

        hashobj = get_lbry_hash_obj()
        hashobj.update(data)
        out = hashobj.hexdigest()
        blob_hash = out

        # create new blob
        yield self.bm.setup()
        blob = yield self.bm.get_blob(blob_hash, len(data))

        writer, finished_d = yield blob.open_for_writing(self.peer)
        yield writer.write(data)
        yield self.bm.blob_completed(blob, should_announce)

        # check to see if blob is there
        self.assertTrue(os.path.isfile(os.path.join(self.blob_dir, blob_hash)))
        blobs = yield self.bm.get_all_verified_blobs()
        self.assertIn(blob_hash, blobs)
        defer.returnValue(blob_hash)
Esempio n. 6
0
def encrypt_blob_bytes(key: bytes, iv: bytes, unencrypted: bytes) -> typing.Tuple[bytes, str]:
    cipher = Cipher(AES(key), modes.CBC(iv), backend=backend)
    padder = PKCS7(AES.block_size).padder()
    encryptor = cipher.encryptor()
    encrypted = encryptor.update(padder.update(unencrypted) + padder.finalize()) + encryptor.finalize()
    digest = get_lbry_hash_obj()
    digest.update(encrypted)
    return encrypted, digest.hexdigest()
Esempio n. 7
0
 def __init__(self, blob_dir):
     self.blob_dir = blob_dir
     self.buffer = BytesIO()
     self._is_open = True
     self._hashsum = get_lbry_hash_obj()
     self.len_so_far = 0
     self.blob_hash = None
     self.length = None
Esempio n. 8
0
 def __init__(self, expected_blob_hash: str,
              get_length: typing.Callable[[],
                                          int], finished: asyncio.Future):
     self.expected_blob_hash = expected_blob_hash
     self.get_length = get_length
     self.buffer = BytesIO()
     self.finished = finished
     self.finished.add_done_callback(lambda *_: self.close_handle())
     self._hashsum = get_lbry_hash_obj()
     self.len_so_far = 0
Esempio n. 9
0
def get_blob_hashsum(b):
    length = b['length']
    if length != 0:
        blob_hash = b['blob_hash']
    else:
        blob_hash = None
    blob_num = b['blob_num']
    iv = b['iv']
    blob_hashsum = get_lbry_hash_obj()
    if length != 0:
        blob_hashsum.update(blob_hash.encode())
    blob_hashsum.update(str(blob_num).encode())
    blob_hashsum.update(iv.encode())
    blob_hashsum.update(str(length).encode())
    return blob_hashsum.digest()
Esempio n. 10
0
from lbrynet.cryptoutils import get_lbry_hash_obj

MAX_BLOB_SIZE = 2 * 2**20

# digest_size is in bytes, and blob hashes are hex encoded
blobhash_length = get_lbry_hash_obj().digest_size * 2
Esempio n. 11
0
 def calculate_sd_hash(self) -> str:
     h = get_lbry_hash_obj()
     h.update(self.as_json())
     return h.hexdigest()
Esempio n. 12
0
 def calculate_old_sort_sd_hash(self):
     h = get_lbry_hash_obj()
     h.update(self.old_sort_json())
     return h.hexdigest()