Cryptographic Token Interface Standard

PKCS#11


RC5-CBC with PKCS padding

RC5-CBC with PKCS padding, denoted CKM_RC5_CBC_PAD, is a mechanism for single- and multiple-part encryption and decryption; key wrapping; and key unwrapping, based on RSA Data Security's block cipher RC5; cipher-block chaining mode as defined in FIPS PUB 81; and the block cipher padding method detailed in PKCS #7.

It has a parameter, a CK_RC5_CBC_PARAMS structure, which specifies the wordsize and number of rounds of encryption to use, as well as the initialization vector for cipher block chaining mode.

The PKCS padding in this mechanism allows the length of the plaintext value to be recovered from the ciphertext value. Therefore, when unwrapping keys with this mechanism, no value should be specified for the CKA_VALUE_LEN attribute.

In addition to being able to wrap and unwrap secret keys, this mechanism can wrap and unwrap RSA, Diffie-Hellman, and DSA private keys (see Section12.9 for details). The entries in Table 77 for data length constraints when wrapping and unwrapping keys do not apply to wrapping and unwrapping private keys.

Constraints on key types and the length of data are summarized in the following table:

Table 77, RC5-CBC with PKCS Padding: Key And Data Length
Function Key type
Input length
Output length
C_Encrypt RC5
any
input length rounded up to multiple of blocksize
C_Decrypt RC5
multiple of blocksize
between 1 and blocksize bytes shorter than input length
C_WrapKey RC5
any
input length rounded up to multiple of blocksize
C_UnwrapKey RC5
multiple of blocksize
between 1 and blocksize bytes shorter than input length


RSA Security Inc. Public-Key Cryptography Standards - PKCS#11 - v210