\hypertarget{structsignal__crypto__provider}{}\section{signal\+\_\+crypto\+\_\+provider Struct Reference}
\label{structsignal__crypto__provider}\index{signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}}


{\ttfamily \#include $<$signal\+\_\+protocol.\+h$>$}

\subsection*{Data Fields}
\begin{DoxyCompactItemize}
\item 
int($\ast$ \hyperlink{structsignal__crypto__provider_a072f2960af40439c1fee4544af6f4820}{random\+\_\+func} )(\hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$data, size\+\_\+t len, void $\ast$\hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data})
\item 
int($\ast$ \hyperlink{structsignal__crypto__provider_a8a4ae4e1da61461681ecaf4047648ce5}{hmac\+\_\+sha256\+\_\+init\+\_\+func} )(void $\ast$$\ast$hmac\+\_\+context, const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$key, size\+\_\+t key\+\_\+len, void $\ast$\hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data})
\item 
int($\ast$ \hyperlink{structsignal__crypto__provider_a4acc474379cec2d1d51c4f1781efb65d}{hmac\+\_\+sha256\+\_\+update\+\_\+func} )(void $\ast$hmac\+\_\+context, const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$data, size\+\_\+t data\+\_\+len, void $\ast$\hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data})
\item 
int($\ast$ \hyperlink{structsignal__crypto__provider_a356633b9a94dc4c9e7e59c7756296cd1}{hmac\+\_\+sha256\+\_\+final\+\_\+func} )(void $\ast$hmac\+\_\+context, \hyperlink{structsignal__buffer}{signal\+\_\+buffer} $\ast$$\ast$output, void $\ast$\hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data})
\item 
void($\ast$ \hyperlink{structsignal__crypto__provider_ab4612259e2555fe33192ef051a7b5140}{hmac\+\_\+sha256\+\_\+cleanup\+\_\+func} )(void $\ast$hmac\+\_\+context, void $\ast$\hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data})
\item 
int($\ast$ \hyperlink{structsignal__crypto__provider_ac36eece5a8d18c906291852e75d4e4b4}{sha512\+\_\+digest\+\_\+init\+\_\+func} )(void $\ast$$\ast$digest\+\_\+context, void $\ast$\hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data})
\item 
int($\ast$ \hyperlink{structsignal__crypto__provider_a2ce1087c00ca6012c20527b4721467f7}{sha512\+\_\+digest\+\_\+update\+\_\+func} )(void $\ast$digest\+\_\+context, const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$data, size\+\_\+t data\+\_\+len, void $\ast$\hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data})
\item 
int($\ast$ \hyperlink{structsignal__crypto__provider_a2cadef01ac5cc7ad6fe98a7822e685cd}{sha512\+\_\+digest\+\_\+final\+\_\+func} )(void $\ast$digest\+\_\+context, \hyperlink{structsignal__buffer}{signal\+\_\+buffer} $\ast$$\ast$output, void $\ast$\hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data})
\item 
void($\ast$ \hyperlink{structsignal__crypto__provider_af19391e02d66f73234e7643f8faeb690}{sha512\+\_\+digest\+\_\+cleanup\+\_\+func} )(void $\ast$digest\+\_\+context, void $\ast$\hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data})
\item 
int($\ast$ \hyperlink{structsignal__crypto__provider_ab9dded6130895aa077e379cf23dfbf4c}{encrypt\+\_\+func} )(\hyperlink{structsignal__buffer}{signal\+\_\+buffer} $\ast$$\ast$output, int cipher, const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$key, size\+\_\+t key\+\_\+len, const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$iv, size\+\_\+t iv\+\_\+len, const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$plaintext, size\+\_\+t plaintext\+\_\+len, void $\ast$\hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data})
\item 
int($\ast$ \hyperlink{structsignal__crypto__provider_a95dd46bf5d73666a55a10d7adfa41eb4}{decrypt\+\_\+func} )(\hyperlink{structsignal__buffer}{signal\+\_\+buffer} $\ast$$\ast$output, int cipher, const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$key, size\+\_\+t key\+\_\+len, const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$iv, size\+\_\+t iv\+\_\+len, const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$ciphertext, size\+\_\+t ciphertext\+\_\+len, void $\ast$\hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data})
\item 
void $\ast$ \hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data}
\end{DoxyCompactItemize}


