\hypertarget{group__wickr__identity}{}\doxysection{wickr\+\_\+identity}
\label{group__wickr__identity}\index{wickr\_identity@{wickr\_identity}}
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity}}
\begin{DoxyCompactList}\small\item\em A signing identity on the Wickr system. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structwickr__identity__chain}{wickr\+\_\+identity\+\_\+chain}}
\begin{DoxyCompactList}\small\item\em Represents a root -\/$>$ node relationship as well as it\textquotesingle{}s signature status. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \mbox{\hyperlink{group__wickr__identity_ga43bd60836203349a1c745d0d29bf7706}{IDENTIFIER\+\_\+\+LEN}}~32
\item 
\#define \mbox{\hyperlink{group__wickr__identity_ga1f7bf82d81a58dc7629e8ad396894674}{MAX\+\_\+\+IDENTIFIER\+\_\+\+LEN}}~128
\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \mbox{\hyperlink{group__wickr__identity_ga78aefa3835eb13ca75c0129583b5ebfa}{wickr\+\_\+identity\+\_\+chain\+\_\+status}} \{ {\bfseries IDENTITY\+\_\+\+CHAIN\+\_\+\+STATUS\+\_\+\+UNKNOWN}
, {\bfseries IDENTITY\+\_\+\+CHAIN\+\_\+\+STATUS\+\_\+\+VALID}
, {\bfseries IDENTITY\+\_\+\+CHAIN\+\_\+\+STATUS\+\_\+\+INVALID}
 \}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$ \mbox{\hyperlink{group__wickr__identity_ga75bfef275a250a32784231e8c042913b}{wickr\+\_\+identity\+\_\+create}} (wickr\+\_\+identity\+\_\+type type, \mbox{\hyperlink{structwickr__buffer}{wickr\+\_\+buffer\+\_\+t}} $\ast$identifier, \mbox{\hyperlink{structwickr__ec__key}{wickr\+\_\+ec\+\_\+key\+\_\+t}} $\ast$sig\+\_\+key, \mbox{\hyperlink{structwickr__ecdsa__result}{wickr\+\_\+ecdsa\+\_\+result\+\_\+t}} $\ast$signature)
