/* * Copyright 2004-2005 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * XSEC * * XKMSStatus := Interface for Status elements (in KeyBinding) * * $Id: XKMSStatus.hpp 351364 2005-06-04 11:30:26Z blautenb $ * */ #ifndef XKMSSTATUS_INCLUDE #define XKMSSTATUS_INCLUDE // XSEC Includes #include /** * @ingroup xkms */ /** * @brief Interface definition for the Status elements * * The \ Element is used in a KeyBinding message to a client * to provide status information for keys that are returned in a * ValidateResult message * * The schema definition for KeyBinding is as follows : * * \verbatim \endverbatim */ class XKMSStatus { /** @name Constructors and Destructors */ //@{ protected: XKMSStatus() {}; public: virtual ~XKMSStatus() {}; //@} enum StatusValue { StatusUndefined = 0, /** Error - the status value is undefined */ Valid = 1, /** Good key! */ Invalid = 2, /** Bad key! */ Indeterminate = 3 /** Smarmy key! */ }; enum StatusReason { ReasonUndefined = 0, /** The reason is undefined or unknown */ IssuerTrust = 1, /** The issuer of the info is considered good */ RevocationStatus = 2, /** Key is/is not revoked */ ValidityInterval = 3, /** Key not expired */ Signature = 4 /** Signature on the provided data is good */ }; /** @name Getter methods */ //@{ /** * \brief Get the KeyBinding status assertion * * The Status element has a StatusValue attribute that defines * the validity of the key in question * * @return the status assertion */ virtual StatusValue getStatusValue(void) const = 0; /** * \brief Find the Reason for a particular facet of status codes * * For each status reason, a Status can define a number of reasons * to return to a client. There are some controls on this (e.g. you cannot * have an InvalidReason if the actual KeyBindingStatus is Valid), but * you can have things in ValidReason and IndeterminateReason for an Invalid * result. This call allows you to find out about any facet of a reason * * @param status The particular status value you want to find a reason for * @param reason The particular reason that you want to determine is or is not * set * @return true if the particular reason is set for the given status, false * otherwise */ virtual bool getStatusReason(StatusValue status, StatusReason reason) const = 0; //@} /** @name Setter Methods */ //@{ /** * \brief Activate or de-activate a particular reason in the status result * * For each status reason, a Status can define a number of reasons * to return to a client. There are some controls on this (e.g. you cannot * have an InvalidReason if the actual KeyBindingStatus is Valid), but * you can have things in ValidReason and IndeterminateReason for an Invalid * result. This call allows you to set any facet of a reason * * @param status The particular status value you want to set a reason for * @param reason The particular reason that you want to set * @param value true to turn on the reason, false to turn it off */ virtual void setStatusReason(StatusValue status, StatusReason reason, bool value) = 0; //@} private: // Unimplemented XKMSStatus(const XKMSStatus &); XKMSStatus & operator = (const XKMSStatus &); }; #endif /* XKMSSTATUS_INCLUDE */