\hypertarget{signal__protocol__internal_8h}{}\section{src/signal\+\_\+protocol\+\_\+internal.h File Reference}
\label{signal__protocol__internal_8h}\index{src/signal\+\_\+protocol\+\_\+internal.\+h@{src/signal\+\_\+protocol\+\_\+internal.\+h}}
{\ttfamily \#include $<$protobuf-\/c/protobuf-\/c.\+h$>$}\newline
{\ttfamily \#include \char`\"{}Local\+Storage\+Protocol.\+pb-\/c.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}signal\+\_\+protocol.\+h\char`\"{}}\newline
Include dependency graph for signal\+\_\+protocol\+\_\+internal.\+h\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{signal__protocol__internal_8h__incl}
\end{center}
\end{figure}
\subsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structsignal__type__base}{signal\+\_\+type\+\_\+base}
\item 
struct \hyperlink{structsignal__buffer}{signal\+\_\+buffer}
\item 
struct \hyperlink{structsignal__context}{signal\+\_\+context}
\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \hyperlink{signal__protocol__internal_8h_af846aa588b962ac5f61d60af07891ae5}{S\+I\+G\+N\+A\+L\+\_\+\+I\+N\+IT}(instance,  destroy\+\_\+func)~\hyperlink{signal__protocol__internal_8h_a28dbdbecfb152389dfbb0a48025af64a}{signal\+\_\+type\+\_\+init}((\hyperlink{structsignal__type__base}{signal\+\_\+type\+\_\+base} $\ast$)instance, destroy\+\_\+func)
\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{signal__protocol__internal_8h_a28dbdbecfb152389dfbb0a48025af64a}{signal\+\_\+type\+\_\+init} (\hyperlink{structsignal__type__base}{signal\+\_\+type\+\_\+base} $\ast$instance, void($\ast$destroy\+\_\+func)(\hyperlink{structsignal__type__base}{signal\+\_\+type\+\_\+base} $\ast$instance))
\item 
int \hyperlink{signal__protocol__internal_8h_a30f5774994f94ce4b169ec8db2cf7b72}{signal\+\_\+crypto\+\_\+random} (\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$context, \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$data, size\+\_\+t len)
\item 
int \hyperlink{signal__protocol__internal_8h_ae9d2f2ee34fb35c7924363422fef5d9b}{signal\+\_\+hmac\+\_\+sha256\+\_\+init} (\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$context, void $\ast$$\ast$hmac\+\_\+context, const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$key, size\+\_\+t key\+\_\+len)
\item 
int \hyperlink{signal__protocol__internal_8h_adbfcf69e98b208088fc266ef86299454}{signal\+\_\+hmac\+\_\+sha256\+\_\+update} (\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$context, void $\ast$hmac\+\_\+context, const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$data, size\+\_\+t data\+\_\+len)
\item 
int \hyperlink{signal__protocol__internal_8h_a1976897afeab4cbef4e2774e4230a768}{signal\+\_\+hmac\+\_\+sha256\+\_\+final} (\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$context, void $\ast$hmac\+\_\+context, \hyperlink{structsignal__buffer}{signal\+\_\+buffer} $\ast$$\ast$output)
\item 
void \hyperlink{signal__protocol__internal_8h_ad44b5efca7c997ce6317470e28d57faf}{signal\+\_\+hmac\+\_\+sha256\+\_\+cleanup} (\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$context, void $\ast$hmac\+\_\+context)
\item 
int \hyperlink{signal__protocol__internal_8h_ae0e1113fb5726d9066d52c950e7cb7e1}{signal\+\_\+sha512\+\_\+digest\+\_\+init} (\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$context, void $\ast$$\ast$digest\+\_\+context)
\item 
int \hyperlink{signal__protocol__internal_8h_a2bcbac70ef918b59787135fc6e7aa553}{signal\+\_\+sha512\+\_\+digest\+\_\+update} (\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$context, void $\ast$digest\+\_\+context, const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$data, size\+\_\+t data\+\_\+len)
\item 
int \hyperlink{signal__protocol__internal_8h_a44c70e9997a4d3ef5c969ddccfef5327}{signal\+\_\+sha512\+\_\+digest\+\_\+final} (\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$context, void $\ast$digest\+\_\+context, \hyperlink{structsignal__buffer}{signal\+\_\+buffer} $\ast$$\ast$output)
\item 
void \hyperlink{signal__protocol__internal_8h_a75c8648caca7a07ac759ed67fb2cad26}{signal\+\_\+sha512\+\_\+digest\+\_\+cleanup} (\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$context, void $\ast$digest\+\_\+context)
\item 
int \hyperlink{signal__protocol__internal_8h_a3805324eae705ece568033fdb307602b}{signal\+\_\+encrypt} (\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$context, \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)
\item 
int \hyperlink{signal__protocol__internal_8h_ab94b4bf2aeba5f3333024023966f579c}{signal\+\_\+decrypt} (\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$context, \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)
\item 
void \hyperlink{signal__protocol__internal_8h_ae83ebddf298760023a4eb321f3e2f637}{signal\+\_\+lock} (\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$context)
\item 
void \hyperlink{signal__protocol__internal_8h_a39f4b744f1fe51eebf7c2c252c4e3cd5}{signal\+\_\+unlock} (\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$context)
\item 
void \hyperlink{signal__protocol__internal_8h_a4bb7421f699bd1e0076ce7b6375114c1}{signal\+\_\+log} (\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$context, int level, const char $\ast$format,...)
\item 
void \hyperlink{signal__protocol__internal_8h_acf88bba7a91ad14c478207216d5b678d}{signal\+\_\+explicit\+\_\+bzero} (void $\ast$v, size\+\_\+t n)
\item 
int \hyperlink{signal__protocol__internal_8h_add0b725b06a483c5d7905586efa54cad}{signal\+\_\+constant\+\_\+memcmp} (const void $\ast$s1, const void $\ast$s2, size\+\_\+t n)
\item 
int \hyperlink{signal__protocol__internal_8h_a57d5a6b0168e14d57e50c8577896644d}{ec\+\_\+public\+\_\+key\+\_\+serialize\+\_\+protobuf} (\hyperlink{struct_protobuf_c_binary_data}{Protobuf\+C\+Binary\+Data} $\ast$buffer, const \hyperlink{signal__protocol__types_8h_a73ea701c5087163bba608c4706df6176}{ec\+\_\+public\+\_\+key} $\ast$key)
\item 
int \hyperlink{signal__protocol__internal_8h_ab7ddefd12df72bc1660b8936d9ca23f0}{ec\+\_\+private\+\_\+key\+\_\+serialize\+\_\+protobuf} (\hyperlink{struct_protobuf_c_binary_data}{Protobuf\+C\+Binary\+Data} $\ast$buffer, const \hyperlink{signal__protocol__types_8h_a06d963e532f25681dd462897f844205d}{ec\+\_\+private\+\_\+key} $\ast$key)
\item 
int \hyperlink{signal__protocol__internal_8h_ae84bd4ace5e23e7d2873b42c4c88e036}{ratchet\+\_\+chain\+\_\+key\+\_\+get\+\_\+key\+\_\+protobuf} (const \hyperlink{signal__protocol__types_8h_a7799abfd66deed541c14a329fd832afc}{ratchet\+\_\+chain\+\_\+key} $\ast$chain\+\_\+key, \hyperlink{struct_protobuf_c_binary_data}{Protobuf\+C\+Binary\+Data} $\ast$buffer)
\item 
int \hyperlink{signal__protocol__internal_8h_a0501d762b5d61b50e7263eb3dcfad698}{ratchet\+\_\+root\+\_\+key\+\_\+get\+\_\+key\+\_\+protobuf} (const \hyperlink{signal__protocol__types_8h_a4a3febd70a6caf4ef99dfe1a87146372}{ratchet\+\_\+root\+\_\+key} $\ast$root\+\_\+key, \hyperlink{struct_protobuf_c_binary_data}{Protobuf\+C\+Binary\+Data} $\ast$buffer)
\item 
int \hyperlink{signal__protocol__internal_8h_af829d02537ff27aef2413a96defc6056}{session\+\_\+state\+\_\+serialize\+\_\+prepare} (\hyperlink{signal__protocol__types_8h_a1a0fb11eb762bbf0da7e0b771c5a78c8}{session\+\_\+state} $\ast$state, \hyperlink{_local_storage_protocol_8pb-c_8h_a7e625a6265ff18dd23611d14c231396d}{Textsecure\+\_\+\+\_\+\+Session\+Structure} $\ast$session\+\_\+structure)
\item 
void \hyperlink{signal__protocol__internal_8h_a66035b4f211f78cfbc3407c33e08134d}{session\+\_\+state\+\_\+serialize\+\_\+prepare\+\_\+free} (\hyperlink{_local_storage_protocol_8pb-c_8h_a7e625a6265ff18dd23611d14c231396d}{Textsecure\+\_\+\+\_\+\+Session\+Structure} $\ast$session\+\_\+structure)
\item 
int \hyperlink{signal__protocol__internal_8h_a21711d834417ebc52edb3ccae1c2c2ea}{session\+\_\+state\+\_\+deserialize\+\_\+protobuf} (\hyperlink{signal__protocol__types_8h_a1a0fb11eb762bbf0da7e0b771c5a78c8}{session\+\_\+state} $\ast$$\ast$state, \hyperlink{_local_storage_protocol_8pb-c_8h_a7e625a6265ff18dd23611d14c231396d}{Textsecure\+\_\+\+\_\+\+Session\+Structure} $\ast$session\+\_\+structure, \hyperlink{structsignal__context}{signal\+\_\+context} $\ast$global\+\_\+context)
\item 
int \hyperlink{signal__protocol__internal_8h_a09129f0c7002fe19f0225386f2f97fa3}{sender\+\_\+key\+\_\+state\+\_\+serialize\+\_\+prepare} (\hyperlink{signal__protocol__types_8h_a133cb1e548ad9496426e8cd1a05236f7}{sender\+\_\+key\+\_\+state} $\ast$state, \hyperlink{_local_storage_protocol_8pb-c_8h_aaeb1b8c65fe59c388969899bf8b3cbb7}{Textsecure\+\_\+\+\_\+\+Sender\+Key\+State\+Structure} $\ast$state\+\_\+structure)
\item 
void \hyperlink{signal__protocol__internal_8h_ab00e68e7ebdba5f8821540f7c93f5b5f}{sender\+\_\+key\+\_\+state\+\_\+serialize\+\_\+prepare\+\_\+free} (\hyperlink{_local_storage_protocol_8pb-c_8h_aaeb1b8c65fe59c388969899bf8b3cbb7}{Textsecure\+\_\+\+\_\+\+Sender\+Key\+State\+Structure} $\ast$state\+\_\+structure)
\item 
int \hyperlink{signal__protocol__internal_8h_a22635687722ed107da7f47072c77e231}{sender\+\_\+key\+\_\+state\+\_\+deserialize\+\_\+protobuf} (\hyperlink{signal__protocol__types_8h_a133cb1e548ad9496426e8cd1a05236f7}{sender\+\_\+key\+\_\+state} $\ast$$\ast$state, \hyperlink{_local_storage_protocol_8pb-c_8h_aaeb1b8c65fe59c388969899bf8b3cbb7}{Textsecure\+\_\+\+\_\+\+Sender\+Key\+State\+Structure} $\ast$state\+\_\+structure, \hyperlink{structsignal__context}{signal\+\_\+context} $\ast$global\+\_\+context)
\item 
void \hyperlink{signal__protocol__internal_8h_a1fce1ca80da61bf49e75ea5db28775e3}{signal\+\_\+protocol\+\_\+str\+\_\+serialize\+\_\+protobuf} (\hyperlink{struct_protobuf_c_binary_data}{Protobuf\+C\+Binary\+Data} $\ast$buffer, const char $\ast$str)
\item 
char $\ast$ \hyperlink{signal__protocol__internal_8h_a00059c3280da6f67829f6f8f8e13e0cb}{signal\+\_\+protocol\+\_\+str\+\_\+deserialize\+\_\+protobuf} (\hyperlink{struct_protobuf_c_binary_data}{Protobuf\+C\+Binary\+Data} $\ast$buffer)
\end{DoxyCompactItemize}


\subsection{Macro Definition Documentation}
\mbox{\Hypertarget{signal__protocol__internal_8h_af846aa588b962ac5f61d60af07891ae5}\label{signal__protocol__internal_8h_af846aa588b962ac5f61d60af07891ae5}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!S\+I\+G\+N\+A\+L\+\_\+\+I\+N\+IT@{S\+I\+G\+N\+A\+L\+\_\+\+I\+N\+IT}}
\index{S\+I\+G\+N\+A\+L\+\_\+\+I\+N\+IT@{S\+I\+G\+N\+A\+L\+\_\+\+I\+N\+IT}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{S\+I\+G\+N\+A\+L\+\_\+\+I\+N\+IT}{SIGNAL\_INIT}}
{\footnotesize\ttfamily \#define S\+I\+G\+N\+A\+L\+\_\+\+I\+N\+IT(\begin{DoxyParamCaption}\item[{}]{instance,  }\item[{}]{destroy\+\_\+func }\end{DoxyParamCaption})~\hyperlink{signal__protocol__internal_8h_a28dbdbecfb152389dfbb0a48025af64a}{signal\+\_\+type\+\_\+init}((\hyperlink{structsignal__type__base}{signal\+\_\+type\+\_\+base} $\ast$)instance, destroy\+\_\+func)}



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



\subsection{Function Documentation}
\mbox{\Hypertarget{signal__protocol__internal_8h_ab7ddefd12df72bc1660b8936d9ca23f0}\label{signal__protocol__internal_8h_ab7ddefd12df72bc1660b8936d9ca23f0}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!ec\+\_\+private\+\_\+key\+\_\+serialize\+\_\+protobuf@{ec\+\_\+private\+\_\+key\+\_\+serialize\+\_\+protobuf}}
\index{ec\+\_\+private\+\_\+key\+\_\+serialize\+\_\+protobuf@{ec\+\_\+private\+\_\+key\+\_\+serialize\+\_\+protobuf}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{ec\+\_\+private\+\_\+key\+\_\+serialize\+\_\+protobuf()}{ec\_private\_key\_serialize\_protobuf()}}
{\footnotesize\ttfamily int ec\+\_\+private\+\_\+key\+\_\+serialize\+\_\+protobuf (\begin{DoxyParamCaption}\item[{\hyperlink{struct_protobuf_c_binary_data}{Protobuf\+C\+Binary\+Data} $\ast$}]{buffer,  }\item[{const \hyperlink{signal__protocol__types_8h_a06d963e532f25681dd462897f844205d}{ec\+\_\+private\+\_\+key} $\ast$}]{key }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_a57d5a6b0168e14d57e50c8577896644d}\label{signal__protocol__internal_8h_a57d5a6b0168e14d57e50c8577896644d}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!ec\+\_\+public\+\_\+key\+\_\+serialize\+\_\+protobuf@{ec\+\_\+public\+\_\+key\+\_\+serialize\+\_\+protobuf}}
\index{ec\+\_\+public\+\_\+key\+\_\+serialize\+\_\+protobuf@{ec\+\_\+public\+\_\+key\+\_\+serialize\+\_\+protobuf}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{ec\+\_\+public\+\_\+key\+\_\+serialize\+\_\+protobuf()}{ec\_public\_key\_serialize\_protobuf()}}
{\footnotesize\ttfamily int ec\+\_\+public\+\_\+key\+\_\+serialize\+\_\+protobuf (\begin{DoxyParamCaption}\item[{\hyperlink{struct_protobuf_c_binary_data}{Protobuf\+C\+Binary\+Data} $\ast$}]{buffer,  }\item[{const \hyperlink{signal__protocol__types_8h_a73ea701c5087163bba608c4706df6176}{ec\+\_\+public\+\_\+key} $\ast$}]{key }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_ae84bd4ace5e23e7d2873b42c4c88e036}\label{signal__protocol__internal_8h_ae84bd4ace5e23e7d2873b42c4c88e036}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!ratchet\+\_\+chain\+\_\+key\+\_\+get\+\_\+key\+\_\+protobuf@{ratchet\+\_\+chain\+\_\+key\+\_\+get\+\_\+key\+\_\+protobuf}}
\index{ratchet\+\_\+chain\+\_\+key\+\_\+get\+\_\+key\+\_\+protobuf@{ratchet\+\_\+chain\+\_\+key\+\_\+get\+\_\+key\+\_\+protobuf}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{ratchet\+\_\+chain\+\_\+key\+\_\+get\+\_\+key\+\_\+protobuf()}{ratchet\_chain\_key\_get\_key\_protobuf()}}
{\footnotesize\ttfamily int ratchet\+\_\+chain\+\_\+key\+\_\+get\+\_\+key\+\_\+protobuf (\begin{DoxyParamCaption}\item[{const \hyperlink{signal__protocol__types_8h_a7799abfd66deed541c14a329fd832afc}{ratchet\+\_\+chain\+\_\+key} $\ast$}]{chain\+\_\+key,  }\item[{\hyperlink{struct_protobuf_c_binary_data}{Protobuf\+C\+Binary\+Data} $\ast$}]{buffer }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_a0501d762b5d61b50e7263eb3dcfad698}\label{signal__protocol__internal_8h_a0501d762b5d61b50e7263eb3dcfad698}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!ratchet\+\_\+root\+\_\+key\+\_\+get\+\_\+key\+\_\+protobuf@{ratchet\+\_\+root\+\_\+key\+\_\+get\+\_\+key\+\_\+protobuf}}
\index{ratchet\+\_\+root\+\_\+key\+\_\+get\+\_\+key\+\_\+protobuf@{ratchet\+\_\+root\+\_\+key\+\_\+get\+\_\+key\+\_\+protobuf}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{ratchet\+\_\+root\+\_\+key\+\_\+get\+\_\+key\+\_\+protobuf()}{ratchet\_root\_key\_get\_key\_protobuf()}}
{\footnotesize\ttfamily int ratchet\+\_\+root\+\_\+key\+\_\+get\+\_\+key\+\_\+protobuf (\begin{DoxyParamCaption}\item[{const \hyperlink{signal__protocol__types_8h_a4a3febd70a6caf4ef99dfe1a87146372}{ratchet\+\_\+root\+\_\+key} $\ast$}]{root\+\_\+key,  }\item[{\hyperlink{struct_protobuf_c_binary_data}{Protobuf\+C\+Binary\+Data} $\ast$}]{buffer }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_a22635687722ed107da7f47072c77e231}\label{signal__protocol__internal_8h_a22635687722ed107da7f47072c77e231}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!sender\+\_\+key\+\_\+state\+\_\+deserialize\+\_\+protobuf@{sender\+\_\+key\+\_\+state\+\_\+deserialize\+\_\+protobuf}}
\index{sender\+\_\+key\+\_\+state\+\_\+deserialize\+\_\+protobuf@{sender\+\_\+key\+\_\+state\+\_\+deserialize\+\_\+protobuf}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{sender\+\_\+key\+\_\+state\+\_\+deserialize\+\_\+protobuf()}{sender\_key\_state\_deserialize\_protobuf()}}
{\footnotesize\ttfamily int sender\+\_\+key\+\_\+state\+\_\+deserialize\+\_\+protobuf (\begin{DoxyParamCaption}\item[{\hyperlink{signal__protocol__types_8h_a133cb1e548ad9496426e8cd1a05236f7}{sender\+\_\+key\+\_\+state} $\ast$$\ast$}]{state,  }\item[{\hyperlink{_local_storage_protocol_8pb-c_8h_aaeb1b8c65fe59c388969899bf8b3cbb7}{Textsecure\+\_\+\+\_\+\+Sender\+Key\+State\+Structure} $\ast$}]{state\+\_\+structure,  }\item[{\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$}]{global\+\_\+context }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_a09129f0c7002fe19f0225386f2f97fa3}\label{signal__protocol__internal_8h_a09129f0c7002fe19f0225386f2f97fa3}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!sender\+\_\+key\+\_\+state\+\_\+serialize\+\_\+prepare@{sender\+\_\+key\+\_\+state\+\_\+serialize\+\_\+prepare}}
\index{sender\+\_\+key\+\_\+state\+\_\+serialize\+\_\+prepare@{sender\+\_\+key\+\_\+state\+\_\+serialize\+\_\+prepare}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{sender\+\_\+key\+\_\+state\+\_\+serialize\+\_\+prepare()}{sender\_key\_state\_serialize\_prepare()}}
{\footnotesize\ttfamily int sender\+\_\+key\+\_\+state\+\_\+serialize\+\_\+prepare (\begin{DoxyParamCaption}\item[{\hyperlink{signal__protocol__types_8h_a133cb1e548ad9496426e8cd1a05236f7}{sender\+\_\+key\+\_\+state} $\ast$}]{state,  }\item[{\hyperlink{_local_storage_protocol_8pb-c_8h_aaeb1b8c65fe59c388969899bf8b3cbb7}{Textsecure\+\_\+\+\_\+\+Sender\+Key\+State\+Structure} $\ast$}]{state\+\_\+structure }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_ab00e68e7ebdba5f8821540f7c93f5b5f}\label{signal__protocol__internal_8h_ab00e68e7ebdba5f8821540f7c93f5b5f}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!sender\+\_\+key\+\_\+state\+\_\+serialize\+\_\+prepare\+\_\+free@{sender\+\_\+key\+\_\+state\+\_\+serialize\+\_\+prepare\+\_\+free}}
\index{sender\+\_\+key\+\_\+state\+\_\+serialize\+\_\+prepare\+\_\+free@{sender\+\_\+key\+\_\+state\+\_\+serialize\+\_\+prepare\+\_\+free}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{sender\+\_\+key\+\_\+state\+\_\+serialize\+\_\+prepare\+\_\+free()}{sender\_key\_state\_serialize\_prepare\_free()}}
{\footnotesize\ttfamily void sender\+\_\+key\+\_\+state\+\_\+serialize\+\_\+prepare\+\_\+free (\begin{DoxyParamCaption}\item[{\hyperlink{_local_storage_protocol_8pb-c_8h_aaeb1b8c65fe59c388969899bf8b3cbb7}{Textsecure\+\_\+\+\_\+\+Sender\+Key\+State\+Structure} $\ast$}]{state\+\_\+structure }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_a21711d834417ebc52edb3ccae1c2c2ea}\label{signal__protocol__internal_8h_a21711d834417ebc52edb3ccae1c2c2ea}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!session\+\_\+state\+\_\+deserialize\+\_\+protobuf@{session\+\_\+state\+\_\+deserialize\+\_\+protobuf}}
\index{session\+\_\+state\+\_\+deserialize\+\_\+protobuf@{session\+\_\+state\+\_\+deserialize\+\_\+protobuf}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{session\+\_\+state\+\_\+deserialize\+\_\+protobuf()}{session\_state\_deserialize\_protobuf()}}
{\footnotesize\ttfamily int session\+\_\+state\+\_\+deserialize\+\_\+protobuf (\begin{DoxyParamCaption}\item[{\hyperlink{signal__protocol__types_8h_a1a0fb11eb762bbf0da7e0b771c5a78c8}{session\+\_\+state} $\ast$$\ast$}]{state,  }\item[{\hyperlink{_local_storage_protocol_8pb-c_8h_a7e625a6265ff18dd23611d14c231396d}{Textsecure\+\_\+\+\_\+\+Session\+Structure} $\ast$}]{session\+\_\+structure,  }\item[{\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$}]{global\+\_\+context }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_af829d02537ff27aef2413a96defc6056}\label{signal__protocol__internal_8h_af829d02537ff27aef2413a96defc6056}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!session\+\_\+state\+\_\+serialize\+\_\+prepare@{session\+\_\+state\+\_\+serialize\+\_\+prepare}}
\index{session\+\_\+state\+\_\+serialize\+\_\+prepare@{session\+\_\+state\+\_\+serialize\+\_\+prepare}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{session\+\_\+state\+\_\+serialize\+\_\+prepare()}{session\_state\_serialize\_prepare()}}
{\footnotesize\ttfamily int session\+\_\+state\+\_\+serialize\+\_\+prepare (\begin{DoxyParamCaption}\item[{\hyperlink{signal__protocol__types_8h_a1a0fb11eb762bbf0da7e0b771c5a78c8}{session\+\_\+state} $\ast$}]{state,  }\item[{\hyperlink{_local_storage_protocol_8pb-c_8h_a7e625a6265ff18dd23611d14c231396d}{Textsecure\+\_\+\+\_\+\+Session\+Structure} $\ast$}]{session\+\_\+structure }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_a66035b4f211f78cfbc3407c33e08134d}\label{signal__protocol__internal_8h_a66035b4f211f78cfbc3407c33e08134d}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!session\+\_\+state\+\_\+serialize\+\_\+prepare\+\_\+free@{session\+\_\+state\+\_\+serialize\+\_\+prepare\+\_\+free}}
\index{session\+\_\+state\+\_\+serialize\+\_\+prepare\+\_\+free@{session\+\_\+state\+\_\+serialize\+\_\+prepare\+\_\+free}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{session\+\_\+state\+\_\+serialize\+\_\+prepare\+\_\+free()}{session\_state\_serialize\_prepare\_free()}}
{\footnotesize\ttfamily void session\+\_\+state\+\_\+serialize\+\_\+prepare\+\_\+free (\begin{DoxyParamCaption}\item[{\hyperlink{_local_storage_protocol_8pb-c_8h_a7e625a6265ff18dd23611d14c231396d}{Textsecure\+\_\+\+\_\+\+Session\+Structure} $\ast$}]{session\+\_\+structure }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_add0b725b06a483c5d7905586efa54cad}\label{signal__protocol__internal_8h_add0b725b06a483c5d7905586efa54cad}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!signal\+\_\+constant\+\_\+memcmp@{signal\+\_\+constant\+\_\+memcmp}}
\index{signal\+\_\+constant\+\_\+memcmp@{signal\+\_\+constant\+\_\+memcmp}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{signal\+\_\+constant\+\_\+memcmp()}{signal\_constant\_memcmp()}}
{\footnotesize\ttfamily int signal\+\_\+constant\+\_\+memcmp (\begin{DoxyParamCaption}\item[{const void $\ast$}]{s1,  }\item[{const void $\ast$}]{s2,  }\item[{size\+\_\+t}]{n }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_a30f5774994f94ce4b169ec8db2cf7b72}\label{signal__protocol__internal_8h_a30f5774994f94ce4b169ec8db2cf7b72}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!signal\+\_\+crypto\+\_\+random@{signal\+\_\+crypto\+\_\+random}}
\index{signal\+\_\+crypto\+\_\+random@{signal\+\_\+crypto\+\_\+random}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{signal\+\_\+crypto\+\_\+random()}{signal\_crypto\_random()}}
{\footnotesize\ttfamily int signal\+\_\+crypto\+\_\+random (\begin{DoxyParamCaption}\item[{\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$}]{context,  }\item[{\hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$}]{data,  }\item[{size\+\_\+t}]{len }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_ab94b4bf2aeba5f3333024023966f579c}\label{signal__protocol__internal_8h_ab94b4bf2aeba5f3333024023966f579c}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!signal\+\_\+decrypt@{signal\+\_\+decrypt}}
\index{signal\+\_\+decrypt@{signal\+\_\+decrypt}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{signal\+\_\+decrypt()}{signal\_decrypt()}}
{\footnotesize\ttfamily int signal\+\_\+decrypt (\begin{DoxyParamCaption}\item[{\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$}]{context,  }\item[{\hyperlink{structsignal__buffer}{signal\+\_\+buffer} $\ast$$\ast$}]{output,  }\item[{int}]{cipher,  }\item[{const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$}]{key,  }\item[{size\+\_\+t}]{key\+\_\+len,  }\item[{const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$}]{iv,  }\item[{size\+\_\+t}]{iv\+\_\+len,  }\item[{const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$}]{ciphertext,  }\item[{size\+\_\+t}]{ciphertext\+\_\+len }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_a3805324eae705ece568033fdb307602b}\label{signal__protocol__internal_8h_a3805324eae705ece568033fdb307602b}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!signal\+\_\+encrypt@{signal\+\_\+encrypt}}
\index{signal\+\_\+encrypt@{signal\+\_\+encrypt}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{signal\+\_\+encrypt()}{signal\_encrypt()}}
{\footnotesize\ttfamily int signal\+\_\+encrypt (\begin{DoxyParamCaption}\item[{\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$}]{context,  }\item[{\hyperlink{structsignal__buffer}{signal\+\_\+buffer} $\ast$$\ast$}]{output,  }\item[{int}]{cipher,  }\item[{const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$}]{key,  }\item[{size\+\_\+t}]{key\+\_\+len,  }\item[{const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$}]{iv,  }\item[{size\+\_\+t}]{iv\+\_\+len,  }\item[{const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$}]{plaintext,  }\item[{size\+\_\+t}]{plaintext\+\_\+len }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_acf88bba7a91ad14c478207216d5b678d}\label{signal__protocol__internal_8h_acf88bba7a91ad14c478207216d5b678d}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!signal\+\_\+explicit\+\_\+bzero@{signal\+\_\+explicit\+\_\+bzero}}
\index{signal\+\_\+explicit\+\_\+bzero@{signal\+\_\+explicit\+\_\+bzero}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{signal\+\_\+explicit\+\_\+bzero()}{signal\_explicit\_bzero()}}
{\footnotesize\ttfamily void signal\+\_\+explicit\+\_\+bzero (\begin{DoxyParamCaption}\item[{void $\ast$}]{v,  }\item[{size\+\_\+t}]{n }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_ad44b5efca7c997ce6317470e28d57faf}\label{signal__protocol__internal_8h_ad44b5efca7c997ce6317470e28d57faf}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!signal\+\_\+hmac\+\_\+sha256\+\_\+cleanup@{signal\+\_\+hmac\+\_\+sha256\+\_\+cleanup}}
\index{signal\+\_\+hmac\+\_\+sha256\+\_\+cleanup@{signal\+\_\+hmac\+\_\+sha256\+\_\+cleanup}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{signal\+\_\+hmac\+\_\+sha256\+\_\+cleanup()}{signal\_hmac\_sha256\_cleanup()}}
{\footnotesize\ttfamily void signal\+\_\+hmac\+\_\+sha256\+\_\+cleanup (\begin{DoxyParamCaption}\item[{\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$}]{context,  }\item[{void $\ast$}]{hmac\+\_\+context }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_a1976897afeab4cbef4e2774e4230a768}\label{signal__protocol__internal_8h_a1976897afeab4cbef4e2774e4230a768}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!signal\+\_\+hmac\+\_\+sha256\+\_\+final@{signal\+\_\+hmac\+\_\+sha256\+\_\+final}}
\index{signal\+\_\+hmac\+\_\+sha256\+\_\+final@{signal\+\_\+hmac\+\_\+sha256\+\_\+final}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{signal\+\_\+hmac\+\_\+sha256\+\_\+final()}{signal\_hmac\_sha256\_final()}}
{\footnotesize\ttfamily int signal\+\_\+hmac\+\_\+sha256\+\_\+final (\begin{DoxyParamCaption}\item[{\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$}]{context,  }\item[{void $\ast$}]{hmac\+\_\+context,  }\item[{\hyperlink{structsignal__buffer}{signal\+\_\+buffer} $\ast$$\ast$}]{output }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_ae9d2f2ee34fb35c7924363422fef5d9b}\label{signal__protocol__internal_8h_ae9d2f2ee34fb35c7924363422fef5d9b}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!signal\+\_\+hmac\+\_\+sha256\+\_\+init@{signal\+\_\+hmac\+\_\+sha256\+\_\+init}}
\index{signal\+\_\+hmac\+\_\+sha256\+\_\+init@{signal\+\_\+hmac\+\_\+sha256\+\_\+init}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{signal\+\_\+hmac\+\_\+sha256\+\_\+init()}{signal\_hmac\_sha256\_init()}}
{\footnotesize\ttfamily int signal\+\_\+hmac\+\_\+sha256\+\_\+init (\begin{DoxyParamCaption}\item[{\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$}]{context,  }\item[{void $\ast$$\ast$}]{hmac\+\_\+context,  }\item[{const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$}]{key,  }\item[{size\+\_\+t}]{key\+\_\+len }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_adbfcf69e98b208088fc266ef86299454}\label{signal__protocol__internal_8h_adbfcf69e98b208088fc266ef86299454}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!signal\+\_\+hmac\+\_\+sha256\+\_\+update@{signal\+\_\+hmac\+\_\+sha256\+\_\+update}}
\index{signal\+\_\+hmac\+\_\+sha256\+\_\+update@{signal\+\_\+hmac\+\_\+sha256\+\_\+update}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{signal\+\_\+hmac\+\_\+sha256\+\_\+update()}{signal\_hmac\_sha256\_update()}}
{\footnotesize\ttfamily int signal\+\_\+hmac\+\_\+sha256\+\_\+update (\begin{DoxyParamCaption}\item[{\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$}]{context,  }\item[{void $\ast$}]{hmac\+\_\+context,  }\item[{const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$}]{data,  }\item[{size\+\_\+t}]{data\+\_\+len }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_ae83ebddf298760023a4eb321f3e2f637}\label{signal__protocol__internal_8h_ae83ebddf298760023a4eb321f3e2f637}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!signal\+\_\+lock@{signal\+\_\+lock}}
\index{signal\+\_\+lock@{signal\+\_\+lock}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{signal\+\_\+lock()}{signal\_lock()}}
{\footnotesize\ttfamily void signal\+\_\+lock (\begin{DoxyParamCaption}\item[{\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$}]{context }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_a4bb7421f699bd1e0076ce7b6375114c1}\label{signal__protocol__internal_8h_a4bb7421f699bd1e0076ce7b6375114c1}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!signal\+\_\+log@{signal\+\_\+log}}
\index{signal\+\_\+log@{signal\+\_\+log}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{signal\+\_\+log()}{signal\_log()}}
{\footnotesize\ttfamily void signal\+\_\+log (\begin{DoxyParamCaption}\item[{\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$}]{context,  }\item[{int}]{level,  }\item[{const char $\ast$}]{format,  }\item[{}]{... }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_a00059c3280da6f67829f6f8f8e13e0cb}\label{signal__protocol__internal_8h_a00059c3280da6f67829f6f8f8e13e0cb}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!signal\+\_\+protocol\+\_\+str\+\_\+deserialize\+\_\+protobuf@{signal\+\_\+protocol\+\_\+str\+\_\+deserialize\+\_\+protobuf}}
\index{signal\+\_\+protocol\+\_\+str\+\_\+deserialize\+\_\+protobuf@{signal\+\_\+protocol\+\_\+str\+\_\+deserialize\+\_\+protobuf}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{signal\+\_\+protocol\+\_\+str\+\_\+deserialize\+\_\+protobuf()}{signal\_protocol\_str\_deserialize\_protobuf()}}
{\footnotesize\ttfamily char$\ast$ signal\+\_\+protocol\+\_\+str\+\_\+deserialize\+\_\+protobuf (\begin{DoxyParamCaption}\item[{\hyperlink{struct_protobuf_c_binary_data}{Protobuf\+C\+Binary\+Data} $\ast$}]{buffer }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_a1fce1ca80da61bf49e75ea5db28775e3}\label{signal__protocol__internal_8h_a1fce1ca80da61bf49e75ea5db28775e3}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!signal\+\_\+protocol\+\_\+str\+\_\+serialize\+\_\+protobuf@{signal\+\_\+protocol\+\_\+str\+\_\+serialize\+\_\+protobuf}}
\index{signal\+\_\+protocol\+\_\+str\+\_\+serialize\+\_\+protobuf@{signal\+\_\+protocol\+\_\+str\+\_\+serialize\+\_\+protobuf}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{signal\+\_\+protocol\+\_\+str\+\_\+serialize\+\_\+protobuf()}{signal\_protocol\_str\_serialize\_protobuf()}}
{\footnotesize\ttfamily void signal\+\_\+protocol\+\_\+str\+\_\+serialize\+\_\+protobuf (\begin{DoxyParamCaption}\item[{\hyperlink{struct_protobuf_c_binary_data}{Protobuf\+C\+Binary\+Data} $\ast$}]{buffer,  }\item[{const char $\ast$}]{str }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_a75c8648caca7a07ac759ed67fb2cad26}\label{signal__protocol__internal_8h_a75c8648caca7a07ac759ed67fb2cad26}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!signal\+\_\+sha512\+\_\+digest\+\_\+cleanup@{signal\+\_\+sha512\+\_\+digest\+\_\+cleanup}}
\index{signal\+\_\+sha512\+\_\+digest\+\_\+cleanup@{signal\+\_\+sha512\+\_\+digest\+\_\+cleanup}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{signal\+\_\+sha512\+\_\+digest\+\_\+cleanup()}{signal\_sha512\_digest\_cleanup()}}
{\footnotesize\ttfamily void signal\+\_\+sha512\+\_\+digest\+\_\+cleanup (\begin{DoxyParamCaption}\item[{\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$}]{context,  }\item[{void $\ast$}]{digest\+\_\+context }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_a44c70e9997a4d3ef5c969ddccfef5327}\label{signal__protocol__internal_8h_a44c70e9997a4d3ef5c969ddccfef5327}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!signal\+\_\+sha512\+\_\+digest\+\_\+final@{signal\+\_\+sha512\+\_\+digest\+\_\+final}}
\index{signal\+\_\+sha512\+\_\+digest\+\_\+final@{signal\+\_\+sha512\+\_\+digest\+\_\+final}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{signal\+\_\+sha512\+\_\+digest\+\_\+final()}{signal\_sha512\_digest\_final()}}
{\footnotesize\ttfamily int signal\+\_\+sha512\+\_\+digest\+\_\+final (\begin{DoxyParamCaption}\item[{\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$}]{context,  }\item[{void $\ast$}]{digest\+\_\+context,  }\item[{\hyperlink{structsignal__buffer}{signal\+\_\+buffer} $\ast$$\ast$}]{output }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_ae0e1113fb5726d9066d52c950e7cb7e1}\label{signal__protocol__internal_8h_ae0e1113fb5726d9066d52c950e7cb7e1}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!signal\+\_\+sha512\+\_\+digest\+\_\+init@{signal\+\_\+sha512\+\_\+digest\+\_\+init}}
\index{signal\+\_\+sha512\+\_\+digest\+\_\+init@{signal\+\_\+sha512\+\_\+digest\+\_\+init}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{signal\+\_\+sha512\+\_\+digest\+\_\+init()}{signal\_sha512\_digest\_init()}}
{\footnotesize\ttfamily int signal\+\_\+sha512\+\_\+digest\+\_\+init (\begin{DoxyParamCaption}\item[{\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$}]{context,  }\item[{void $\ast$$\ast$}]{digest\+\_\+context }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_a2bcbac70ef918b59787135fc6e7aa553}\label{signal__protocol__internal_8h_a2bcbac70ef918b59787135fc6e7aa553}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!signal\+\_\+sha512\+\_\+digest\+\_\+update@{signal\+\_\+sha512\+\_\+digest\+\_\+update}}
\index{signal\+\_\+sha512\+\_\+digest\+\_\+update@{signal\+\_\+sha512\+\_\+digest\+\_\+update}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{signal\+\_\+sha512\+\_\+digest\+\_\+update()}{signal\_sha512\_digest\_update()}}
{\footnotesize\ttfamily int signal\+\_\+sha512\+\_\+digest\+\_\+update (\begin{DoxyParamCaption}\item[{\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$}]{context,  }\item[{void $\ast$}]{digest\+\_\+context,  }\item[{const \hyperlink{uthash_8h_aba7bc1797add20fe3efdf37ced1182c5}{uint8\+\_\+t} $\ast$}]{data,  }\item[{size\+\_\+t}]{data\+\_\+len }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_a28dbdbecfb152389dfbb0a48025af64a}\label{signal__protocol__internal_8h_a28dbdbecfb152389dfbb0a48025af64a}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!signal\+\_\+type\+\_\+init@{signal\+\_\+type\+\_\+init}}
\index{signal\+\_\+type\+\_\+init@{signal\+\_\+type\+\_\+init}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{signal\+\_\+type\+\_\+init()}{signal\_type\_init()}}
{\footnotesize\ttfamily void signal\+\_\+type\+\_\+init (\begin{DoxyParamCaption}\item[{\hyperlink{structsignal__type__base}{signal\+\_\+type\+\_\+base} $\ast$}]{instance,  }\item[{void($\ast$)(\hyperlink{structsignal__type__base}{signal\+\_\+type\+\_\+base} $\ast$instance)}]{destroy\+\_\+func }\end{DoxyParamCaption})}

\mbox{\Hypertarget{signal__protocol__internal_8h_a39f4b744f1fe51eebf7c2c252c4e3cd5}\label{signal__protocol__internal_8h_a39f4b744f1fe51eebf7c2c252c4e3cd5}} 
\index{signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}!signal\+\_\+unlock@{signal\+\_\+unlock}}
\index{signal\+\_\+unlock@{signal\+\_\+unlock}!signal\+\_\+protocol\+\_\+internal.\+h@{signal\+\_\+protocol\+\_\+internal.\+h}}
\subsubsection{\texorpdfstring{signal\+\_\+unlock()}{signal\_unlock()}}
{\footnotesize\ttfamily void signal\+\_\+unlock (\begin{DoxyParamCaption}\item[{\hyperlink{structsignal__context}{signal\+\_\+context} $\ast$}]{context }\end{DoxyParamCaption})}