\item 
\mbox{\hyperlink{structwickr__ecdsa__result}{wickr\+\_\+ecdsa\+\_\+result\+\_\+t}} $\ast$ \mbox{\hyperlink{group__wickr__identity_ga32097764e57e70d85a2e1277146495c9}{wickr\+\_\+identity\+\_\+sign}} (const \mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$identity, const \mbox{\hyperlink{structwickr__crypto__engine}{wickr\+\_\+crypto\+\_\+engine\+\_\+t}} $\ast$engine, const \mbox{\hyperlink{structwickr__buffer}{wickr\+\_\+buffer\+\_\+t}} $\ast$data)
\item 
\mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$ \mbox{\hyperlink{group__wickr__identity_gac0ddb1242254ad13af3edc7f43e770a4}{wickr\+\_\+node\+\_\+identity\+\_\+gen}} (const \mbox{\hyperlink{structwickr__crypto__engine}{wickr\+\_\+crypto\+\_\+engine\+\_\+t}} $\ast$engine, const \mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$root\+\_\+identity, const \mbox{\hyperlink{structwickr__buffer}{wickr\+\_\+buffer\+\_\+t}} $\ast$identifier)
\item 
\mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$ \mbox{\hyperlink{group__wickr__identity_ga14d1fb3ddd1dbd7797eb9b628eef99fe}{wickr\+\_\+identity\+\_\+copy}} (const \mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$source)
\item 
void \mbox{\hyperlink{group__wickr__identity_ga9e4a0f3736d52836c9a9fc61794c8ddd}{wickr\+\_\+identity\+\_\+destroy}} (\mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$$\ast$identity)
\item 
\mbox{\hyperlink{structwickr__buffer}{wickr\+\_\+buffer\+\_\+t}} $\ast$ \mbox{\hyperlink{group__wickr__identity_ga79ca0713d0b90873e584379f26cbd051}{wickr\+\_\+identity\+\_\+serialize}} (const \mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$identity)
\item 
\mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$ \mbox{\hyperlink{group__wickr__identity_ga378e5b6ddabfe2c6ae7dbd5bdc43278e}{wickr\+\_\+identity\+\_\+create\+\_\+from\+\_\+buffer}} (const \mbox{\hyperlink{structwickr__buffer}{wickr\+\_\+buffer\+\_\+t}} $\ast$buffer, const \mbox{\hyperlink{structwickr__crypto__engine}{wickr\+\_\+crypto\+\_\+engine\+\_\+t}} $\ast$engine)
\item 
\mbox{\hyperlink{structwickr__fingerprint}{wickr\+\_\+fingerprint\+\_\+t}} $\ast$ \mbox{\hyperlink{group__wickr__identity_ga4d9053bf0a7ea47c599891dce21d426a}{wickr\+\_\+identity\+\_\+get\+\_\+fingerprint}} (const \mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$identity, \mbox{\hyperlink{structwickr__crypto__engine}{wickr\+\_\+crypto\+\_\+engine\+\_\+t}} engine)
\item 
\mbox{\hyperlink{structwickr__fingerprint}{wickr\+\_\+fingerprint\+\_\+t}} $\ast$ \mbox{\hyperlink{group__wickr__identity_ga8ac0f348981ec55ecbf365d6834a3c28}{wickr\+\_\+identity\+\_\+get\+\_\+bilateral\+\_\+fingerprint}} (const \mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$identity, const \mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$remote\+\_\+identity, \mbox{\hyperlink{structwickr__crypto__engine}{wickr\+\_\+crypto\+\_\+engine\+\_\+t}} engine)
\item 
\mbox{\hyperlink{structwickr__identity__chain}{wickr\+\_\+identity\+\_\+chain\+\_\+t}} $\ast$ \mbox{\hyperlink{group__wickr__identity_ga79551385194ba6b044b676ce5c7400e6}{wickr\+\_\+identity\+\_\+chain\+\_\+create}} (\mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$root, \mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$node)
\item 
\mbox{\hyperlink{structwickr__identity__chain}{wickr\+\_\+identity\+\_\+chain\+\_\+t}} $\ast$ \mbox{\hyperlink{group__wickr__identity_gac9d708d340abcd0b54d87434b71d2d9e}{wickr\+\_\+identity\+\_\+chain\+\_\+copy}} (const \mbox{\hyperlink{structwickr__identity__chain}{wickr\+\_\+identity\+\_\+chain\+\_\+t}} $\ast$source)
\item 
bool \mbox{\hyperlink{group__wickr__identity_ga3a4b103f6b03f82149a90f1b81c63456}{wickr\+\_\+identity\+\_\+chain\+\_\+validate}} (\mbox{\hyperlink{structwickr__identity__chain}{wickr\+\_\+identity\+\_\+chain\+\_\+t}} $\ast$chain, const \mbox{\hyperlink{structwickr__crypto__engine}{wickr\+\_\+crypto\+\_\+engine\+\_\+t}} $\ast$engine)
\item 
void \mbox{\hyperlink{group__wickr__identity_gadbddf6d49fddb2df103486970b3d564b}{wickr\+\_\+identity\+\_\+chain\+\_\+destroy}} (\mbox{\hyperlink{structwickr__identity__chain}{wickr\+\_\+identity\+\_\+chain\+\_\+t}} $\ast$$\ast$chain)
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}


