Be pedantic about what an ECIES public key is, and fix some font issues.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
Daira Hopwood 2015-12-23 02:14:05 +00:00
parent ca1c8fe504
commit 48ca93a1d5
2 changed files with 13 additions and 7 deletions

Binary file not shown.

View File

@ -9,6 +9,8 @@
\setlength{\topmargin}{-.75in} % Top margin of 2 in -0.75 in = 1 in
\setlength{\textheight}{9.2in} % Lower margin of 11 in - 9 in - 1 in = 1 in
\mathchardef\mhyphen="2D
% terminology
\newcommand{\Zcash}{\textbf{Zcash} }
@ -391,7 +393,8 @@ TBD. Identical to Bitcoin?
A protected address consists of $\SpendAuthorityPublic$ and $\TransmitPublic$.
$\SpendAuthorityPublic$ is a SHA-256 compression function output.
$\TransmitPublic$ is an encryption public key (currently ECIES, but this may
change to Curve25519/crypto\_box), which is an elliptic curve point.
change to Curve25519/crypto\_box), which represents an equivalence class of
two points sharing an $x$ coordinate on an elliptic curve.
\subsubsection{Raw Encoding}
@ -409,13 +412,14 @@ The raw encoding of a protected address consists of:
\item A byte, $\PublicAddressLeadByte$, indicating this version of the
raw encoding of a \Zcash public address.
\item 32 bytes specifying $\SpendAuthorityPublic$.
\item An encoding of $\TransmitPublic$: The byte 0x01, followed by 32 bytes
representing the x coordinate of the elliptic curve point according to
the FE20SP primitive specified in section 5.5.4 of IEEE Std 1363-2000.
\item An encoding of $\TransmitPublic$: The byte $\mathbf{0x01}$, followed by 32 bytes
representing the $x$ coordinate of an elliptic curve point according to
the $\mathsf{FE2OSP}$ primitive specified in section 5.5.4 of IEEE Std 1363-2000.
[Non-normative note: Since the curve is over a prime field, this is just
the 32-byte big-endian representation of the x coordinate. The
overall encoding matches the EC20SP-X primitive specified in section
5.5.6.3 of IEEE Std 1363a-2004.]
the 32-byte big-endian representation of the $x$ coordinate. The
overall encoding matches the $\mathsf{EC2OSP{\mhyphen}X}$ primitive
specified in section 5.5.6.3 of IEEE Std 1363a-2004. It does not
matter which of the two points with the same $x$ coordinate is used.]
\end{itemize}
\textbf{TODO: check that this lead byte is distinct from other Bitcoin stuff,
@ -423,6 +427,8 @@ and produces `z' as the Base58Check leading character.}
\textbf{TODO: what about the network version byte?}
\textbf{TODO: add bibliographic references for the IEEE standards.}
\subsection{Protected Address Secrets}
A protected address secret consists of $\SpendAuthorityPrivate$ and