blob: 202dc51da8a9026d7d26655af0b98075c97a2fc1 [file] [log] [blame]
// Copyright 2019 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef KERBEROS_KRB5_INTERFACE_H_
#define KERBEROS_KRB5_INTERFACE_H_
#include <base/compiler_specific.h>
#include <base/macros.h>
#include <string>
#include "kerberos/proto_bindings/kerberos_service.pb.h"
namespace base {
class FilePath;
}
namespace kerberos {
class Krb5Interface {
public:
Krb5Interface() = default;
virtual ~Krb5Interface() = default;
// Ticket-granting-ticket status, see GetTgtStatus().
struct TgtStatus {
// For how many seconds the ticket is still valid.
int64_t validity_seconds = 0;
// For how many seconds the ticket can be renewed.
int64_t renewal_seconds = 0;
};
// Gets a Kerberos ticket-granting-ticket for the given |principal_name|
// (user@REALM.COM). |password| is the password for the Kerberos account.
// |krb5cc_path| is the file path where the Kerberos credential cache (i.e.
// the TGT) is written to. |krb5conf_path| is the path to a Kerberos
// configuration file (krb5.conf).
virtual ErrorType AcquireTgt(const std::string& principal_name,
const std::string& password,
const base::FilePath& krb5cc_path,
const base::FilePath& krb5conf_path)
WARN_UNUSED_RESULT = 0;
// Renews an existing Kerberos ticket-granting-ticket for the given
// |principal_name| (user@REALM.COM). |krb5cc_path| is the file path of the
// Kerberos credential cache. |krb5conf_path| is the path to a Kerberos
// configuration file (krb5.conf).
virtual ErrorType RenewTgt(const std::string& principal_name,
const base::FilePath& krb5cc_path,
const base::FilePath& krb5conf_path)
WARN_UNUSED_RESULT = 0;
// Gets some stats about the ticket-granting-ticket in the credential cache
// at |krb5cc_path|.
virtual ErrorType GetTgtStatus(const base::FilePath& krb5cc_path,
TgtStatus* status) WARN_UNUSED_RESULT = 0;
private:
DISALLOW_COPY_AND_ASSIGN(Krb5Interface);
};
} // namespace kerberos
#endif // KERBEROS_KRB5_INTERFACE_H_