EVP_CIPHER-SM4(7ssl)

EVP_CIPHER-SM47ssl

The sm4 evp_cipher implementations

Overview

Support for SM4 symmetric encryption using the EVP_CIPHER API.

Algorithm Names

The following algorithms are available in the default provider:

"SM4-CBC:SM4"
"SM4-ECB"
"SM4-CTR"
"SM4-OFB" or "SM4-OFB128"
"SM4-CFB" or "SM4-CFB128"
"SM4-GCM"
"SM4-CCM"
"SM4-XTS"

Parameters

This implementation supports the parameters described in "PARAMETERS" in EVP_EncryptInit(3).

Notes

SM4 implementations in OpenSSL may use secret-dependent table lookups and are not guaranteed to be constant-time. In particular, the portable C implementation uses S-box and T-table lookups and may be vulnerable to cache-timing side-channel attacks. Which code path is used depends on CPU capabilities; see OPENSSL_armcap(3), OPENSSL_ia32cap(3) and OPENSSL_riscvcap(3).

The SM4-XTS implementation allows streaming to be performed, but each EVP_EncryptUpdate(3) or EVP_DecryptUpdate(3) call requires each input to be a multiple of the blocksize. Only the final EVP_EncryptUpdate() or EVP_DecryptUpdate() call can optionally have an input that is not a multiple of the blocksize but is larger than one block. In that case ciphertext stealing (CTS) is used to fill the block.

Releases

3 releases since Debian 12 (Bookworm); the text changed 2 times.

  1. 12
  2. 13
  3. Arch

From openssl 3.6.5-1 in Arch Linux 2026-11-01. Parsed by carta from the page's man source.