\subsection{Detailed Description}


Definition at line 276 of file signal\+\_\+protocol.\+h.



\subsection{Field Documentation}
\mbox{\Hypertarget{structsignal__crypto__provider_a95dd46bf5d73666a55a10d7adfa41eb4}\label{structsignal__crypto__provider_a95dd46bf5d73666a55a10d7adfa41eb4}} 
\index{signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}!decrypt\+\_\+func@{decrypt\+\_\+func}}
\index{decrypt\+\_\+func@{decrypt\+\_\+func}!signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}}
\subsubsection{\texorpdfstring{decrypt\+\_\+func}{decrypt\_func}}
{\footnotesize\ttfamily int($\ast$ decrypt\+\_\+func) (\hyperlink{structsignal__buffer}{signal\+\_\+buffer} $\ast$$\ast$output, int cipher, const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$key, size\+\_\+t key\+\_\+len, const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$iv, size\+\_\+t iv\+\_\+len, const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$ciphertext, size\+\_\+t ciphertext\+\_\+len, void $\ast$\hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data})}

Callback for an A\+ES decryption implementation.


\begin{DoxyParams}{Parameters}
{\em output} & buffer to be allocated and populated with the plaintext \\
\hline
{\em cipher} & specific cipher variant to use, either S\+G\+\_\+\+C\+I\+P\+H\+E\+R\+\_\+\+A\+E\+S\+\_\+\+C\+T\+R\+\_\+\+N\+O\+P\+A\+D\+D\+I\+NG or S\+G\+\_\+\+C\+I\+P\+H\+E\+R\+\_\+\+A\+E\+S\+\_\+\+C\+B\+C\+\_\+\+P\+K\+C\+S5 \\
\hline
{\em key} & the encryption key \\
\hline
{\em key\+\_\+len} & length of the encryption key \\
\hline
{\em iv} & the initialization vector \\
\hline
{\em iv\+\_\+len} & length of the initialization vector \\
\hline
{\em ciphertext} & the ciphertext to decrypt \\
\hline
{\em ciphertext\+\_\+len} & length of the ciphertext \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success, negative on failure 
\end{DoxyReturn}


Definition at line 402 of file signal\+\_\+protocol.\+h.

\mbox{\Hypertarget{structsignal__crypto__provider_ab9dded6130895aa077e379cf23dfbf4c}\label{structsignal__crypto__provider_ab9dded6130895aa077e379cf23dfbf4c}} 
\index{signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}!encrypt\+\_\+func@{encrypt\+\_\+func}}
\index{encrypt\+\_\+func@{encrypt\+\_\+func}!signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}}
\subsubsection{\texorpdfstring{encrypt\+\_\+func}{encrypt\_func}}
{\footnotesize\ttfamily int($\ast$ encrypt\+\_\+func) (\hyperlink{structsignal__buffer}{signal\+\_\+buffer} $\ast$$\ast$output, int cipher, const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$key, size\+\_\+t key\+\_\+len, const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$iv, size\+\_\+t iv\+\_\+len, const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$plaintext, size\+\_\+t plaintext\+\_\+len, void $\ast$\hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data})}

Callback for an A\+ES encryption implementation.


\begin{DoxyParams}{Parameters}
{\em output} & buffer to be allocated and populated with the ciphertext \\
\hline
{\em cipher} & specific cipher variant to use, either S\+G\+\_\+\+C\+I\+P\+H\+E\+R\+\_\+\+A\+E\+S\+\_\+\+C\+T\+R\+\_\+\+N\+O\+P\+A\+D\+D\+I\+NG or S\+G\+\_\+\+C\+I\+P\+H\+E\+R\+\_\+\+A\+E\+S\+\_\+\+C\+B\+C\+\_\+\+P\+K\+C\+S5 \\
\hline
{\em key} & the encryption key \\
\hline
{\em key\+\_\+len} & length of the encryption key \\
\hline
{\em iv} & the initialization vector \\
\hline
{\em iv\+\_\+len} & length of the initialization vector \\
\hline
{\em plaintext} & the plaintext to encrypt \\
\hline
{\em plaintext\+\_\+len} & length of the plaintext \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success, negative on failure 
\end{DoxyReturn}


