---
title: SDF Engine简介与使用
description: "SDF Engine是OpenSSL的一个密码算法引擎，用户通过该引擎可以使用OpenSSL接口调用SDF的算法能力。SDF Engine已打包在SDF套件的安装包中，安装完成后即可使用。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcctrustzone/cca/devg/Kunpeng_ommercialcryptography_16_0002.html
sourcePath: /source/zh/kunpengcctrustzone/cca/devg/Kunpeng_ommercialcryptography_16_0002.html
indexId: 98b8e1667a8b3f607750ed17ddfdb739694b6a2adf093f6af5d12d6f60f9955c81
---
# SDF Engine简介与使用

SDF Engine是OpenSSL的一个密码算法引擎，用户通过该引擎可以使用OpenSSL接口调用SDF的算法能力。SDF Engine已打包在SDF套件的安装包中，安装完成后即可使用。

SDF Engine的使用主要包括以下三步：

1. 加载ENGINE。

  - 调用ENGINE_load_dynamic()并获取OpenSSL动态库加载器；
  - 通过ENGINE_ctrl_cmd_string加载SDF Engine；
  - 执行ENGINE_init对SDF Engine进行初始化，最终得到SDF Engine句柄
2. 通过EVP层调用算法。

  - SM3哈希：使用EVP_DigestInit_ex/EVP_DigestUpdate/EVP_DigestFinal_ex ，传入已加载的SDF Engine句柄和数据；
  - SM4对称加解密(ECB/CBC/GCM)：使用EVP_EncryptInit_ex/EVP_EncryptUpdate/EVP_EncryptFinal_ex(解密对应Decrypt函数)，传入已加载的SDF Engine句柄和数据；
3. 释放资源。

  - 算法调用完成后，依次释放EVP_CIPHER_CTX/EVP_MD_CTX。
  - 最后调用ENGINE_free(g_engine)和ENGINE_cleanup()卸载ENGINE。
