docs: def calculate_authentication_data(self, key):
          '''
          Calculate the authentication data based on the current key-id and the
          given key.
          '''
          # This one is easy
          if self.key_id == KEY_ID_NONE:
              return ''
  
          # Determine the digestmod and how long the authentication data will be
          if self.key_id == KEY_ID_HMAC_SHA_1_96:
              digestmod = hashlib.sha1
              data_length = 20
          elif self.key_id == KEY_ID_HMAC_SHA_256_128:
              digestmod = hashlib.sha256
              data_length = 32
          else:
              raise ValueError('Unknown Key ID')
  
          # Fill the authentication data with the right number of zeroes
          # after storing the original first so we can restore it later
          current_authentication_data = self.authentication_data
          self.authentication_data = '\x00' * data_length
  
          # Build the packet
          msg = self.to_bytes()
  
          # Restore the authentication data
          self.authentication_data = current_authentication_data
  
          # Return the authentication data based on the generated packet
          # and the given key
          return hmac.new(key, msg, digestmod).digest()