Performing Elliptic Curve Operations

266 RSA BSAFE Crypto-C Developers Guide

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);