Function report | 
Source Code:lib\mpi\mpi-pow.c | 
Create Date:2022-07-28 07:19:27 | 
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick | 
| home page | Tree | 
| Annotation kernel can get tool activity | Download SCCT | Chinese | 
Name:RES = BASE ^ EXP mod MOD
Proto:int mpi_powm(MPI res, MPI base, MPI exp, MPI mod)
Type:int
Parameter:
| Type | Parameter | Name | 
|---|---|---|
| MPI | res | |
| MPI | base | |
| MPI | exp | |
| MPI | mod | 
| 27 | struct karatsuba_ctx karactx = {} | 
| 36 | assign_rp = 0 | 
| 37 | tsize = 0 | 
| 46 | rp = array with the limbs | 
| 47 | ep = array with the limbs | 
| 52 | If Not esize Then | 
| 55 | number of valid limbs = If msize == 1 && array with the limbs [0] == 1 Then 0 Else 1 | 
| 56 | If number of valid limbs Then | 
| 57 | If Resize the array of A to NLIMBS. the additional space is cleared* (set to 0) [done by m_realloc()] < 0 Then Go to enomem | 
| 59 | rp = array with the limbs | 
| 60 | rp[0] = 1 | 
| 62 | indicates a negative number = 0 | 
| 63 | Go to leave | 
| 70 | mp = mp_marker = -- mpiutil.c -- | 
| 76 | Else Copy N limbs from S to D. (mp, array with the limbs , msize) | 
| 84 | bp = bp_marker = -- mpiutil.c -- | 
| 94 | MPN_NORMALIZE(bp, bsize) | 
| 95 | Else bp = array with the limbs | 
| 98 | If Not bsize Then | 
| 104 | If array size (# of allocated limbs) < size Then | 
| 113 | Else | 
| 118 | Else | 
| 122 | bp = bp_marker = -- mpiutil.c -- | 
| 125 | Copy N limbs from S to D. (bp, rp, bsize) | 
| 129 | ep = ep_marker = -- mpiutil.c -- | 
| 132 | Copy N limbs from S to D. (ep, rp, esize) | 
| 144 | Copy N limbs from S to D. (rp, bp, bsize) | 
| 155 | xp = xp_marker = -- mpiutil.c -- | 
| 159 | negative_result = ep[0] & 1 && indicates a negative number | 
| 165 | c = BITS_PER_MPI_LIMB - 1 - c | 
| 177 | cycle | 
| 183 | If rsize < sted 4, 16, 32 and 64, where 16 gave the best performance when* checking a 768 and a 1024 bit ElGamal signature.* (wk 22.12.97) Then mpih_sqr_n_basecase(xp, rp, rsize) | 
| 185 | Else | 
| 215 | If e < 0 Then | 
| 223 | Else | 
| 243 | e <<= 1 | 
| 244 | c-- | 
| 245 | cond_resched() | 
| 248 | i-- | 
| 249 | If i < 0 Then Break | 
| 252 | c = BITS_PER_MPI_LIMB | 
| 261 | If mod_shift_cnt Then | 
| 264 | rp = array with the limbs | 
| 265 | If carry_limb Then | 
| 266 | rp[rsize] = carry_limb | 
| 267 | rsize++ | 
| 269 | Else | 
| 270 | Copy N limbs from S to D. ( array with the limbs , rp, rsize) | 
| 271 | rp = array with the limbs | 
| 282 | MPN_NORMALIZE(rp, rsize) | 
| 285 | If negative_result && rsize Then | 
| 291 | MPN_NORMALIZE(rp, rsize) | 
| 293 | number of valid limbs = rsize | 
| 296 | leave : | 
| 297 | rc = 0 | 
| 298 | enomem : | 
| 299 | mpihelp_release_karatsuba_ctx( & karactx) | 
| 300 | If assign_rp Then mpi_assign_limb_space(res, rp, size) | 
| 302 | If mp_marker Then mpi_free_limb_space(mp_marker) | 
| 304 | If bp_marker Then mpi_free_limb_space(bp_marker) | 
| 306 | If ep_marker Then mpi_free_limb_space(ep_marker) | 
| 308 | If xp_marker Then mpi_free_limb_space(xp_marker) | 
| 310 | If tspace Then mpi_free_limb_space(tspace) | 
| 312 | Return rc | 
| Name | Describe | 
|---|---|
| digsig_verify_rsa | RSA Signature verification with public key | 
| Source code conversion tool public plug-in interface  | X | 
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion  |