小编DSI*_*SII的帖子

C++/OpenSSL:从缓冲区而不是文件使用根CA(SSL_CTX_load_verify_locations)

我正在使用OpenSSL来验证服务器的证书.由于OpenSSL在没有任何内置根CA的情况下发货,我们必须使用我们的软件(我们静态链接OpenSSL)自行分发根CA证书.通常,执行此操作的方法是以PEM格式分发证书文件并调用SSL_CTX_load_verify_locations.

但是,此函数采用文件/目录路径并直接从文件系统读取根证书文件.我们真的希望能够将证书硬编码到我们的二进制文件中,而不是将其保存到文件系统中.

换句话说,我们真的希望像SSL_CTX_load_verify_locations这样的函数采用X509*而不是文件路径.

这样的事情存在吗?或者是否有一种简单的方法可以将它们自己组合在一起?我们似乎无法找到关于此的更多信息.

非常感谢您的任何建议!

c++ security ssl openssl ssl-certificate

12
推荐指数
1
解决办法
6281
查看次数

C++中可扩展的自动类注册

C++中的自动类注册是一项常见任务,这是StackOverflow上常见的问题:

在对象工厂中注册对象创建者

以某种方式在列表中注册我的类

使用宏自动注册对象创建者功能

c ++派生类型的自动工厂注册

基本目标是自动向某些注册表或工厂注册类,以便以后可以对每个类进行一些工作.

这是一种成熟的技术,由(例如)Google Test(http://code.google.com/p/googletest)等库使用,它自动注册Test类的子类,以便每个测试都可以自动实例化并在测试执行期间运行.

注册可以通过实例化其构造函数进行注册的静态注册器类,或者通过巧妙地使用CRTP并将注册代码放在基类构造函数中,或者您喜欢的任何内容(上面的链接提供了几种不同的可能技术)来完成.

但是,当我实施任何这些技术时,我发现它们的扩展性非常差.如果我在Google Test中有10,000个TEST宏调用,则编译和链接会停止(MSVC 2010)并且二进制大小会爆炸.如果我以另一种方式实现,使用10,000个子类与静态注册器,我看到相同的行为.

例如,考虑简化的例子:

#include <iostream>
#include <string>

class Base {

    public:

        Base( const std::string& Name_ ) : Name( Name_ ) { ; }
       ~Base() { ; }

        virtual std::string GetName() const { return Name; }
        virtual void DoSomething() = 0;

    private:

        std::string Name;

};

class Registry {

    public:

        static Registry& GetInstance() {
            static Registry* Instance = new Registry();
            return *Instance;
        }

        void Register( const Base* b ) …
Run Code Online (Sandbox Code Playgroud)

c++ macros templates c-preprocessor

6
推荐指数
1
解决办法
3941
查看次数

NTFS $MFT 文件可以有子记录吗?

我正在编写一些代码来解析 NTFS 卷中磁盘上的 MFT。这很简单,但一个特殊的角落案例引起了我的注意,我在互联网上的任何地方都找不到明确的答案。

对于 NTFS 中的普通文件,如果文件的属性多于单个记录的容量(例如,如果文件有很多硬链接,则有很多 $FILE_NAME 属性,或者很多$DATA 属性(如果它有许多备用数据流)。

参考编号为 0 的 $MFT 文件保存 MFT 本身的数据运行。通常它是一个没有孩子的单一记录。$MFT 文件是否有可能有子记录?如果可能的话,你怎么知道在哪里可以找到它们?这些子记录是否必须以非常低的参考号存储,以便您可以可靠地获取它们,而不必已经解析 $MFT 以知道它们在磁盘上的位置?

ntfs file ntfs-mft

6
推荐指数
1
解决办法
1082
查看次数