docs: def fill_key_info(self, key_info, signature_method):
          """
          Fills the KeyInfo node
          :param key_info: KeyInfo node 
          :type key_info: lxml.etree.Element
          :param signature_method: Signature node to use
          :type signature_method: str
          :return: None
          """
          x509_data = key_info.find('ds:X509Data', namespaces=constants.NS_MAP)
          if x509_data is not None:
              self.fill_x509_data(x509_data)
          key_name = key_info.find('ds:KeyName', namespaces=constants.NS_MAP)
          if key_name is not None and self.key_name is not None:
              key_name.text = self.key_name
          key_value = key_info.find('ds:KeyValue', namespaces=constants.NS_MAP)
          if key_value is not None:
              key_value.text = '\n'
              signature = constants.TransformUsageSignatureMethod[
                  signature_method
              ]
              key = self.public_key
              if self.public_key is None:
                  key = self.private_key.public_key()
              if not isinstance(
                      key, signature['method'].public_key_class
              ):
                  raise Exception('Key not compatible with signature method')
              signature['method'].key_value(key_value, key)