Blame lang/cpp/src/tofuinfo.h

Packit d7e8d0
/*
Packit d7e8d0
  tofuinfo.h - wraps gpgme tofu info
Packit d7e8d0
  Copyright (C) 2016 by Bundesamt für Sicherheit in der Informationstechnik
Packit d7e8d0
  Software engineering by Intevation GmbH
Packit d7e8d0
Packit d7e8d0
  This file is part of GPGME++.
Packit d7e8d0
Packit d7e8d0
  GPGME++ is free software; you can redistribute it and/or
Packit d7e8d0
  modify it under the terms of the GNU Library General Public
Packit d7e8d0
  License as published by the Free Software Foundation; either
Packit d7e8d0
  version 2 of the License, or (at your option) any later version.
Packit d7e8d0
Packit d7e8d0
  GPGME++ is distributed in the hope that it will be useful,
Packit d7e8d0
  but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit d7e8d0
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit d7e8d0
  GNU Library General Public License for more details.
Packit d7e8d0
Packit d7e8d0
  You should have received a copy of the GNU Library General Public License
Packit d7e8d0
  along with GPGME++; see the file COPYING.LIB.  If not, write to the
Packit d7e8d0
  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Packit d7e8d0
  Boston, MA 02110-1301, USA.
Packit d7e8d0
*/
Packit d7e8d0
Packit d7e8d0
#ifndef __GPGMEPP_TOFUINFO_H__
Packit d7e8d0
#define __GPGMEPP_TOFUINFO_H__
Packit d7e8d0
Packit d7e8d0
#include "gpgmepp_export.h"
Packit d7e8d0
Packit d7e8d0
#include "global.h"
Packit d7e8d0
Packit d7e8d0
#include <memory>
Packit d7e8d0
Packit d7e8d0
namespace GpgME
Packit d7e8d0
{
Packit d7e8d0
Packit d7e8d0
class GPGMEPP_EXPORT TofuInfo
Packit d7e8d0
{
Packit d7e8d0
public:
Packit d7e8d0
    TofuInfo();
Packit d7e8d0
    explicit TofuInfo(gpgme_tofu_info_t info);
Packit d7e8d0
Packit d7e8d0
    const TofuInfo &operator=(TofuInfo other)
Packit d7e8d0
    {
Packit d7e8d0
        swap(other);
Packit d7e8d0
        return *this;
Packit d7e8d0
    }
Packit d7e8d0
Packit d7e8d0
    void swap(TofuInfo &other)
Packit d7e8d0
    {
Packit d7e8d0
        using std::swap;
Packit d7e8d0
        swap(this->d, other.d);
Packit d7e8d0
    }
Packit d7e8d0
Packit d7e8d0
    bool isNull() const;
Packit d7e8d0
Packit d7e8d0
    /* @enum Validity
Packit d7e8d0
     * @brief The TOFU Validity. */
Packit d7e8d0
    enum Validity : unsigned int {
Packit d7e8d0
        /*! Unknown (uninitialized).*/
Packit d7e8d0
        ValidityUnknown,
Packit d7e8d0
        /*! TOFU Conflict.*/
Packit d7e8d0
        Conflict,
Packit d7e8d0
        /*! Key without history.*/
Packit d7e8d0
        NoHistory,
Packit d7e8d0
        /*! Key with too little history.*/
Packit d7e8d0
        LittleHistory,
Packit d7e8d0
        /*! Key with enough history for basic trust.*/
Packit d7e8d0
        BasicHistory,
Packit d7e8d0
        /*! Key with a lot of history.*/
Packit d7e8d0
        LargeHistory,
Packit d7e8d0
    };
Packit d7e8d0
    Validity validity() const;
Packit d7e8d0
Packit d7e8d0
    /* @enum Policy
Packit d7e8d0
     * @brief The TOFU Validity. */
Packit d7e8d0
    enum Policy : unsigned int {
Packit d7e8d0
        /*! GPGME_TOFU_POLICY_NONE */
Packit d7e8d0
        PolicyNone,
Packit d7e8d0
        /*! GPGME_TOFU_POLICY_AUTO */
Packit d7e8d0
        PolicyAuto,
Packit d7e8d0
        /*! GPGME_TOFU_POLICY_GOOD */
Packit d7e8d0
        PolicyGood,
Packit d7e8d0
        /*! GPGME_TOFU_POLICY_UNKNOWN */
Packit d7e8d0
        PolicyUnknown,
Packit d7e8d0
        /*! GPGME_TOFU_POLICY_BAD */
Packit d7e8d0
        PolicyBad,
Packit d7e8d0
        /*! GPGME_TOFU_POLICY_ASK */
Packit d7e8d0
        PolicyAsk,
Packit d7e8d0
    };
Packit d7e8d0
    Policy policy() const;
Packit d7e8d0
Packit d7e8d0
    /* Number of signatures seen for this binding.  Capped at USHRT_MAX.  */
Packit d7e8d0
    unsigned short signCount() const;
Packit d7e8d0
Packit d7e8d0
    /* Number of encryption done to this binding.  Capped at USHRT_MAX.  */
Packit d7e8d0
    unsigned short encrCount() const;
Packit d7e8d0
Packit d7e8d0
    /** Number of seconds since epoch when the first message was verified */
Packit d7e8d0
    unsigned long signFirst() const;
Packit d7e8d0
Packit d7e8d0
    /** Number of seconds since epoch when the last message was verified */
Packit d7e8d0
    unsigned long signLast() const;
Packit d7e8d0
Packit d7e8d0
    /** Number of seconds since epoch when the first message was encrypted */
Packit d7e8d0
    unsigned long encrFirst() const;
Packit d7e8d0
Packit d7e8d0
    /** Number of seconds since epoch when the last message was encrypted */
Packit d7e8d0
    unsigned long encrLast() const;
Packit d7e8d0
Packit d7e8d0
    /* If non-NULL a human readable string summarizing the TOFU data. */
Packit d7e8d0
    const char *description() const;
Packit d7e8d0
Packit d7e8d0
private:
Packit d7e8d0
    class Private;
Packit d7e8d0
    std::shared_ptr<Private> d;
Packit d7e8d0
};
Packit d7e8d0
Packit d7e8d0
GPGMEPP_EXPORT std::ostream &operator<<(std::ostream &os, const TofuInfo &info;;
Packit d7e8d0
Packit d7e8d0
} // namespace GpgME
Packit d7e8d0
Packit d7e8d0
GPGMEPP_MAKE_STD_SWAP_SPECIALIZATION(TofuInfo)
Packit d7e8d0
#endif // __GPGMEPP_TOFUINFO_H__