aboutsummaryrefslogtreecommitdiff
path: root/vendor/doc/html/crypto_from_eddsa_private.html
blob: 4b55a99d6cba6b5339ef236e0de447b6ff4e0760 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8"/>
  <style>
    table.head, table.foot { width: 100%; }
    td.head-rtitle, td.foot-os { text-align: right; }
    td.head-vol { text-align: center; }
    div.Pp { margin: 1ex 0ex; }
  </style>
  <link rel="stylesheet" href="style.css" type="text/css" media="all"/>
  <title>CRYPTO_FROM_EDDSA_PRIVATE(3MONOCYPHER)</title>
</head>
<body>
<table class="head">
  <tr>
    <td class="head-ltitle">CRYPTO_FROM_EDDSA_PRIVATE(3MONOCYPHER)</td>
    <td class="head-vol">3MONOCYPHER</td>
    <td class="head-rtitle">CRYPTO_FROM_EDDSA_PRIVATE(3MONOCYPHER)</td>
  </tr>
</table>
<div class="manual-text">
<h1 class="Sh" title="Sh" id="NAME"><a class="selflink" href="#NAME">NAME</a></h1>
<b class="Nm" title="Nm">crypto_from_eddsa_private</b>,
  <b class="Nm" title="Nm">crypto_from_eddsa_public</b> &#x2014;
  <span class="Nd" title="Nd">conversion of key pairs for EdDSA with BLAKE2b to
  X25519 key pairs</span>
<h1 class="Sh" title="Sh" id="SYNOPSIS"><a class="selflink" href="#SYNOPSIS">SYNOPSIS</a></h1>
<b class="In" title="In">#include
  &lt;<a class="In" title="In">monocypher.h</a>&gt;</b>
<div class="Pp"></div>
<var class="Ft" title="Ft">void</var>
<br/>
<b class="Fn" title="Fn">crypto_from_eddsa_private</b>(<var class="Fa" title="Fa">uint8_t
  x25519[32]</var>, <var class="Fa" title="Fa">const uint8_t eddsa[32]</var>);
<div class="Pp"></div>
<var class="Ft" title="Ft">void</var>
<br/>
<b class="Fn" title="Fn">crypto_from_eddsa_public</b>(<var class="Fa" title="Fa">uint8_t
  x25519[32]</var>, <var class="Fa" title="Fa">const uint8_t eddsa[32]</var>);
<h1 class="Sh" title="Sh" id="DESCRIPTION"><a class="selflink" href="#DESCRIPTION">DESCRIPTION</a></h1>
These functions convert keys for use with
  <a class="Xr" title="Xr" href="crypto_sign.html">crypto_sign(3monocypher)</a>
  (EdDSA with the BLAKE2b hash function) to keys for use with
  <a class="Xr" title="Xr" href="crypto_key_exchange.html">crypto_key_exchange(3monocypher)</a>
  and
  <a class="Xr" title="Xr" href="crypto_x25519.html">crypto_x25519(3monocypher)</a>.
  This may be useful in some resource-constrained contexts or when no other key
  is available (for example, when retrieving SSH public keys from GitHub and
  reusing the SSH public keys as X25519 public keys).
<div class="Pp"></div>
The <b class="Fn" title="Fn">crypto_from_eddsa_private</b>() function converts
  an EdDSA (with BLAKE2b) private key to an X25519 private key. The
  <b class="Fn" title="Fn">crypto_from_eddsa_public</b>() function converts an
  EdDSA public key to an X25519 public key.
<div class="Pp"></div>
X25519 key pairs cannot be converted back to EdDSA key pairs. The conversion of
  private keys is specific to EdDSA with BLAKE2b because of the way EdDSA works.
  In particular, this means that the output of
  <b class="Fn" title="Fn">crypto_from_eddsa_private</b>() differs from
  <a class="Xr" title="Xr" href="crypto_from_ed25519_private.html">crypto_from_ed25519_private(3monocypher)</a>
  in the optional code. However, the output of
  <b class="Fn" title="Fn">crypto_from_eddsa_public</b>() is identical to
  <a class="Xr" title="Xr" href="crypto_from_ed25519_public.html">crypto_from_ed25519_public(3monocypher)</a>.
<div class="Pp"></div>
The arguments are:
<dl class="Bl-tag">
  <dt class="It-tag">&#x00A0;</dt>
  <dd class="It-tag">&#x00A0;</dd>
  <dt class="It-tag"><var class="Fa" title="Fa">eddsa</var></dt>
  <dd class="It-tag">The signing public key or private key to convert to a
      X25519 public key or private key, respectively.</dd>
  <dt class="It-tag">&#x00A0;</dt>
  <dd class="It-tag">&#x00A0;</dd>
  <dt class="It-tag"><var class="Fa" title="Fa">x25519</var></dt>
  <dd class="It-tag">The converted private key or public key.</dd>
</dl>
<div class="Pp"></div>
The arguments may overlap or point at the same buffer.
<h1 class="Sh" title="Sh" id="RETURN_VALUES"><a class="selflink" href="#RETURN_VALUES">RETURN
  VALUES</a></h1>
These functions return nothing. They cannot fail.
<h1 class="Sh" title="Sh" id="SEE_ALSO"><a class="selflink" href="#SEE_ALSO">SEE
  ALSO</a></h1>
<a class="Xr" title="Xr" href="crypto_key_exchange_public_key.html">crypto_key_exchange_public_key(3monocypher)</a>,
  <a class="Xr" title="Xr" href="crypto_sign_public_key.html">crypto_sign_public_key(3monocypher)</a>,
  <a class="Xr" title="Xr" href="intro.html">intro(3monocypher)</a>
<h1 class="Sh" title="Sh" id="HISTORY"><a class="selflink" href="#HISTORY">HISTORY</a></h1>
The <b class="Fn" title="Fn">crypto_from_eddsa_private</b>() and
  <b class="Fn" title="Fn">crypto_from_eddsa_public</b>() functions first
  appeared in Monocypher 3.1.0.
<h1 class="Sh" title="Sh" id="SECURITY_CONSIDERATIONS"><a class="selflink" href="#SECURITY_CONSIDERATIONS">SECURITY
  CONSIDERATIONS</a></h1>
It is generally considered poor form to reuse the same key for different
  purposes. While this conversion is technically safe, avoid these functions
  nonetheless unless you are particularly resource-constrained or have some
  other kind of hard requirement. It is otherwise an unnecessary risk
  factor.</div>
<table class="foot">
  <tr>
    <td class="foot-date">March 25, 2020</td>
    <td class="foot-os">Linux 4.15.0-106-generic</td>
  </tr>
</table>
</body>
</html>