\doxysubsection{Macro Definition Documentation}
\mbox{\Hypertarget{group__wickr__identity_ga43bd60836203349a1c745d0d29bf7706}\label{group__wickr__identity_ga43bd60836203349a1c745d0d29bf7706}} 
\index{wickr\_identity@{wickr\_identity}!IDENTIFIER\_LEN@{IDENTIFIER\_LEN}}
\index{IDENTIFIER\_LEN@{IDENTIFIER\_LEN}!wickr\_identity@{wickr\_identity}}
\doxysubsubsection{\texorpdfstring{IDENTIFIER\_LEN}{IDENTIFIER\_LEN}}
{\footnotesize\ttfamily \#define IDENTIFIER\+\_\+\+LEN~32}

By default identifiers are 32 bytes on the Wickr system, however this library will allow for any identifier with length less than MAX\+\_\+\+IDENTIFIER\+\_\+\+LEN \mbox{\Hypertarget{group__wickr__identity_ga1f7bf82d81a58dc7629e8ad396894674}\label{group__wickr__identity_ga1f7bf82d81a58dc7629e8ad396894674}} 
\index{wickr\_identity@{wickr\_identity}!MAX\_IDENTIFIER\_LEN@{MAX\_IDENTIFIER\_LEN}}
\index{MAX\_IDENTIFIER\_LEN@{MAX\_IDENTIFIER\_LEN}!wickr\_identity@{wickr\_identity}}
\doxysubsubsection{\texorpdfstring{MAX\_IDENTIFIER\_LEN}{MAX\_IDENTIFIER\_LEN}}
{\footnotesize\ttfamily \#define MAX\+\_\+\+IDENTIFIER\+\_\+\+LEN~128}

Maximum length for an identifier 

\doxysubsection{Enumeration Type Documentation}
\mbox{\Hypertarget{group__wickr__identity_ga78aefa3835eb13ca75c0129583b5ebfa}\label{group__wickr__identity_ga78aefa3835eb13ca75c0129583b5ebfa}} 
\index{wickr\_identity@{wickr\_identity}!wickr\_identity\_chain\_status@{wickr\_identity\_chain\_status}}
\index{wickr\_identity\_chain\_status@{wickr\_identity\_chain\_status}!wickr\_identity@{wickr\_identity}}
\doxysubsubsection{\texorpdfstring{wickr\_identity\_chain\_status}{wickr\_identity\_chain\_status}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{group__wickr__identity_ga78aefa3835eb13ca75c0129583b5ebfa}{wickr\+\_\+identity\+\_\+chain\+\_\+status}}}

Identity chain status

UNKNOWN -\/ Signature validation has never been attempted on the chain VALID -\/ Signature validation has been attempted and has passed on the chain INVALID -\/ Signature validation has been attempted and has failed on chain 

\doxysubsection{Function Documentation}
\mbox{\Hypertarget{group__wickr__identity_gac9d708d340abcd0b54d87434b71d2d9e}\label{group__wickr__identity_gac9d708d340abcd0b54d87434b71d2d9e}} 
\index{wickr\_identity@{wickr\_identity}!wickr\_identity\_chain\_copy@{wickr\_identity\_chain\_copy}}
\index{wickr\_identity\_chain\_copy@{wickr\_identity\_chain\_copy}!wickr\_identity@{wickr\_identity}}
\doxysubsubsection{\texorpdfstring{wickr\_identity\_chain\_copy()}{wickr\_identity\_chain\_copy()}}
{\footnotesize\ttfamily \mbox{\hyperlink{structwickr__identity__chain}{wickr\+\_\+identity\+\_\+chain\+\_\+t}}$\ast$ wickr\+\_\+identity\+\_\+chain\+\_\+copy (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structwickr__identity__chain}{wickr\+\_\+identity\+\_\+chain\+\_\+t}} $\ast$}]{source }\end{DoxyParamCaption})}

Copy an identity chain


\begin{DoxyParams}{Parameters}
{\em source} & the identity chain to copy \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a newly allocated identity chain holding a deep copy of the properties of \textquotesingle{}source\textquotesingle{} 
\end{DoxyReturn}
\mbox{\Hypertarget{group__wickr__identity_ga79551385194ba6b044b676ce5c7400e6}\label{group__wickr__identity_ga79551385194ba6b044b676ce5c7400e6}} 
\index{wickr\_identity@{wickr\_identity}!wickr\_identity\_chain\_create@{wickr\_identity\_chain\_create}}
\index{wickr\_identity\_chain\_create@{wickr\_identity\_chain\_create}!wickr\_identity@{wickr\_identity}}
\doxysubsubsection{\texorpdfstring{wickr\_identity\_chain\_create()}{wickr\_identity\_chain\_create()}}
{\footnotesize\ttfamily \mbox{\hyperlink{structwickr__identity__chain}{wickr\+\_\+identity\+\_\+chain\+\_\+t}}$\ast$ wickr\+\_\+identity\+\_\+chain\+\_\+create (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$}]{root,  }\item[{\mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$}]{node }\end{DoxyParamCaption})}

Create an identity chain from components


