You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

34 lines
877 B

  1. /*
  2. This file is for syndrome computation
  3. */
  4. #include "synd.h"
  5. #include "params.h"
  6. #include "root.h"
  7. /* input: Goppa polynomial f, support L, received word r */
  8. /* output: out, the syndrome of length 2t */
  9. void PQCLEAN_MCELIECE6960119_CLEAN_synd(gf *out, gf *f, gf *L, const unsigned char *r) {
  10. int i, j;
  11. gf e, e_inv, c;
  12. for (j = 0; j < 2 * SYS_T; j++) {
  13. out[j] = 0;
  14. }
  15. for (i = 0; i < SYS_N; i++) {
  16. c = (r[i / 8] >> (i % 8)) & 1;
  17. e = PQCLEAN_MCELIECE6960119_CLEAN_eval(f, L[i]);
  18. e_inv = PQCLEAN_MCELIECE6960119_CLEAN_gf_inv(PQCLEAN_MCELIECE6960119_CLEAN_gf_mul(e, e));
  19. for (j = 0; j < 2 * SYS_T; j++) {
  20. out[j] = PQCLEAN_MCELIECE6960119_CLEAN_gf_add(out[j], PQCLEAN_MCELIECE6960119_CLEAN_gf_mul(e_inv, c));
  21. e_inv = PQCLEAN_MCELIECE6960119_CLEAN_gf_mul(e_inv, L[i]);
  22. }
  23. }
  24. }