code: def update(self, data, length=None):
          
          if self.digest_finalized:
              raise DigestError("No updates allowed")
          if not isinstance(data, bintype):
              raise TypeError("A byte string is expected")
          if length is None:
              length = len(data)
          elif length > len(data):
              raise ValueError("Specified length is greater than length of data")
          result = libcrypto.EVP_DigestUpdate(self.ctx, c_char_p(data), length)
          if result != 1:
              raise DigestError("Unable to update digest")
docs: Hashes given byte string
  
          @param data - string to hash
          @param length - if not specifed, entire string is hashed,
                  otherwise only first length bytes