LCOV - code coverage report
Current view: top level - third_party/heimdal/lib/hcrypto/libtommath - bn_mp_reduce_is_2k.c (source / functions) Hit Total Coverage
Test: coverage report for v4-17-test 1498b464 Lines: 12 18 66.7 %
Date: 2024-06-13 04:01:37 Functions: 1 1 100.0 %

          Line data    Source code
       1             : #include "tommath_private.h"
       2             : #ifdef BN_MP_REDUCE_IS_2K_C
       3             : /* LibTomMath, multiple-precision integer library -- Tom St Denis */
       4             : /* SPDX-License-Identifier: Unlicense */
       5             : 
       6             : /* determines if mp_reduce_2k can be used */
       7         229 : mp_bool mp_reduce_is_2k(const mp_int *a)
       8             : {
       9             :    int ix, iy, iw;
      10             :    mp_digit iz;
      11             : 
      12         229 :    if (a->used == 0) {
      13           0 :       return MP_NO;
      14         229 :    } else if (a->used == 1) {
      15           0 :       return MP_YES;
      16         229 :    } else if (a->used > 1) {
      17         229 :       iy = mp_count_bits(a);
      18         229 :       iz = 1;
      19         229 :       iw = 1;
      20             : 
      21             :       /* Test every bit from the second digit up, must be 1 */
      22         714 :       for (ix = MP_DIGIT_BIT; ix < iy; ix++) {
      23         714 :          if ((a->dp[iw] & iz) == 0u) {
      24         229 :             return MP_NO;
      25             :          }
      26         485 :          iz <<= 1;
      27         485 :          if (iz > MP_DIGIT_MAX) {
      28           0 :             ++iw;
      29           0 :             iz = 1;
      30             :          }
      31             :       }
      32           0 :       return MP_YES;
      33             :    } else {
      34           0 :       return MP_YES;
      35             :    }
      36             : }
      37             : 
      38             : #endif

Generated by: LCOV version 1.13