Пример #1
0
bool key_store_crypto::add_key(const key & k)
{
    std::lock_guard<std::recursive_mutex> l1(mutex_);

    if (is_crypted() == false)
    {
        return key_store_basic::add_key(k);
    }

    if (is_locked())
    {
        return false;
    }

    std::vector<std::uint8_t> crypted_secret;

    auto public_key = k.get_public_key();

    bool compressed = false;

    if (
        crypter::encrypt_secret(m_master_key, k.get_secret(compressed),
                                public_key.get_hash(), crypted_secret) == false
    )
    {
        return false;
    }

    if (add_crypted_key(k.get_public_key(), crypted_secret) == false)
    {
        return false;
    }

    return true;
}