Openssl回调函数

    技术2024-06-29  67

        Openssl中大量用到了回调函数。回调函数一般定义在数据结构中,是一个函数指针。通过回调函数,客户可以自行编写函数,让openssl函数来调用它,即用户调用openssl提供的函数,openssl函数再回调用户提供的函数。这样方便了用户对openssl函数操作的控制。在openssl实现函数中,它一般会实现一个默认的函数来进行处理,如果用户不设置回调函数,则采用它默认的函数。

           回调函数举例:

    头文件:

    #ifndef RANDOM_H

    #define RANDOM_H 1

    typedef int *callback_random(char *random,int len);

    void    set_callback(callback_random *cb);

    int     genrate_random(char *random,int len);

    #endif

     

    源代码:

    #include "random.h"

    #include <stdio.h>

    callback_random *cb_rand=NULL;

    static int default_random(char *random,int len

    {

            memset(random,0x01,len);

            return 0;}

    void    set_callback(callback_random *cb)

    {

            cb_rand=cb;

    }

    int     genrate_random(char *random,int len){

            if(cb_rand==NULL)

                    return default_random(random,len);

            else

                    return cb_rand(random,len);

            return 0;

    }

    测试代码:

    #include "random.h"

    static int my_rand(char *rand,int len)

    {

            memset(rand,0x02,len);

            return 0;

    }

    int     main()

    {

            char    random[10];

            int     ret;

    set_callback(my_rand);

            ret=genrate_random(random,10);

            return 0;

    }

    本例子用来生产简单的随机数,如果用户提供了生成随机数回调函数,则生成随机数采用用户的方法,否则采用默认的方法。

     

     

     

     

     

     

     

    最新回复(0)