Definition at line 382 of file signal\+\_\+protocol.\+h.

\mbox{\Hypertarget{structsignal__crypto__provider_ab4612259e2555fe33192ef051a7b5140}\label{structsignal__crypto__provider_ab4612259e2555fe33192ef051a7b5140}} 
\index{signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}!hmac\+\_\+sha256\+\_\+cleanup\+\_\+func@{hmac\+\_\+sha256\+\_\+cleanup\+\_\+func}}
\index{hmac\+\_\+sha256\+\_\+cleanup\+\_\+func@{hmac\+\_\+sha256\+\_\+cleanup\+\_\+func}!signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}}
\subsubsection{\texorpdfstring{hmac\+\_\+sha256\+\_\+cleanup\+\_\+func}{hmac\_sha256\_cleanup\_func}}
{\footnotesize\ttfamily void($\ast$ hmac\+\_\+sha256\+\_\+cleanup\+\_\+func) (void $\ast$hmac\+\_\+context, void $\ast$\hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data})}

Callback for an H\+M\+A\+C-\/\+S\+H\+A256 implementation. This function shall free the private context allocated in hmac\+\_\+sha256\+\_\+init\+\_\+func.


\begin{DoxyParams}{Parameters}
{\em hmac\+\_\+context} & private H\+M\+AC context pointer \\
\hline
\end{DoxyParams}


Definition at line 327 of file signal\+\_\+protocol.\+h.

\mbox{\Hypertarget{structsignal__crypto__provider_a356633b9a94dc4c9e7e59c7756296cd1}\label{structsignal__crypto__provider_a356633b9a94dc4c9e7e59c7756296cd1}} 
\index{signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}!hmac\+\_\+sha256\+\_\+final\+\_\+func@{hmac\+\_\+sha256\+\_\+final\+\_\+func}}
\index{hmac\+\_\+sha256\+\_\+final\+\_\+func@{hmac\+\_\+sha256\+\_\+final\+\_\+func}!signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}}
\subsubsection{\texorpdfstring{hmac\+\_\+sha256\+\_\+final\+\_\+func}{hmac\_sha256\_final\_func}}
{\footnotesize\ttfamily int($\ast$ hmac\+\_\+sha256\+\_\+final\+\_\+func) (void $\ast$hmac\+\_\+context, \hyperlink{structsignal__buffer}{signal\+\_\+buffer} $\ast$$\ast$output, void $\ast$\hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data})}

Callback for an H\+M\+A\+C-\/\+S\+H\+A256 implementation. This function shall finalize an H\+M\+AC calculation and populate the output buffer with the result.


\begin{DoxyParams}{Parameters}
{\em hmac\+\_\+context} & private H\+M\+AC context pointer \\
\hline
{\em output} & buffer to be allocated and populated with the result \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success, negative on failure 
\end{DoxyReturn}


Definition at line 318 of file signal\+\_\+protocol.\+h.

\mbox{\Hypertarget{structsignal__crypto__provider_a8a4ae4e1da61461681ecaf4047648ce5}\label{structsignal__crypto__provider_a8a4ae4e1da61461681ecaf4047648ce5}} 
\index{signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}!hmac\+\_\+sha256\+\_\+init\+\_\+func@{hmac\+\_\+sha256\+\_\+init\+\_\+func}}
\index{hmac\+\_\+sha256\+\_\+init\+\_\+func@{hmac\+\_\+sha256\+\_\+init\+\_\+func}!signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}}
\subsubsection{\texorpdfstring{hmac\+\_\+sha256\+\_\+init\+\_\+func}{hmac\_sha256\_init\_func}}
{\footnotesize\ttfamily int($\ast$ hmac\+\_\+sha256\+\_\+init\+\_\+func) (void $\ast$$\ast$hmac\+\_\+context, const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$key, size\+\_\+t key\+\_\+len, void $\ast$\hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data})}

Callback for an H\+M\+A\+C-\/\+S\+H\+A256 implementation. This function shall initialize an H\+M\+AC context with the provided key.


\begin{DoxyParams}{Parameters}
{\em hmac\+\_\+context} & private H\+M\+AC context pointer \\
\hline
{\em key} & pointer to the key \\
\hline
{\em key\+\_\+len} & length of the key \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success, negative on failure 
\end{DoxyReturn}


