summaryrefslogtreecommitdiffstats
path: root/src/cls/otp/cls_otp_client.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/cls/otp/cls_otp_client.h')
-rw-r--r--src/cls/otp/cls_otp_client.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/cls/otp/cls_otp_client.h b/src/cls/otp/cls_otp_client.h
new file mode 100644
index 000000000..a921e4e38
--- /dev/null
+++ b/src/cls/otp/cls_otp_client.h
@@ -0,0 +1,60 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
+#ifndef CEPH_CLS_OTP_CLIENT_H
+#define CEPH_CLS_OTP_CLIENT_H
+
+#include "include/rados/librados_fwd.hpp"
+#include "cls/otp/cls_otp_types.h"
+
+namespace rados {
+ namespace cls {
+ namespace otp {
+
+ class OTP {
+ public:
+ static void create(librados::ObjectWriteOperation *op, const otp_info_t& config);
+ static void set(librados::ObjectWriteOperation *op, const std::list<otp_info_t>& entries);
+ static void remove(librados::ObjectWriteOperation *op, const std::string& id);
+ static int get(librados::ObjectReadOperation *op,
+ librados::IoCtx& ioctx, const std::string& oid,
+ const std::string& id, otp_info_t *result);
+ static int get_all(librados::ObjectReadOperation *op,
+ librados::IoCtx& ioctx, const std::string& oid,
+ std::list<otp_info_t> *result);
+// these overloads which call io_ctx.operate() or io_ctx.exec() should not be called in the rgw.
+// rgw_rados_operate() should be called after the overloads w/o calls to io_ctx.operate()/exec()
+#ifndef CLS_CLIENT_HIDE_IOCTX
+ static int get(librados::ObjectReadOperation *op,
+ librados::IoCtx& ioctx, const std::string& oid,
+ const std::list<std::string> *ids, bool get_all, std::list<otp_info_t> *result);
+ static int check(CephContext *cct, librados::IoCtx& ioctx, const std::string& oid,
+ const std::string& id, const std::string& val, otp_check_t *result);
+ static int get_current_time(librados::IoCtx& ioctx, const std::string& oid,
+ ceph::real_time *result);
+#endif
+ };
+
+ class TOTPConfig {
+ otp_info_t config;
+ public:
+ TOTPConfig(const std::string& id, const std::string& seed) {
+ config.type = OTP_TOTP;
+ config.id = id;
+ config.seed = seed;
+ }
+ void set_step_size(int step_size) {
+ config.step_size = step_size;
+ }
+ void set_window(int window) {
+ config.window = window;
+ }
+ void get_config(otp_info_t *conf) {
+ *conf = config;
+ }
+ };
+ } // namespace otp
+ } // namespace cls
+} // namespace rados
+
+#endif