Exemple #1
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()
Exemple #2
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()
Exemple #3
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()
Exemple #4
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
Exemple #5
0
 def get_blob_hashsum(b: typing.Dict):
     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()
Exemple #6
0
 def calculate_sd_hash(self) -> str:
     h = get_lbry_hash_obj()
     h.update(self.as_json())
     return h.hexdigest()
Exemple #7
0
from lbry.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
Exemple #8
0
 def calculate_old_sort_sd_hash(self):
     h = get_lbry_hash_obj()
     h.update(self.old_sort_json())
     return h.hexdigest()