Definition at line 296 of file signal\+\_\+protocol.\+h.

\mbox{\Hypertarget{structsignal__crypto__provider_a4acc474379cec2d1d51c4f1781efb65d}\label{structsignal__crypto__provider_a4acc474379cec2d1d51c4f1781efb65d}} 
\index{signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}!hmac\+\_\+sha256\+\_\+update\+\_\+func@{hmac\+\_\+sha256\+\_\+update\+\_\+func}}
\index{hmac\+\_\+sha256\+\_\+update\+\_\+func@{hmac\+\_\+sha256\+\_\+update\+\_\+func}!signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}}
\subsubsection{\texorpdfstring{hmac\+\_\+sha256\+\_\+update\+\_\+func}{hmac\_sha256\_update\_func}}
{\footnotesize\ttfamily int($\ast$ hmac\+\_\+sha256\+\_\+update\+\_\+func) (void $\ast$hmac\+\_\+context, const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$data, size\+\_\+t data\+\_\+len, void $\ast$\hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data})}

Callback for an H\+M\+A\+C-\/\+S\+H\+A256 implementation. This function shall update the H\+M\+AC context with the provided data


\begin{DoxyParams}{Parameters}
{\em hmac\+\_\+context} & private H\+M\+AC context pointer \\
\hline
{\em data} & pointer to the data \\
\hline
{\em data\+\_\+len} & length of the data \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success, negative on failure 
\end{DoxyReturn}


Definition at line 307 of file signal\+\_\+protocol.\+h.

\mbox{\Hypertarget{structsignal__crypto__provider_a072f2960af40439c1fee4544af6f4820}\label{structsignal__crypto__provider_a072f2960af40439c1fee4544af6f4820}} 
\index{signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}!random\+\_\+func@{random\+\_\+func}}
\index{random\+\_\+func@{random\+\_\+func}!signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}}
\subsubsection{\texorpdfstring{random\+\_\+func}{random\_func}}
{\footnotesize\ttfamily int($\ast$ random\+\_\+func) (\hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$data, size\+\_\+t len, void $\ast$\hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data})}

Callback for a secure random number generator. This function shall fill the provided buffer with random bytes.


\begin{DoxyParams}{Parameters}
{\em data} & pointer to the output buffer \\
\hline
{\em len} & size of the output buffer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success, negative on failure 
\end{DoxyReturn}


Definition at line 285 of file signal\+\_\+protocol.\+h.

\mbox{\Hypertarget{structsignal__crypto__provider_af19391e02d66f73234e7643f8faeb690}\label{structsignal__crypto__provider_af19391e02d66f73234e7643f8faeb690}} 
\index{signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}!sha512\+\_\+digest\+\_\+cleanup\+\_\+func@{sha512\+\_\+digest\+\_\+cleanup\+\_\+func}}
\index{sha512\+\_\+digest\+\_\+cleanup\+\_\+func@{sha512\+\_\+digest\+\_\+cleanup\+\_\+func}!signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}}
\subsubsection{\texorpdfstring{sha512\+\_\+digest\+\_\+cleanup\+\_\+func}{sha512\_digest\_cleanup\_func}}
{\footnotesize\ttfamily void($\ast$ sha512\+\_\+digest\+\_\+cleanup\+\_\+func) (void $\ast$digest\+\_\+context, void $\ast$\hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data})}

Callback for a S\+H\+A512 message digest implementation. This function shall free the private context allocated in sha512\+\_\+digest\+\_\+init\+\_\+func.


\begin{DoxyParams}{Parameters}
{\em digest\+\_\+context} & private digest context pointer \\
\hline
\end{DoxyParams}


Definition at line 367 of file signal\+\_\+protocol.\+h.

\mbox{\Hypertarget{structsignal__crypto__provider_a2cadef01ac5cc7ad6fe98a7822e685cd}\label{structsignal__crypto__provider_a2cadef01ac5cc7ad6fe98a7822e685cd}} 
\index{signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}!sha512\+\_\+digest\+\_\+final\+\_\+func@{sha512\+\_\+digest\+\_\+final\+\_\+func}}
\index{sha512\+\_\+digest\+\_\+final\+\_\+func@{sha512\+\_\+digest\+\_\+final\+\_\+func}!signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}}
\subsubsection{\texorpdfstring{sha512\+\_\+digest\+\_\+final\+\_\+func}{sha512\_digest\_final\_func}}
{\footnotesize\ttfamily int($\ast$ sha512\+\_\+digest\+\_\+final\+\_\+func) (void $\ast$digest\+\_\+context, \hyperlink{structsignal__buffer}{signal\+\_\+buffer} $\ast$$\ast$output, void $\ast$\hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data})}

