本文整理汇总了C++中id_type::data方法的典型用法代码示例。如果您正苦于以下问题:C++ id_type::data方法的具体用法?C++ id_type::data怎么用?C++ id_type::data使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类id_type
的用法示例。
在下文中一共展示了id_type::data方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: hkdf
FileBase::FileBase(int data_fd, int meta_fd, const key_type& key_, const id_type& id_, bool check)
: m_lock()
, m_refcount(1)
, m_header()
, m_id(id_)
, m_data_fd(data_fd)
, m_meta_fd(meta_fd)
, m_dirty(false)
, m_check(check)
, m_stream()
, m_removed(false)
{
auto data_stream = std::make_shared<POSIXFileStream>(data_fd);
auto meta_stream = std::make_shared<POSIXFileStream>(meta_fd);
key_type data_key, meta_key;
byte generated_keys[KEY_LENGTH * 3];
hkdf(key_.data(),
key_.size(),
nullptr,
0,
id_.data(),
id_.size(),
generated_keys,
sizeof(generated_keys));
memcpy(data_key.data(), generated_keys, KEY_LENGTH);
memcpy(meta_key.data(), generated_keys + KEY_LENGTH, KEY_LENGTH);
memcpy(m_key.data(), generated_keys + 2 * KEY_LENGTH, KEY_LENGTH);
auto crypt = make_cryptstream_aes_gcm(
std::move(data_stream), std::move(meta_stream), data_key, meta_key, id_, check);
m_stream = crypt.first;
m_header = crypt.second;
read_header();
}
示例2: get_entry
bool SimpleDirectory::get_entry(const std::string& name, id_type& id, int& type)
{
auto it = m_table.find(name);
if (it == m_table.end())
return false;
memcpy(id.data(), it->second.first.data(), id.size());
type = it->second.second;
return true;
}
示例3: table
#include <algorithm>
#include <set>
#include <fcntl.h>
#include <unistd.h>
TEST_CASE("File table")
{
using namespace securefs;
char dir_template[] = "/tmp/securefs_file_table.XXXXXXX";
mkdtemp(dir_template);
key_type master_key;
id_type null_id, file_id;
memset(master_key.data(), 0xFF, master_key.size());
memset(null_id.data(), 0, null_id.size());
memset(file_id.data(), 0xEE, file_id.size());
const char* xattr_name = "com.apple.FinderInfo...";
const securefs::PODArray<char, 32> xattr_value(0x11);
{
int tmp_fd = ::open(dir_template, O_RDONLY);
REQUIRE(tmp_fd >= 0);
FileTable table(tmp_fd, master_key, 0);
auto dir = dynamic_cast<Directory*>(table.create_as(null_id, FileBase::DIRECTORY));
dir->add_entry(".", null_id, FileBase::DIRECTORY);
dir->add_entry("..", null_id, FileBase::DIRECTORY);
dir->add_entry("hello", file_id, FileBase::REGULAR_FILE);
try
{
dir->setxattr(xattr_name, xattr_value.data(), xattr_value.size(), 0);