代码讲解 const EVP_MD *GetOpensslDigestAlg(uint32_t alg) { switch (alg) { case HCF_OPENSSL_DIGEST_NONE: return NULL; case HCF_OPENSSL_DIGEST_MD5: LOGI("set EVP_md5"); return EVP_md5(); case HCF_OPENSSL_DIGEST_SHA1: LOGI("set EVP_sha1"); return EVP_sha1(); case HCF_OPENSSL_DIGEST_SHA224: LOGI("set EVP_sha224"); return EVP_sha224(); case HCF_OPENSSL_DIGEST_SHA256: LOGI("set EVP_sha256"); return EVP_sha256(); case HCF_OPENSSL_DIGEST_SHA384: LOGI("set EVP_sha384"); return EVP_sha384(); case HCF_OPENSSL_DIGEST_SHA512: LOGI("set EVP_sha512"); return EVP_sha512(); default: LOGE("Invalid digest num is %u.", alg); return NULL; } }
时间: 2024-02-15 21:27:30 浏览: 149
这段代码定义了一个函数 `GetOpensslDigestAlg`,其作用是根据输入的参数 `alg` 返回相应的 OpenSSL 哈希算法。
在函数中,通过 `switch` 语句对参数 `alg` 进行判断,如果其值为 `HCF_OPENSSL_DIGEST_NONE`,则返回 `NULL`,否则根据对应的值调用相应的 OpenSSL 哈希算法函数,例如 `EVP_md5()`、`EVP_sha1()` 等,并返回其结果。
同时,在每次调用 OpenSSL 哈希算法函数时,会打印相应的日志,以便于调试和跟踪代码运行情况。
最后,如果参数 `alg` 的值不在预定义的范围内,则会返回 `NULL`,并打印相应的错误日志。
相关问题
代码讲解 const EVP_MD *GetOpensslDigestAlg(uint32_t alg) { switch (alg) { case HCF_OPENSSL_DIGEST_NONE: return NULL; case HCF_OPENSSL_DIGEST_MD5: LOGI("set EVP_md5"); return EVP_md5(); case HCF_OPENSSL_DIGEST_SHA1: LOGI("set EVP_sha1"); return EVP_sha1(); case HCF_OPENSSL_DIGEST_SHA224: LOGI("set EVP_sha224"); return EVP_sha224(); case HCF_OPENSSL_DIGEST_SHA256: LOGI("set EVP_sha256"); return EVP_sha256(); case HCF_OPENSSL_DIGEST_SHA384: LOGI("set EVP_sha384"); return EVP_sha384(); case HCF_OPENSSL_DIGEST_SHA512: LOGI("set EVP_sha512"); return EVP_sha512(); default: LOGE("Invalid digest num is %u.", alg); return NULL; } }
这是一个函数,名字为GetOpensslDigestAlg,它的参数是一个32位的整数alg。这个函数的作用是根据传入的alg参数来返回一个常量指针类型的EVP_MD对象,这个对象是OpenSSL库中的消息摘要算法对象。
函数内部使用了switch语句来根据alg参数的不同值返回不同的EVP_MD对象。如果alg的值为HCF_OPENSSL_DIGEST_NONE,返回NULL;如果alg的值为HCF_OPENSSL_DIGEST_MD5,返回EVP_md5()函数的返回值,表示使用MD5算法;如果alg的值为HCF_OPENSSL_DIGEST_SHA1,返回EVP_sha1()函数的返回值,表示使用SHA-1算法;以此类推。
如果传入的alg参数不在定义的取值范围内,函数会打印一条错误日志,并返回NULL。函数中也使用了LOGI和LOGE宏来输出日志信息,这些宏可能是在其他地方定义的。
阅读全文