2 #include "crypto_int64.h"
3 #include "crypto_uint64.h"
5 static crypto_uint64
load_3(const unsigned char *in
)
8 result
= (crypto_uint64
) in
[0];
9 result
|= ((crypto_uint64
) in
[1]) << 8;
10 result
|= ((crypto_uint64
) in
[2]) << 16;
14 static crypto_uint64
load_4(const unsigned char *in
)
17 result
= (crypto_uint64
) in
[0];
18 result
|= ((crypto_uint64
) in
[1]) << 8;
19 result
|= ((crypto_uint64
) in
[2]) << 16;
20 result
|= ((crypto_uint64
) in
[3]) << 24;
28 void fe_frombytes(fe h
,const unsigned char *s
)
30 crypto_int64 h0
= load_4(s
);
31 crypto_int64 h1
= load_3(s
+ 4) << 6;
32 crypto_int64 h2
= load_3(s
+ 7) << 5;
33 crypto_int64 h3
= load_3(s
+ 10) << 3;
34 crypto_int64 h4
= load_3(s
+ 13) << 2;
35 crypto_int64 h5
= load_4(s
+ 16);
36 crypto_int64 h6
= load_3(s
+ 20) << 7;
37 crypto_int64 h7
= load_3(s
+ 23) << 5;
38 crypto_int64 h8
= load_3(s
+ 26) << 4;
39 crypto_int64 h9
= (load_3(s
+ 29) & 8388607) << 2;
51 carry9
= (h9
+ (crypto_int64
) (1<<24)) >> 25; h0
+= carry9
* 19; h9
-= carry9
<< 25;
52 carry1
= (h1
+ (crypto_int64
) (1<<24)) >> 25; h2
+= carry1
; h1
-= carry1
<< 25;
53 carry3
= (h3
+ (crypto_int64
) (1<<24)) >> 25; h4
+= carry3
; h3
-= carry3
<< 25;
54 carry5
= (h5
+ (crypto_int64
) (1<<24)) >> 25; h6
+= carry5
; h5
-= carry5
<< 25;
55 carry7
= (h7
+ (crypto_int64
) (1<<24)) >> 25; h8
+= carry7
; h7
-= carry7
<< 25;
57 carry0
= (h0
+ (crypto_int64
) (1<<25)) >> 26; h1
+= carry0
; h0
-= carry0
<< 26;
58 carry2
= (h2
+ (crypto_int64
) (1<<25)) >> 26; h3
+= carry2
; h2
-= carry2
<< 26;
59 carry4
= (h4
+ (crypto_int64
) (1<<25)) >> 26; h5
+= carry4
; h4
-= carry4
<< 26;
60 carry6
= (h6
+ (crypto_int64
) (1<<25)) >> 26; h7
+= carry6
; h6
-= carry6
<< 26;
61 carry8
= (h8
+ (crypto_int64
) (1<<25)) >> 26; h9
+= carry8
; h8
-= carry8
<< 26;