\begin{DoxyParams}{Parameters}
{\em root} & see \textquotesingle{}\mbox{\hyperlink{structwickr__identity__chain}{wickr\+\_\+identity\+\_\+chain}}\textquotesingle{} property documentation \\
\hline
{\em node} & see \textquotesingle{}\mbox{\hyperlink{structwickr__identity__chain}{wickr\+\_\+identity\+\_\+chain}}\textquotesingle{} property documentation \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a newly allocated identity chain that takes ownership of the passed inputs 
\end{DoxyReturn}
\mbox{\Hypertarget{group__wickr__identity_gadbddf6d49fddb2df103486970b3d564b}\label{group__wickr__identity_gadbddf6d49fddb2df103486970b3d564b}} 
\index{wickr\_identity@{wickr\_identity}!wickr\_identity\_chain\_destroy@{wickr\_identity\_chain\_destroy}}
\index{wickr\_identity\_chain\_destroy@{wickr\_identity\_chain\_destroy}!wickr\_identity@{wickr\_identity}}
\doxysubsubsection{\texorpdfstring{wickr\_identity\_chain\_destroy()}{wickr\_identity\_chain\_destroy()}}
{\footnotesize\ttfamily void wickr\+\_\+identity\+\_\+chain\+\_\+destroy (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structwickr__identity__chain}{wickr\+\_\+identity\+\_\+chain\+\_\+t}} $\ast$$\ast$}]{chain }\end{DoxyParamCaption})}

Destroy an identity chain


\begin{DoxyParams}{Parameters}
{\em chain} & a pointer to the identity chain to destroy. All properties of \textquotesingle{}$\ast$chain\textquotesingle{} will also be destroyed \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__wickr__identity_ga3a4b103f6b03f82149a90f1b81c63456}\label{group__wickr__identity_ga3a4b103f6b03f82149a90f1b81c63456}} 
\index{wickr\_identity@{wickr\_identity}!wickr\_identity\_chain\_validate@{wickr\_identity\_chain\_validate}}
\index{wickr\_identity\_chain\_validate@{wickr\_identity\_chain\_validate}!wickr\_identity@{wickr\_identity}}
\doxysubsubsection{\texorpdfstring{wickr\_identity\_chain\_validate()}{wickr\_identity\_chain\_validate()}}
{\footnotesize\ttfamily bool wickr\+\_\+identity\+\_\+chain\+\_\+validate (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structwickr__identity__chain}{wickr\+\_\+identity\+\_\+chain\+\_\+t}} $\ast$}]{chain,  }\item[{const \mbox{\hyperlink{structwickr__crypto__engine}{wickr\+\_\+crypto\+\_\+engine\+\_\+t}} $\ast$}]{engine }\end{DoxyParamCaption})}

Verify the validity of an identity chain


\begin{DoxyParams}{Parameters}
{\em chain} & the chain to validate \\
\hline
{\em engine} & a crypto engine that supports verifying signatures \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if the \textquotesingle{}signature\textquotesingle{} of the \textquotesingle{}node\textquotesingle{} property of \textquotesingle{}chain\textquotesingle{} can be properly verified with the public \textquotesingle{}sig\+\_\+key\textquotesingle{} from the \textquotesingle{}root\textquotesingle{} property of \textquotesingle{}chain\textquotesingle{} 
\end{DoxyReturn}
\mbox{\Hypertarget{group__wickr__identity_ga14d1fb3ddd1dbd7797eb9b628eef99fe}\label{group__wickr__identity_ga14d1fb3ddd1dbd7797eb9b628eef99fe}} 
\index{wickr\_identity@{wickr\_identity}!wickr\_identity\_copy@{wickr\_identity\_copy}}
\index{wickr\_identity\_copy@{wickr\_identity\_copy}!wickr\_identity@{wickr\_identity}}
\doxysubsubsection{\texorpdfstring{wickr\_identity\_copy()}{wickr\_identity\_copy()}}
{\footnotesize\ttfamily \mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}}$\ast$ wickr\+\_\+identity\+\_\+copy (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$}]{source }\end{DoxyParamCaption})}

Copy an identity


