# SVC_DecryptRSA

## Syntax

      #include <twl/os/common/systemCall.h>

      int SVC_DecryptRSA( const SVCSignHeapContext* acmemory_pool,
                           const SVCSignBuffers* pData,
                          unsigned int* len );

      typedef struct
      {
         u32* head;
         u32* tail;
         u32 size;
      }
      SVCSignHeapContext;

      typedef struct
      {
         void* output;
         const void* input;
         const void* key;
      }
      SVCSignBuffers;

## Arguments

acmemory_pool | Pointer to the heap information.
pData | Pointer to the structure containing data including which region the data is stored in.
len | Size of the data.

## Return Values

Returns FALSE if any pointers in the arguments or any members of pData are NULL. Returns TRUE otherwise.

## Description

Performs RSA decryption.

acmemory_pool is a pointer to the `SVCSignHeapContext` structure where information about the heap area used for the operation is stored. This is initialized by the `SVC_InitSignHeap` function.

pData is a pointer to a structure that contains various data, including which region the data will be stored in. The `input` member is a pointer to the input data, and the `output` member is a pointer to the output data region. The `key` is a pointer to the private key used for decryption. Only a 1024-bit key length is supported for the private key.

len is the length of the data.

See the key creation example in the CRYPTO library's RSA encryption overview for information on how to create a private key.

## See Also

`SVC_InitSignHeap`, `SVC_DecryptSign`, `SVC_DecryptSignDER`

## Revision History

2008/09/18 Added an explanation related to keys.
2007/10/19 Initial version.

CONFIDENTIAL