docs: enhance crypto documentation with RSA signature schemes

Add comprehensive documentation for RSA digital signature operations supported by the cryptodev/cryptokey interface.

Includes:
- RSA-PKCS1.5: Traditional PKCS#1 v1.5 padding scheme
  - CRK_RSA_PKCS15_SIGN: Generate RSA signature with PKCS#1 v1.5 padding
  - CRK_RSA_PKCS15_VERIFY: Verify RSA signature with PKCS#1 v1.5 padding

- RSA-PSS: Probabilistic Signature Scheme for enhanced security
  - CRK_RSA_PSS_SIGN: Generate RSA signature with PSS padding
  - CRK_RSA_PSS_VERIFY: Verify RSA signature with PSS padding

Signed-off-by: makejian <makejian@xiaomi.com>
This commit is contained in:
makejian
2026-01-27 11:15:46 +08:00
committed by Xiang Xiao
parent eea0f45e04
commit 5331d5a905
+22 -33
View File
@@ -136,8 +136,8 @@ Basic Usage Pattern
For more details, refer to the cryptodev.h header file and specific driver documentation. For more details, refer to the cryptodev.h header file and specific driver documentation.
Asymmetric Cryptography and Key Management Asymmetric Cryptography
=========================================== =======================
Public Key Algorithms Public Key Algorithms
--------------------- ---------------------
@@ -145,8 +145,11 @@ Public Key Algorithms
**RSA (Rivest-Shamir-Adleman)** **RSA (Rivest-Shamir-Adleman)**
- RSA key pair generation for variable key sizes - RSA key pair generation for variable key sizes
- Digital signature generation and verification - Digital signature generation and verification with multiple padding schemes:
- PKCS#1 v1.5 padding (CRK_RSA_PKCS15_SIGN, CRK_RSA_PKCS15_VERIFY)
- PSS (Probabilistic Signature Scheme) padding (CRK_RSA_PSS_SIGN, CRK_RSA_PSS_VERIFY)
- Public key encryption and decryption - Public key encryption and decryption
- RSA operations accessible via /dev/crypto cryptodev interface
**ECDSA (Elliptic Curve Digital Signature Algorithm)** **ECDSA (Elliptic Curve Digital Signature Algorithm)**
@@ -161,39 +164,25 @@ NuttX also provides a lightweight ECC implementation and public API in
secret computation, and ECDSA sign/verify. Public key export is available in secret computation, and ECDSA sign/verify. Public key export is available in
compressed form (``ECC_BYTES + 1``) as well as X/Y uncompressed form. compressed form (``ECC_BYTES + 1``) as well as X/Y uncompressed form.
Key Management Operations RSA Digital Signature Operations
-------------------------- --------------------------------
The cryptodev module provides comprehensive key management interfaces: The cryptodev module supports RSA digital signatures via the cryptokey interface:
**Key Allocation and Validation** - **CRK_RSA_PKCS15_SIGN**: Generate RSA signature with PKCS#1 v1.5 padding
- Input: message hash, private key ID
- Output: RSA signature
- CRK_ALLOCATE_KEY: Request an available key ID from the driver - **CRK_RSA_PKCS15_VERIFY**: Verify RSA signature with PKCS#1 v1.5 padding
- CRK_VALIDATE_KEYID: Check if a specified key ID is available in the driver - Input: message hash, signature, public key ID
- Output: verification result
**Key Import and Export** - **CRK_RSA_PSS_SIGN**: Generate RSA signature with PSS padding
- Input: message hash, private key ID
- Output: RSA signature
- CRK_IMPORT_KEY: Import key data into the driver for use in cryptographic operations - **CRK_RSA_PSS_VERIFY**: Verify RSA signature with PSS padding
- CRK_EXPORT_KEY: Export raw key data or private key from a keypair - Input: message hash, signature, public key ID
- CRK_EXPORT_PUBLIC_KEY: Export only the public key portion of a keypair - Output: verification result
**Key Generation** Both padding schemes are supported via the cryptokey ioctl interface accessible through ``/dev/crypto``.
- CRK_GENERATE_AES_KEY: Generate AES key data with specified key ID
- CRK_GENERATE_RSA_KEY: Generate RSA keypair (public and private) with specified key ID
- CRK_GENERATE_SECP256R1_KEY: Generate ECDSA keypair on SECP256R1 curve with specified key ID
**Key Lifecycle Management**
- CRK_DELETE_KEY: Remove key with specified key ID from the driver
- CRK_SAVE_KEY: Persist key data to FLASH storage for non-volatile storage
- CRK_LOAD_KEY: Load previously saved key data from FLASH into RAM
**Cryptographic Operations Using Keys**
Once keys are allocated, generated, or imported, they can be used for:
- Symmetric encryption/decryption operations (AES)
- RSA signature generation and verification
- ECDSA digital signature operations
- Key exchange protocols