diff options
Diffstat (limited to 'lib/mpi/mpicoder.c')
| -rw-r--r-- | lib/mpi/mpicoder.c | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/lib/mpi/mpicoder.c b/lib/mpi/mpicoder.c index f26b41fcb48c..f0fa65995800 100644 --- a/lib/mpi/mpicoder.c +++ b/lib/mpi/mpicoder.c | |||
| @@ -74,81 +74,6 @@ leave: | |||
| 74 | EXPORT_SYMBOL_GPL(mpi_read_from_buffer); | 74 | EXPORT_SYMBOL_GPL(mpi_read_from_buffer); |
| 75 | 75 | ||
| 76 | /**************** | 76 | /**************** |
| 77 | * Make an mpi from a character string. | ||
| 78 | */ | ||
| 79 | int mpi_fromstr(MPI val, const char *str) | ||
| 80 | { | ||
| 81 | int hexmode = 0, sign = 0, prepend_zero = 0, i, j, c, c1, c2; | ||
| 82 | unsigned nbits, nbytes, nlimbs; | ||
| 83 | mpi_limb_t a; | ||
| 84 | |||
| 85 | if (*str == '-') { | ||
| 86 | sign = 1; | ||
| 87 | str++; | ||
| 88 | } | ||
| 89 | if (*str == '0' && str[1] == 'x') | ||
| 90 | hexmode = 1; | ||
| 91 | else | ||
| 92 | return -EINVAL; /* other bases are not yet supported */ | ||
| 93 | str += 2; | ||
| 94 | |||
| 95 | nbits = strlen(str) * 4; | ||
| 96 | if (nbits % 8) | ||
| 97 | prepend_zero = 1; | ||
| 98 | nbytes = (nbits + 7) / 8; | ||
| 99 | nlimbs = (nbytes + BYTES_PER_MPI_LIMB - 1) / BYTES_PER_MPI_LIMB; | ||
| 100 | if (val->alloced < nlimbs) | ||
| 101 | if (!mpi_resize(val, nlimbs)) | ||
| 102 | return -ENOMEM; | ||
| 103 | i = BYTES_PER_MPI_LIMB - nbytes % BYTES_PER_MPI_LIMB; | ||
| 104 | i %= BYTES_PER_MPI_LIMB; | ||
| 105 | j = val->nlimbs = nlimbs; | ||
| 106 | val->sign = sign; | ||
| 107 | for (; j > 0; j--) { | ||
| 108 | a = 0; | ||
| 109 | for (; i < BYTES_PER_MPI_LIMB; i++) { | ||
| 110 | if (prepend_zero) { | ||
| 111 | c1 = '0'; | ||
| 112 | prepend_zero = 0; | ||
| 113 | } else | ||
| 114 | c1 = *str++; | ||
| 115 | assert(c1); | ||
| 116 | c2 = *str++; | ||
| 117 | assert(c2); | ||
| 118 | if (c1 >= '0' && c1 <= '9') | ||
| 119 | c = c1 - '0'; | ||
| 120 | else if (c1 >= 'a' && c1 <= 'f') | ||
| 121 | c = c1 - 'a' + 10; | ||
| 122 | else if (c1 >= 'A' && c1 <= 'F') | ||
| 123 | c = c1 - 'A' + 10; | ||
| 124 | else { | ||
| 125 | mpi_clear(val); | ||
| 126 | return 1; | ||
| 127 | } | ||
| 128 | c <<= 4; | ||
| 129 | if (c2 >= '0' && c2 <= '9') | ||
| 130 | c |= c2 - '0'; | ||
| 131 | else if (c2 >= 'a' && c2 <= 'f') | ||
| 132 | c |= c2 - 'a' + 10; | ||
| 133 | else if (c2 >= 'A' && c2 <= 'F') | ||
| 134 | c |= c2 - 'A' + 10; | ||
| 135 | else { | ||
| 136 | mpi_clear(val); | ||
| 137 | return 1; | ||
| 138 | } | ||
| 139 | a <<= 8; | ||
| 140 | a |= c; | ||
| 141 | } | ||
| 142 | i = 0; | ||
| 143 | |||
| 144 | val->d[j - 1] = a; | ||
| 145 | } | ||
| 146 | |||
| 147 | return 0; | ||
| 148 | } | ||
| 149 | EXPORT_SYMBOL_GPL(mpi_fromstr); | ||
| 150 | |||
| 151 | /**************** | ||
| 152 | * Return an allocated buffer with the MPI (msb first). | 77 | * Return an allocated buffer with the MPI (msb first). |
| 153 | * NBYTES receives the length of this buffer. Caller must free the | 78 | * NBYTES receives the length of this buffer. Caller must free the |
| 154 | * return string (This function does return a 0 byte buffer with NBYTES | 79 | * return string (This function does return a 0 byte buffer with NBYTES |
