libsignal-protocol-c  master
gen_eddsa.h
1 #ifndef __GEN_EDDSA_H__
2 #define __GEN_EDDSA_H__
3 
4 #include "ge.h"
5 
6 /* B: base point
7  R: commitment (point),
8  r: private nonce (scalar)
9  K: encoded public key
10  k: private key (scalar)
11  Z: 32-bytes random
12  M: buffer containing message, message starts at M_start, continues for M_len
13 
14  r = hash(B || labelset || Z || pad1 || k || pad2 || labelset || K || extra || M) (mod q)
15 */
16 int generalized_commit(unsigned char* R_bytes, unsigned char* r_scalar,
17  const unsigned char* labelset, const unsigned long labelset_len,
18  const unsigned char* extra, const unsigned long extra_len,
19  const unsigned char* K_bytes, const unsigned char* k_scalar,
20  const unsigned char* Z,
21  unsigned char* M_buf, const unsigned long M_start, const unsigned long M_len);
22 
23 /* if is_labelset_empty(labelset):
24  return hash(R || K || M) (mod q)
25  else:
26  return hash(B || labelset || R || labelset || K || extra || M) (mod q)
27 */
28 int generalized_challenge(unsigned char* h_scalar,
29  const unsigned char* labelset, const unsigned long labelset_len,
30  const unsigned char* extra, const unsigned long extra_len,
31  const unsigned char* R_bytes,
32  const unsigned char* K_bytes,
33  unsigned char* M_buf, const unsigned long M_start, const unsigned long M_len);
34 
35 /* return r + kh (mod q) */
36 int generalized_prove(unsigned char* out_scalar,
37  const unsigned char* r_scalar,
38  const unsigned char* k_scalar,
39  const unsigned char* h_scalar);
40 
41 /* R = B^s / K^h */
42 int generalized_solve_commitment(unsigned char* R_bytes_out, ge_p3* K_point_out,
43  const ge_p3* B_point, const unsigned char* s_scalar,
44  const unsigned char* K_bytes, const unsigned char* h_scalar);
45 
46 
47 int generalized_eddsa_25519_sign(
48  unsigned char* signature_out,
49  const unsigned char* eddsa_25519_pubkey_bytes,
50  const unsigned char* eddsa_25519_privkey_scalar,
51  const unsigned char* msg,
52  const unsigned long msg_len,
53  const unsigned char* random,
54  const unsigned char* customization_label,
55  const unsigned long customization_label_len);
56 
57 int generalized_eddsa_25519_verify(
58  const unsigned char* signature,
59  const unsigned char* eddsa_25519_pubkey,
60  const unsigned char* msg,
61  const unsigned long msg_len,
62  const unsigned char* customization_label,
63  const unsigned long customization_label_len);
64 
65 #endif
Definition: ge.h:26