\begin{DoxyParams}{Parameters}
{\em source} & the identity to copy \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a newly allocated identity holding a deep copy of the properties of \textquotesingle{}source\textquotesingle{} 
\end{DoxyReturn}
\mbox{\Hypertarget{group__wickr__identity_ga75bfef275a250a32784231e8c042913b}\label{group__wickr__identity_ga75bfef275a250a32784231e8c042913b}} 
\index{wickr\_identity@{wickr\_identity}!wickr\_identity\_create@{wickr\_identity\_create}}
\index{wickr\_identity\_create@{wickr\_identity\_create}!wickr\_identity@{wickr\_identity}}
\doxysubsubsection{\texorpdfstring{wickr\_identity\_create()}{wickr\_identity\_create()}}
{\footnotesize\ttfamily \mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}}$\ast$ wickr\+\_\+identity\+\_\+create (\begin{DoxyParamCaption}\item[{wickr\+\_\+identity\+\_\+type}]{type,  }\item[{\mbox{\hyperlink{structwickr__buffer}{wickr\+\_\+buffer\+\_\+t}} $\ast$}]{identifier,  }\item[{\mbox{\hyperlink{structwickr__ec__key}{wickr\+\_\+ec\+\_\+key\+\_\+t}} $\ast$}]{sig\+\_\+key,  }\item[{\mbox{\hyperlink{structwickr__ecdsa__result}{wickr\+\_\+ecdsa\+\_\+result\+\_\+t}} $\ast$}]{signature }\end{DoxyParamCaption})}

Create an identity from components


\begin{DoxyParams}{Parameters}
{\em type} & see \textquotesingle{}\mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity}}\textquotesingle{} property documentation \\
\hline
{\em identifier} & see \textquotesingle{}\mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity}}\textquotesingle{} property documentation \\
\hline
{\em sig\+\_\+key} & see \textquotesingle{}\mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity}}\textquotesingle{} property documentation \\
\hline
{\em signature} & see \textquotesingle{}\mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity}}\textquotesingle{} property documentation \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a newly allocated identity that takes ownership of the passed inputs 
\end{DoxyReturn}
\mbox{\Hypertarget{group__wickr__identity_ga378e5b6ddabfe2c6ae7dbd5bdc43278e}\label{group__wickr__identity_ga378e5b6ddabfe2c6ae7dbd5bdc43278e}} 
\index{wickr\_identity@{wickr\_identity}!wickr\_identity\_create\_from\_buffer@{wickr\_identity\_create\_from\_buffer}}
\index{wickr\_identity\_create\_from\_buffer@{wickr\_identity\_create\_from\_buffer}!wickr\_identity@{wickr\_identity}}
\doxysubsubsection{\texorpdfstring{wickr\_identity\_create\_from\_buffer()}{wickr\_identity\_create\_from\_buffer()}}
{\footnotesize\ttfamily \mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}}$\ast$ wickr\+\_\+identity\+\_\+create\+\_\+from\+\_\+buffer (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structwickr__buffer}{wickr\+\_\+buffer\+\_\+t}} $\ast$}]{buffer,  }\item[{const \mbox{\hyperlink{structwickr__crypto__engine}{wickr\+\_\+crypto\+\_\+engine\+\_\+t}} $\ast$}]{engine }\end{DoxyParamCaption})}

Create an identity from a buffer that was created with \textquotesingle{}wickr\+\_\+identity\+\_\+serialize\textquotesingle{}


\begin{DoxyParams}{Parameters}
{\em buffer} & the buffer that contains a serialized representation of an identity \\
\hline
{\em engine} & the crypto engine to use to import the key components of the identity \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
deserialized identity or null if the deserialization fails 
\end{DoxyReturn}
\mbox{\Hypertarget{group__wickr__identity_ga9e4a0f3736d52836c9a9fc61794c8ddd}\label{group__wickr__identity_ga9e4a0f3736d52836c9a9fc61794c8ddd}} 
\index{wickr\_identity@{wickr\_identity}!wickr\_identity\_destroy@{wickr\_identity\_destroy}}
\index{wickr\_identity\_destroy@{wickr\_identity\_destroy}!wickr\_identity@{wickr\_identity}}
\doxysubsubsection{\texorpdfstring{wickr\_identity\_destroy()}{wickr\_identity\_destroy()}}
{\footnotesize\ttfamily void wickr\+\_\+identity\+\_\+destroy (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$$\ast$}]{identity }\end{DoxyParamCaption})}

Destroy an identity


