Performing Elliptic Curve Operations

The following procedure, AllocAndCopyECParamInfo, is an example of an application- specific procedure that allocates space to store the parameters. You can also write your own procedure to satisfy the needs of your application:

int AllocAndCopyECParamInfo(output, input) A_EC_PARAMS *output;

A_EC_PARAMS *input;

{

int status;

do {

output->version = input->version;

output->fieldType = input->fieldType;

output->fieldInfo.len = input->fieldInfo.len; output->fieldInfo.data = T_malloc(output->fieldInfo.len); if ((status = (output->fieldInfo.data == NULL_PTR)) != 0)

break;

T_memcpy(output->fieldInfo.data, input->fieldInfo.data, output->fieldInfo.len);

output->coeffA.len = input->coeffA.len; output->coeffA.data = T_malloc(output->coeffA.len); if ((status = (output->coeffA.data == NULL_PTR)) != 0)

break;

T_memcpy(output->coeffA.data, input->coeffA.data, output->coeffA.len);

output->coeffB.len = input->coeffB.len; output->coeffB.data = T_malloc(output->coeffB.len); if ((status = (output->coeffB.data == NULL_PTR)) != 0)

break;

T_memcpy(output->coeffB.data, input->coeffB.data, output->coeffB.len);

output->base.len = input->base.len; output->base.data = T_malloc(output->base.len);

if ((status = (output->base.data == NULL_PTR)) != 0) break;

T_memcpy(output->base.data, input->base.data, output->base.len);

2 6 6

R S A B S A F E C r y p t o - C D e v e l o p e r ’s G u i d e

Page 288
Image 288
RSA Security 5.2.2 manual If status = output-base.data == Nullptr != 0 break