def METHOD_NAME(infoList):
    """
    Format the List of Proxy steps dictionaries as a printable string.
    """
    contentsList = []
    for i in range(len(infoList)):
        contentsList.append(f" + Step {i}")
        stepInfo = infoList[i]
        for key in (
            "subject",
            "issuer",
            "serial",
            "not after",
            "not before",
            "group",
            "VOMS ext",
            "lifetime",
            "extensions",
        ):
            if key in stepInfo:
                value = stepInfo[key]
                if key == "serial":
                    try:
                        # b16encode needs a string, while the serial
                        # may be a long
                        value = base64.b16encode(f"{value}")
                    except Exception as e:
                        gLogger.exception("Could not read serial:", lException=e)
                if key == "lifetime":
                    secs = value
                    hours = int(secs / 3600)
                    secs -= hours * 3600
                    mins = int(secs / 60)
                    secs -= mins * 60
                    value = "%02d:%02d:%02d" % (hours, mins, secs)
                if key == "extensions":
                    value = "\n   %s" % "\n   ".join(
                        [f"{extName.strip().rjust(20)} = {extValue.strip()}" for extName, extValue in value]
                    )
                contentsList.append(f"  {key.ljust(10).capitalize()} : {value}")
    return "\n".join(contentsList)