\begin{DoxyParams}{Parameters}
{\em identity} & a pointer to the identity to destroy. All properties of \textquotesingle{}$\ast$identity\textquotesingle{} will also be destroyed \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{group__wickr__identity_ga8ac0f348981ec55ecbf365d6834a3c28}\label{group__wickr__identity_ga8ac0f348981ec55ecbf365d6834a3c28}} 
\index{wickr\_identity@{wickr\_identity}!wickr\_identity\_get\_bilateral\_fingerprint@{wickr\_identity\_get\_bilateral\_fingerprint}}
\index{wickr\_identity\_get\_bilateral\_fingerprint@{wickr\_identity\_get\_bilateral\_fingerprint}!wickr\_identity@{wickr\_identity}}
\doxysubsubsection{\texorpdfstring{wickr\_identity\_get\_bilateral\_fingerprint()}{wickr\_identity\_get\_bilateral\_fingerprint()}}
{\footnotesize\ttfamily \mbox{\hyperlink{structwickr__fingerprint}{wickr\+\_\+fingerprint\+\_\+t}}$\ast$ wickr\+\_\+identity\+\_\+get\+\_\+bilateral\+\_\+fingerprint (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$}]{identity,  }\item[{const \mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$}]{remote\+\_\+identity,  }\item[{\mbox{\hyperlink{structwickr__crypto__engine}{wickr\+\_\+crypto\+\_\+engine\+\_\+t}}}]{engine }\end{DoxyParamCaption})}

A fingerprint that is unique between identity and remote\+\_\+identity


\begin{DoxyParams}{Parameters}
{\em identity} & the identity to get a bilateral fingerprint of \\
\hline
{\em remote\+\_\+identity} & the other party included in the fingerprint \\
\hline
{\em engine} & engine the crypto engine to use for underlying hash operations \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a bilateral fingerprint of (identity,remote\+\_\+identity) or (remote\+\_\+identity,identity) calculated using SHA512(fingerprint(identity) $\vert$$\vert$ fingerprint(remote\+\_\+identity)). 
\end{DoxyReturn}
\mbox{\Hypertarget{group__wickr__identity_ga4d9053bf0a7ea47c599891dce21d426a}\label{group__wickr__identity_ga4d9053bf0a7ea47c599891dce21d426a}} 
\index{wickr\_identity@{wickr\_identity}!wickr\_identity\_get\_fingerprint@{wickr\_identity\_get\_fingerprint}}
\index{wickr\_identity\_get\_fingerprint@{wickr\_identity\_get\_fingerprint}!wickr\_identity@{wickr\_identity}}
\doxysubsubsection{\texorpdfstring{wickr\_identity\_get\_fingerprint()}{wickr\_identity\_get\_fingerprint()}}
{\footnotesize\ttfamily \mbox{\hyperlink{structwickr__fingerprint}{wickr\+\_\+fingerprint\+\_\+t}}$\ast$ wickr\+\_\+identity\+\_\+get\+\_\+fingerprint (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$}]{identity,  }\item[{\mbox{\hyperlink{structwickr__crypto__engine}{wickr\+\_\+crypto\+\_\+engine\+\_\+t}}}]{engine }\end{DoxyParamCaption})}

A unique fingerprint representing the identifier and public signing key of this identity. See \textquotesingle{}\mbox{\hyperlink{fingerprint_8h_source}{fingerprint.\+h}}\textquotesingle{}


\begin{DoxyParams}{Parameters}
{\em identity} & the identity to get a unique fingerprint of \\
\hline
{\em engine} & the crypto engine to use for underlying hash operations \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a unique fingerprint currently calculated as SHA512(identifier $\vert$$\vert$ sig\+\_\+pub-\/$>$pub\+\_\+data) 
\end{DoxyReturn}
\mbox{\Hypertarget{group__wickr__identity_ga79ca0713d0b90873e584379f26cbd051}\label{group__wickr__identity_ga79ca0713d0b90873e584379f26cbd051}} 
\index{wickr\_identity@{wickr\_identity}!wickr\_identity\_serialize@{wickr\_identity\_serialize}}
\index{wickr\_identity\_serialize@{wickr\_identity\_serialize}!wickr\_identity@{wickr\_identity}}
\doxysubsubsection{\texorpdfstring{wickr\_identity\_serialize()}{wickr\_identity\_serialize()}}
{\footnotesize\ttfamily \mbox{\hyperlink{structwickr__buffer}{wickr\+\_\+buffer\+\_\+t}}$\ast$ wickr\+\_\+identity\+\_\+serialize (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$}]{identity }\end{DoxyParamCaption})}

