| OLD | NEW |
| 1 /* Software-Based Trusted Platform Module (TPM) Emulator for Linux | 1 /* Software-based Trusted Platform Module (TPM) Emulator |
| 2 * Copyright (C) 2006 Mario Strasser <mast@gmx.net>, | 2 * Copyright (C) 2004-2010 Mario Strasser <mast@gmx.net> |
| 3 * Swiss Federal Institute of Technology (ETH) Zurich | |
| 4 * | 3 * |
| 5 * This module is free software; you can redistribute it and/or modify | 4 * This module is free software; you can redistribute it and/or modify |
| 6 * it under the terms of the GNU General Public License as published | 5 * it under the terms of the GNU General Public License as published |
| 7 * by the Free Software Foundation; either version 2 of the License, | 6 * by the Free Software Foundation; either version 2 of the License, |
| 8 * or (at your option) any later version. | 7 * or (at your option) any later version. |
| 9 * | 8 * |
| 10 * This module is distributed in the hope that it will be useful, | 9 * This module is distributed in the hope that it will be useful, |
| 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 13 * GNU General Public License for more details. | 12 * GNU General Public License for more details. |
| 14 * | 13 * |
| 15 * $Id$ | 14 * $Id: bn.c 406 2010-02-19 11:08:30Z mast $ |
| 16 */ | 15 */ |
| 17 | 16 |
| 18 #include "bn.h" | 17 #include "bn.h" |
| 19 | 18 |
| 20 void tpm_bn_init(tpm_bn_t a) | 19 void tpm_bn_init(tpm_bn_t a) |
| 21 { | 20 { |
| 22 mpz_init(a); | 21 mpz_init(a); |
| 23 } | 22 } |
| 24 | 23 |
| 25 void tpm_bn_init2(tpm_bn_t a, size_t nbits) | 24 void tpm_bn_init2(tpm_bn_t a, size_t nbits) |
| 26 { | 25 { |
| 27 mpz_init2(a, nbits + + GMP_NUMB_BITS); | 26 mpz_init2(a, nbits + GMP_NUMB_BITS); |
| 28 } | 27 } |
| 29 | 28 |
| 30 void tpm_bn_init_set(tpm_bn_t a, tpm_bn_t val) | 29 void tpm_bn_init_set(tpm_bn_t a, tpm_bn_t val) |
| 31 { | 30 { |
| 32 mpz_init_set(a, val); | 31 mpz_init_set(a, val); |
| 33 } | 32 } |
| 34 | 33 |
| 35 void tpm_bn_init_set_ui(tpm_bn_t a, uint32_t val) | 34 void tpm_bn_init_set_ui(tpm_bn_t a, uint32_t val) |
| 36 { | 35 { |
| 37 mpz_init_set_ui(a, val); | 36 mpz_init_set_ui(a, val); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 57 return mpz_sizeinbase(a, 2); | 56 return mpz_sizeinbase(a, 2); |
| 58 } | 57 } |
| 59 | 58 |
| 60 void tpm_bn_import(tpm_bn_t out, size_t count, int order, const void *in) | 59 void tpm_bn_import(tpm_bn_t out, size_t count, int order, const void *in) |
| 61 { | 60 { |
| 62 mpz_import(out, count, order, 1, 0, 0, in); | 61 mpz_import(out, count, order, 1, 0, 0, in); |
| 63 } | 62 } |
| 64 | 63 |
| 65 void tpm_bn_export(void *out, size_t *count, int order, tpm_bn_t in) | 64 void tpm_bn_export(void *out, size_t *count, int order, tpm_bn_t in) |
| 66 { | 65 { |
| 67 mpz_export(out, count, order, 1, 0, 0, in); | 66 size_t count_out; |
| 67 mpz_export(out, &count_out, order, 1, 0, 0, in); |
| 68 if (count != NULL) *count = count_out; |
| 68 } | 69 } |
| 69 | 70 |
| 70 int tpm_bn_cmp(tpm_bn_t a, tpm_bn_t b) | 71 int tpm_bn_cmp(tpm_bn_t a, tpm_bn_t b) |
| 71 { | 72 { |
| 72 return mpz_cmp(a, b); | 73 return mpz_cmp(a, b); |
| 73 } | 74 } |
| 74 | 75 |
| 75 int tpm_bn_cmp_ui(tpm_bn_t a, uint32_t b) | 76 int tpm_bn_cmp_ui(tpm_bn_t a, uint32_t b) |
| 76 { | 77 { |
| 77 return mpz_cmp_ui(a, b); | 78 return mpz_cmp_ui(a, b); |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 146 { | 147 { |
| 147 mpz_invert(res, a, b); | 148 mpz_invert(res, a, b); |
| 148 } | 149 } |
| 149 | 150 |
| 150 void tpm_bn_nextprime(tpm_bn_t res, tpm_bn_t a) | 151 void tpm_bn_nextprime(tpm_bn_t res, tpm_bn_t a) |
| 151 { | 152 { |
| 152 mpz_nextprime(res, a); | 153 mpz_nextprime(res, a); |
| 153 } | 154 } |
| 154 | 155 |
| 155 | 156 |
| OLD | NEW |