update OCB3 doc
[skip ci]
This commit is contained in:
parent
56d17c8e55
commit
2ccb3fb53d
@ -1657,12 +1657,16 @@ appropriately to \textit{1} if the tag matches or to \textit{0} if it doesn't ma
|
||||
\begin{verbatim}
|
||||
int ocb3_init(ocb3_state *ocb, int cipher,
|
||||
const unsigned char *key, unsigned long keylen,
|
||||
const unsigned char *nonce, unsigned long noncelen);
|
||||
const unsigned char *nonce, unsigned long noncelen,
|
||||
unsigned long taglen);
|
||||
\end{verbatim}
|
||||
|
||||
This will initialize the \textit{ocb} context using cipher descriptor \textit{cipher}. It will use a \textit{key} of length \textit{keylen}
|
||||
and the random \textit{nonce} of length \textit{noncelen}. Note that \textit{nonce} must be a random (public) string of an arbitrary length
|
||||
between 1 and 15 octets.
|
||||
and the random \textit{nonce} of length \textit{noncelen}. The \textit{nonce} must be a random (public) string of an arbitrary length
|
||||
between 1 and 15 octets. The desired length of the TAG that should be created when terminating the state has to be passed in \textit{taglen}
|
||||
and has to be between 0 and 16 octets.
|
||||
|
||||
Note that you can only use ciphers with a block length of 16.
|
||||
|
||||
\subsubsection{Additional Authenticated Data}
|
||||
|
||||
@ -1697,12 +1701,19 @@ states (with different nonces). Also \textit{pt} and \textit{ct} may point to t
|
||||
|
||||
\index{ocb3\_encrypt\_last()} \index{ocb3\_decrypt\_last()}
|
||||
\begin{verbatim}
|
||||
int ocb3_encrypt_last(ocb3_state *ocb, const unsigned char *pt, unsigned long ptlen, unsigned char *ct);
|
||||
int ocb3_encrypt_last( ocb3_state *ocb,
|
||||
const unsigned char *pt,
|
||||
unsigned long ptlen,
|
||||
unsigned char *ct);
|
||||
|
||||
int ocb3_decrypt_last(ocb3_state *ocb, const unsigned char *ct, unsigned long ctlen, unsigned char *pt);
|
||||
int ocb3_decrypt_last( ocb3_state *ocb,
|
||||
const unsigned char *ct,
|
||||
unsigned long ctlen,
|
||||
unsigned char *pt);
|
||||
\end{verbatim}
|
||||
|
||||
XXX-TODO
|
||||
This has to be called for the last encrypt (or decrypt) operation. Note that if you have to invoke only a single operation you can
|
||||
directly use these functions instead of \textit{ocb3\_encrypt()} or \textit{ocb3\_decrypt()}.
|
||||
|
||||
When you are finished encrypting the message you call the following function to compute the tag.
|
||||
|
||||
@ -1713,7 +1724,7 @@ int ocb3_done(ocb3_state *ocb, unsigned char *tag, unsigned long *taglen);
|
||||
|
||||
This stores the tag of the \textit{ocb} state in \textit{tag}.
|
||||
The \textit{taglen} parameter defines on input the length of the tag to output and will be set to the actual length written, which
|
||||
is at most the block length of the cipher in use.
|
||||
is at most 16 octets.
|
||||
|
||||
\subsubsection{Packet Functions}
|
||||
To make life simpler the following two functions are provided for memory bound OCB3.
|
||||
@ -1729,6 +1740,11 @@ int ocb3_encrypt_authenticate_memory(int cipher,
|
||||
unsigned char *tag, unsigned long *taglen);
|
||||
\end{verbatim}
|
||||
|
||||
This will OCB3 encrypt the message \textit{pt} of length \textit{ptlen}, and store the ciphertext in \textit{ct}. The length \textit{ptlen}
|
||||
can be any arbitrary length. The additional authenticated data \textit{adata} of length \textit{adatalen} is optional and can be left out
|
||||
by passing \textit{NULL} as \textit{adata}. The length of the authentication TAG will be stored in \textit{tag}, which is also optional.
|
||||
The length of the TAG passed in \textit{taglen} has to be between 0 and 16.
|
||||
|
||||
\index{ocb3\_decrypt\_verify\_memory()}
|
||||
\begin{verbatim}
|
||||
int ocb3_decrypt_verify_memory(int cipher,
|
||||
@ -1741,6 +1757,9 @@ int ocb3_decrypt_verify_memory(int cipher,
|
||||
int *stat);
|
||||
\end{verbatim}
|
||||
|
||||
Similarly, this will OCB3 decrypt, and compare the internally computed tag against the tag provided. \textit{res} is set
|
||||
appropriately to \textit{1} if the tag matches or to \textit{0} if it doesn't match.
|
||||
|
||||
\mysection{CCM Mode}
|
||||
CCM is a NIST proposal for encrypt + authenticate that is centered around using AES (or any 16--byte cipher) as a primitive.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user