| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you 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$ |
| * |
| */ |
| |
| #ifndef XKMSSTATUS_INCLUDE |
| #define XKMSSTATUS_INCLUDE |
| |
| // XSEC Includes |
| |
| #include <xsec/framework/XSECDefs.hpp> |
| |
| /** |
| * @ingroup xkms |
| */ |
| |
| /** |
| * @brief Interface definition for the Status elements |
| * |
| * The \<Status\> 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 |
| <!-- Status --> |
| <element name="Status" type="xkms:StatusType"/> |
| <complexType name="StatusType"> |
| <sequence> |
| <element ref="xkms:ValidReason" minOccurs="0" |
| maxOccurs="unbounded"/> |
| <element ref="xkms:IndeterminateReason" minOccurs="0" |
| maxOccurs="unbounded"/> |
| <element ref="xkms:InvalidReason" minOccurs="0" |
| maxOccurs="unbounded"/> |
| </sequence> |
| <attribute name="StatusValue" type="xkms:KeyBindingStatus" |
| use="required"/> |
| </complexType> |
| <simpleType name="KeyBindingStatus"> |
| <restriction base="QName"> |
| <enumeration value="xkms:Valid"/> |
| <enumeration value="xkms:Invalid"/> |
| <enumeration value="xkms:Indeterminate"/> |
| </restriction> |
| </simpleType> |
| <!-- /Status --> |
| \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 */ |