Callback for a S\+H\+A512 message digest implementation. This function shall finalize the digest calculation, populate the output buffer with the result, and prepare the context for reuse.


\begin{DoxyParams}{Parameters}
{\em digest\+\_\+context} & private digest context pointer \\
\hline
{\em output} & buffer to be allocated and populated with the result \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success, negative on failure 
\end{DoxyReturn}


Definition at line 358 of file signal\+\_\+protocol.\+h.

\mbox{\Hypertarget{structsignal__crypto__provider_ac36eece5a8d18c906291852e75d4e4b4}\label{structsignal__crypto__provider_ac36eece5a8d18c906291852e75d4e4b4}} 
\index{signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}!sha512\+\_\+digest\+\_\+init\+\_\+func@{sha512\+\_\+digest\+\_\+init\+\_\+func}}
\index{sha512\+\_\+digest\+\_\+init\+\_\+func@{sha512\+\_\+digest\+\_\+init\+\_\+func}!signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}}
\subsubsection{\texorpdfstring{sha512\+\_\+digest\+\_\+init\+\_\+func}{sha512\_digest\_init\_func}}
{\footnotesize\ttfamily int($\ast$ sha512\+\_\+digest\+\_\+init\+\_\+func) (void $\ast$$\ast$digest\+\_\+context, void $\ast$\hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data})}

Callback for a S\+H\+A512 message digest implementation. This function shall initialize a digest context.


\begin{DoxyParams}{Parameters}
{\em digest\+\_\+context} & private digest context pointer \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success, negative on failure 
\end{DoxyReturn}


Definition at line 336 of file signal\+\_\+protocol.\+h.

\mbox{\Hypertarget{structsignal__crypto__provider_a2ce1087c00ca6012c20527b4721467f7}\label{structsignal__crypto__provider_a2ce1087c00ca6012c20527b4721467f7}} 
\index{signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}!sha512\+\_\+digest\+\_\+update\+\_\+func@{sha512\+\_\+digest\+\_\+update\+\_\+func}}
\index{sha512\+\_\+digest\+\_\+update\+\_\+func@{sha512\+\_\+digest\+\_\+update\+\_\+func}!signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}}
\subsubsection{\texorpdfstring{sha512\+\_\+digest\+\_\+update\+\_\+func}{sha512\_digest\_update\_func}}
{\footnotesize\ttfamily int($\ast$ sha512\+\_\+digest\+\_\+update\+\_\+func) (void $\ast$digest\+\_\+context, const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$data, size\+\_\+t data\+\_\+len, void $\ast$\hyperlink{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}{user\+\_\+data})}

Callback for a S\+H\+A512 message digest implementation. This function shall update the digest context with the provided data.


\begin{DoxyParams}{Parameters}
{\em digest\+\_\+context} & private digest context pointer \\
\hline
{\em data} & pointer to the data \\
\hline
{\em data\+\_\+len} & length of the data \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
0 on success, negative on failure 
\end{DoxyReturn}


Definition at line 347 of file signal\+\_\+protocol.\+h.

\mbox{\Hypertarget{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}\label{structsignal__crypto__provider_a0f53d287ac7c064d1a49d4bd93ca1cb9}} 
\index{signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}!user\+\_\+data@{user\+\_\+data}}
\index{user\+\_\+data@{user\+\_\+data}!signal\+\_\+crypto\+\_\+provider@{signal\+\_\+crypto\+\_\+provider}}
\subsubsection{\texorpdfstring{user\+\_\+data}{user\_data}}
{\footnotesize\ttfamily void$\ast$ user\+\_\+data}

User data pointer 

Definition at line 410 of file signal\+\_\+protocol.\+h.



The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
src/\hyperlink{signal__protocol_8h}{signal\+\_\+protocol.\+h}\end{DoxyCompactItemize}