Serialize an identity to bytes


\begin{DoxyParams}{Parameters}
{\em identity} & the identity to serialize \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a buffer containing a serialized representation of \textquotesingle{}identity\textquotesingle{} or null if serialization fails 
\end{DoxyReturn}
\mbox{\Hypertarget{group__wickr__identity_ga32097764e57e70d85a2e1277146495c9}\label{group__wickr__identity_ga32097764e57e70d85a2e1277146495c9}} 
\index{wickr\_identity@{wickr\_identity}!wickr\_identity\_sign@{wickr\_identity\_sign}}
\index{wickr\_identity\_sign@{wickr\_identity\_sign}!wickr\_identity@{wickr\_identity}}
\doxysubsubsection{\texorpdfstring{wickr\_identity\_sign()}{wickr\_identity\_sign()}}
{\footnotesize\ttfamily \mbox{\hyperlink{structwickr__ecdsa__result}{wickr\+\_\+ecdsa\+\_\+result\+\_\+t}}$\ast$ wickr\+\_\+identity\+\_\+sign (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$}]{identity,  }\item[{const \mbox{\hyperlink{structwickr__crypto__engine}{wickr\+\_\+crypto\+\_\+engine\+\_\+t}} $\ast$}]{engine,  }\item[{const \mbox{\hyperlink{structwickr__buffer}{wickr\+\_\+buffer\+\_\+t}} $\ast$}]{data }\end{DoxyParamCaption})}

Sign provided data using an identity signing key


\begin{DoxyParams}{Parameters}
{\em identity} & the identity to use for signing \\
\hline
{\em engine} & a crypto engine supporting signatures using the identity\textquotesingle{}s signing key \\
\hline
{\em data} & buffer to sign \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
an ECDSA result containing a signature of \textquotesingle{}data\textquotesingle{} using the \textquotesingle{}sig\+\_\+key\textquotesingle{} property of \textquotesingle{}identity\textquotesingle{}. NULL if the provided identity does not contain a private signing key 
\end{DoxyReturn}
\mbox{\Hypertarget{group__wickr__identity_gac0ddb1242254ad13af3edc7f43e770a4}\label{group__wickr__identity_gac0ddb1242254ad13af3edc7f43e770a4}} 
\index{wickr\_identity@{wickr\_identity}!wickr\_node\_identity\_gen@{wickr\_node\_identity\_gen}}
\index{wickr\_node\_identity\_gen@{wickr\_node\_identity\_gen}!wickr\_identity@{wickr\_identity}}
\doxysubsubsection{\texorpdfstring{wickr\_node\_identity\_gen()}{wickr\_node\_identity\_gen()}}
{\footnotesize\ttfamily \mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}}$\ast$ wickr\+\_\+node\+\_\+identity\+\_\+gen (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structwickr__crypto__engine}{wickr\+\_\+crypto\+\_\+engine\+\_\+t}} $\ast$}]{engine,  }\item[{const \mbox{\hyperlink{structwickr__identity}{wickr\+\_\+identity\+\_\+t}} $\ast$}]{root\+\_\+identity,  }\item[{const \mbox{\hyperlink{structwickr__buffer}{wickr\+\_\+buffer\+\_\+t}} $\ast$}]{identifier }\end{DoxyParamCaption})}

Generate a new random node identity, given a root identity


\begin{DoxyParams}{Parameters}
{\em engine} & a crypto engine supporting random Elliptic Curve Key generation \\
\hline
{\em root\+\_\+identity} & a root identity that supports generating signatures with a private signing key \\
\hline
{\em identifier} & to use for new node identity, if NULL a random identifier of {\ttfamily IDENTIFIER\+\_\+\+LEN} bytes will be used \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a newly allocated node identity signing by root identity \textquotesingle{}root\+\_\+identity\textquotesingle{}. The \textquotesingle{}identifier\textquotesingle{} property of the node is generated at random to be \textquotesingle{}IDENTIFIER\+\_\+\+LEN\textquotesingle{} in length (currently 32 bytes). NULL if root\+\_\+identity is not a root, or it does not contain a private signing key 
\end{DoxyReturn}
