{
  "iface": "futoin.auth.stateless",
  "version": "0.4",
  "ftn3rev": "1.9",
  "imports": [
    "futoin.ping:1.0",
    "futoin.auth.types:0.4"
  ],
  "types": {
    "ClearSecField": {
      "type": "map",
      "fields": {
        "user": "LocalUserID",
        "secret": "Password"
      }
    },
    "MACSecField": {
      "type": "map",
      "fields": {
        "user": "LocalUserID",
        "algo": "MACAlgo",
        "sig": "MACValue"
      }
    }
  },
  "funcs": {
    "checkClear": {
      "params": {
        "sec": "ClearSecField",
        "source": "ClientFingerprints"
      },
      "result": "AuthInfo",
      "throws": [
        "SecurityError"
      ],
      "seclvl": "SafeOps"
    },
    "checkMAC": {
      "params": {
        "base": "MACBase",
        "sec": "MACSecField",
        "source": "ClientFingerprints"
      },
      "result": "AuthInfo",
      "throws": [
        "SecurityError"
      ],
      "seclvl": "PrivilegedOps"
    },
    "genMAC": {
      "params": {
        "base": "MACBase",
        "reqsec": "MACSecField"
      },
      "result": "MACValue",
      "throws": [
        "SecurityError"
      ],
      "seclvl": "PrivilegedOps"
    },
    "getMACSecret": {
      "params": {
        "user": "LocalUserID"
      },
      "result": "MACKey",
      "throws": [
        "UnknownUser",
        "NotSet"
      ],
      "desc": "For internal caching purposes",
      "seclvl": "PrivilegedOps"
    }
  },
  "requires": [
    "SecureChannel",
    "MessageSignature",
    "BinaryData"
  ]
}