code: def _sign_simple_signature_fulfillment(cls, input_, message, key_pairs):
          
          # NOTE: To eliminate the dangers of accidentally signing a condition by
          #       reference, we remove the reference of input_ here
          #       intentionally. If the user of this class knows how to use it,
          #       this should never happen, but then again, never say never.
          input_ = deepcopy(input_)
          public_key = input_.owners_before[0]
          message = sha3_256(message.encode())
          if input_.fulfills:
              message.update('{}{}'.format(
                  input_.fulfills.txid, input_.fulfills.output).encode())
  
          try:
              # cryptoconditions makes no assumptions of the encoding of the
              # message to sign or verify. It only accepts bytestrings
              input_.fulfillment.sign(
                  message.digest(), base58.b58decode(key_pairs[public_key].encode()))
          except KeyError:
              raise KeypairMismatchException('Public key {} is not a pair to '
                                             'any of the private keys'
                                             .format(public_key))
          return input_
docs: Signs a Ed25519Fulfillment.
  
              Args:
                  input_ (:class:`~bigchaindb.common.transaction.
                      Input`) The input to be signed.
                  message (str): The message to be signed
                  key_pairs (dict): The keys to sign the Transaction with.