OpenCSP开源程序解析之OPENCSP_Alg.cpp

#include ".\opencsp_alg.h"

DWORD OPENCSP_Alg::_index = 0;

BOOL OPENCSP_Alg::isAlgSupported(ALG_ID algId)         //判断algId是否是支持的算法
{
    for (DWORD i = 0; i < M_OPENCSP_ALG_INFO_NUM; i++)  //M_OPENCSP_ALG_INFO_NUM 支持的算法的个数
    {
        if (s_algInfo[i].aiAlgid == algId)  //结构体的aiAlgid为算法id
            return TRUE;
    }
    return FALSE;
} 

const OPENCSP_ALG_INFO_EX* OPENCSP_Alg::getAt(DWORD index)  //根据索引返回算法地址,OPENCSP_ALG_INFO_EX*类型
{
    if (index > M_OPENCSP_ALG_INFO_NUM - 1) return NULL;
    return &s_algInfo[index++];
}

const OPENCSP_ALG_INFO_EX* OPENCSP_Alg::getNext()  //索引号递增,得到下一个算法地址
{
    if (_index > M_OPENCSP_ALG_INFO_NUM - 1) 
    {
        _index = 0;
        return NULL;
    }
    return &s_algInfo[_index++];  //索引加1,_index是成员变量
}

DWORD OPENCSP_Alg::getKeyLen(ALG_ID algId)      //得到algId这个算法的dwDefaultLen
{
    for (DWORD i = 0; i < M_OPENCSP_ALG_INFO_NUM; i++)
    {
        if (s_algInfo[i].aiAlgid == algId)
            return s_algInfo[i].dwDefaultLen;
    }
    return 0;
}

你可能感兴趣的:(opencsp)