nres
nres定义在miracl.h
extern void nres(_MIPT_ big,big);
函数功能:
参数_MIPD_:可能为空,非空为miracl *类型。
参数x:
参数y:
1. 源码分析
nres实现在mrmonty.c
void nres(_MIPD_ big x,big y)
{ /* convert x to n-residue format */
#ifdef MR_OS_THREADS
miracl *mr_mip=get_mip(); // 返回`miracl *`实例
#endif
if (mr_mip->ERNUM) return; // 有错误直接返回
MR_IN(81) // 线程进入码
if (size(mr_mip->modulus)==0)
{
mr_berror(_MIPP_ MR_ERR_NO_MODULUS);
MR_OUT // 线程退出码
return;
}
copy(x,y); // 将x轴坐标复制给y轴坐标。
divide(_MIPP_ y,mr_mip->modulus,mr_mip->modulus);
if (size(y)<0) add(_MIPP_ y,mr_mip->modulus,y);
if (!mr_mip->MONTY)
{
MR_OUT
return;
}
mr_mip->check=OFF;
mr_shift(_MIPP_ y,(int)mr_mip->modulus->len,mr_mip->w0);
divide(_MIPP_ mr_mip->w0,mr_mip->modulus,mr_mip->modulus);
mr_mip->check=ON;
copy(mr_mip->w0,y);
MR_OUT
}
get_mip返回miracl *指针,如果没有定义MR_OS_THREADS,由_MIPD_接收。
ERNUM错误码,如果非零,表示有错误。
mr_berror的错误码为MR_ERR_NO_MODULUS。
copy将x轴坐标复制给y轴坐标。