57static const char*
s_tag =
"RSIP";
74#if defined(RA8_INSECURE_STUB_CRYPTO) || defined(RA8_OFF_TARGET)
78 const uint8_t* digest,
106 const uint8_t* digest,
108 const uint8_t* signature)
227 uint32_t* modulus_bytes_out)
229 const uint32_t modulus_bytes = internal_rsa_modulus_bytes(size);
230 if (modulus_bytes == 0U) {
233 if (!internal_rsa_pad_ok(pad)) {
236 *modulus_bytes_out = modulus_bytes;
292 const uint8_t* plaintext,
293 uint32_t plaintext_len,
299 uint32_t modulus_bytes = 0U;
300 const ra8_err_t v_err = internal_rsa_size_pad_check(size, pad, &modulus_bytes);
304 if (plaintext_len == 0U) {
307 if (plaintext_len > modulus_bytes) {
322 const uint8_t* ciphertext,
324 uint32_t plaintext_cap,
325 uint32_t* recovered_len)
331 uint32_t modulus_bytes = 0U;
332 const ra8_err_t v_err = internal_rsa_size_pad_check(size, pad, &modulus_bytes);
336 const ra8_err_t err = internal_rsa_dispatch(key,
347 if (recovered > plaintext_cap) {
351 *recovered_len = recovered;
366 const uint8_t* digest,
380 const uint8_t* digest,
382 const uint8_t* signature)
395 const uint8_t* plaintext,
396 uint32_t plaintext_len,
411 const uint8_t* ciphertext,
413 uint32_t plaintext_cap,
414 uint32_t* recovered_len)
static const char * s_tag
Logging / check tag.
Annotation-attribute framework macros for ra8-firmware.
#define RA8_INTERNAL
Marker that a function is intended to be static (file-local).
Validation and Error-Checking Macros for ra8-firmware.
#define RA8_CHECK_NULL_PTR(ptr, tag, message)
Reject nullptr pointer, returning k_ra8_err_null_ptr.
Error Code Definitions for ra8-firmware.
@ k_ra8_err_not_supported
Requested feature not compiled in, not wired, or not supported by this MCU variant.
@ k_ra8_err_invalid_arg
Invalid function argument.
@ k_ra8_ok
Success – operation completed with all postconditions satisfied.
ra8_err_codes_t ra8_err_t
Canonical error-return type used by every ra8-firmware API.
Lightweight Logging Interface for ra8-firmware.
Renesas Secure IP (RSIP-E50D) HAL driver – public API.
Cross-TU surface shared by the RSIP asymmetric + RSA split.
void internal_asym_push(ra8_rsip_off_t off, const uint8_t *buf, uint32_t len)
Stream a byte buffer into an asymmetric input lane.
void internal_asym_pull(ra8_rsip_off_t off, uint8_t *buf, uint32_t len)
Pull a byte buffer back through an asymmetric output lane.
void priv_load_handle(const ra8_rsip_key_handle_t *handle)
Stream a wrapped-key body into the engine input FIFO.
ra8_err_t priv_complete(uint32_t done_mask)
Drive a single mailbox completion (DONE poll + ack).
Cross-TU surface for the ra8_rsip driver split.
@ k_ra8_rsip_byte_bits
Shift one byte.
Renesas Secure IP (RSIP-E50D) register layout for the RA8D2.
ra8_rsip_rsa_size_t
RSA key-size selector (HUM Ch 52.1 Table 52.1 "RSA" p 3302).
@ k_ra8_rsip_rsa_4096
4096-bit RSA.
@ k_ra8_rsip_rsa_1024
1024-bit RSA.
@ k_ra8_rsip_rsa_3072
3072-bit RSA.
@ k_ra8_rsip_rsa_2048
2048-bit RSA.
ra8_rsip_asym_op_t
Opcode written to ASYM_CTRL to select the operation.
@ k_ra8_rsip_asym_op_rsa_verify
RSA signature ver.
@ k_ra8_rsip_asym_op_rsa_decrypt
RSA private decrypt.
@ k_ra8_rsip_asym_op_rsa_sign
RSA signature gen.
@ k_ra8_rsip_asym_op_rsa_encrypt
RSA public encrypt.
ra8_rsip_rsa_pad_t
RSA encryption padding-scheme selector written to ASYM_ARG.
@ k_ra8_rsip_rsa_pad_oaep
RSAES-OAEP (SHA-256 MGF1).
@ k_ra8_rsip_rsa_pad_pkcs1
RSAES-PKCS1-v1_5 (legacy).
static volatile uint32_t * ra8_rsip_reg32(ra8_rsip_off_t offset)
Volatile pointer to a 32-bit RSIP register at offset.
@ k_ra8_rsip_mask_isr_asym_done
ISR.ASYM_DONE bit.
@ k_ra8_rsip_off_asym_sig_out
Signature output lane.
@ k_ra8_rsip_off_asym_msg_in
Message / digest input port.
@ k_ra8_rsip_off_asym_arg
Argument-block descriptor.
@ k_ra8_rsip_off_mbox_op
Opcode written by host.
@ k_ra8_rsip_off_asym_ctrl
Asymmetric command word.
@ k_ra8_rsip_off_asym_sig_in
Signature input lane.
@ k_ra8_rsip_off_asym_rsa_size
RSA modulus-size selector.
ra8_err_t ra8_rsip_rsa_decrypt(const ra8_rsip_key_handle_t *key, ra8_rsip_rsa_size_t size, ra8_rsip_rsa_pad_t pad, const uint8_t *ciphertext, uint8_t *plaintext, uint32_t plaintext_cap, uint32_t *recovered_len)
RSA private-key decrypt a ciphertext (RSAES-OAEP / PKCS1).
ra8_err_t ra8_rsip_rsa_verify(const ra8_rsip_key_handle_t *key, ra8_rsip_rsa_size_t size, const uint8_t *digest, uint32_t digest_len, const uint8_t *signature)
RSA verify a signature against a digest using a wrapped pubkey.
ra8_err_t ra8_rsip_rsa_sign(const ra8_rsip_key_handle_t *key, ra8_rsip_rsa_size_t size, const uint8_t *digest, uint32_t digest_len, uint8_t *signature)
RSA sign a digest with a wrapped private key.
ra8_err_t ra8_rsip_rsa_encrypt(const ra8_rsip_key_handle_t *key, ra8_rsip_rsa_size_t size, ra8_rsip_rsa_pad_t pad, const uint8_t *plaintext, uint32_t plaintext_len, uint8_t *ciphertext)
RSA public-key encrypt a short message (RSAES-OAEP / PKCS1).
Opaque wrapped-key handle.