\doxysubsection{sumset.\+h File Reference}
\label{sumset_8h}\index{sumset.h@{sumset.h}}


The \mbox{\hyperlink{structrs__signature}{rs\+\_\+signature}} class implementation of a file signature.  


Include dependency graph for sumset.\+h\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{sumset_8h__incl}
\end{center}
\end{figure}
This graph shows which files directly or indirectly include this file\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{sumset_8h__dep__incl}
\end{center}
\end{figure}
\doxysubsubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{structrs__block__sig}{rs\+\_\+block\+\_\+sig}}
\begin{DoxyCompactList}\small\item\em Signature of a single block. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structrs__signature}{rs\+\_\+signature}}
\begin{DoxyCompactList}\small\item\em Signature of a whole file. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \mbox{\hyperlink{sumset_8h_a3949d54634a29c2e1527a5ff48fbebfa}{rs\+\_\+sig\+\_\+args\+\_\+check}}(magic,  block\+\_\+len,  strong\+\_\+len)
\begin{DoxyCompactList}\small\item\em Assert that \mbox{\hyperlink{librsync_8h_a3c4c3fcea2814610109536f3ae029c5e}{rs\+\_\+sig\+\_\+args()}} args for \mbox{\hyperlink{sumset_8h_a51855f18220429c42d9243a9e17c5498}{rs\+\_\+signature\+\_\+init()}} are valid. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{sumset_8h_afb7830fd2d4deff03b72ceab3936f19e}{rs\+\_\+signature\+\_\+check}}(sig)
\begin{DoxyCompactList}\small\item\em Assert that a signature is valid. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef struct \mbox{\hyperlink{structrs__block__sig}{rs\+\_\+block\+\_\+sig}} \mbox{\hyperlink{sumset_8h_afae2c65649949b883263dd30ac161853}{rs\+\_\+block\+\_\+sig\+\_\+t}}
\begin{DoxyCompactList}\small\item\em Signature of a single block. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{librsync_8h_a7feb858ceba3b8f3cf048d49be108253}{rs\+\_\+result}} \mbox{\hyperlink{sumset_8h_a51855f18220429c42d9243a9e17c5498}{rs\+\_\+signature\+\_\+init}} (\mbox{\hyperlink{librsync_8h_afb2a9cb505daeb8e519d06686f5caabf}{rs\+\_\+signature\+\_\+t}} $\ast$sig, \mbox{\hyperlink{librsync_8h_ab6abafd1db0a3947bb3c076507f4f7c2}{rs\+\_\+magic\+\_\+number}} magic, size\+\_\+t block\+\_\+len, size\+\_\+t strong\+\_\+len, rs\+\_\+long\+\_\+t sig\+\_\+fsize)
\begin{DoxyCompactList}\small\item\em Initialize an \mbox{\hyperlink{structrs__signature}{rs\+\_\+signature}} instance. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{sumset_8h_add31221c3651a00de1665b839bdb1e19}{rs\+\_\+signature\+\_\+done}} (\mbox{\hyperlink{librsync_8h_afb2a9cb505daeb8e519d06686f5caabf}{rs\+\_\+signature\+\_\+t}} $\ast$sig)
\begin{DoxyCompactList}\small\item\em Destroy an \mbox{\hyperlink{structrs__signature}{rs\+\_\+signature}} instance. \end{DoxyCompactList}\item 
\mbox{\hyperlink{sumset_8h_afae2c65649949b883263dd30ac161853}{rs\+\_\+block\+\_\+sig\+\_\+t}} $\ast$ \mbox{\hyperlink{sumset_8h_a95cd93448053a006e74f201c442f9b32}{rs\+\_\+signature\+\_\+add\+\_\+block}} (\mbox{\hyperlink{librsync_8h_afb2a9cb505daeb8e519d06686f5caabf}{rs\+\_\+signature\+\_\+t}} $\ast$sig, rs\+\_\+weak\+\_\+sum\+\_\+t weak\+\_\+sum, rs\+\_\+strong\+\_\+sum\+\_\+t $\ast$strong\+\_\+sum)
\begin{DoxyCompactList}\small\item\em Add a block to an \mbox{\hyperlink{structrs__signature}{rs\+\_\+signature}} instance. \end{DoxyCompactList}\item 
rs\+\_\+long\+\_\+t \mbox{\hyperlink{sumset_8h_a6e83fb1697e2326f39fc3ec3c6a0c6ee}{rs\+\_\+signature\+\_\+find\+\_\+match}} (\mbox{\hyperlink{librsync_8h_afb2a9cb505daeb8e519d06686f5caabf}{rs\+\_\+signature\+\_\+t}} $\ast$sig, rs\+\_\+weak\+\_\+sum\+\_\+t weak\+\_\+sum, void const $\ast$buf, size\+\_\+t len)
\begin{DoxyCompactList}\small\item\em Find a matching block offset in a signature. \end{DoxyCompactList}\item 
static \mbox{\hyperlink{checksum_8h_a523b170a7d10ae0b00117c2761abaf8d}{weaksum\+\_\+kind\+\_\+t}} \mbox{\hyperlink{sumset_8h_ae72598d4e3ca0ce67f46a3818707c3e5}{rs\+\_\+signature\+\_\+weaksum\+\_\+kind}} (\mbox{\hyperlink{librsync_8h_afb2a9cb505daeb8e519d06686f5caabf}{rs\+\_\+signature\+\_\+t}} const $\ast$sig)
\begin{DoxyCompactList}\small\item\em Get the weaksum kind for a signature. \end{DoxyCompactList}\item 
static \mbox{\hyperlink{checksum_8h_a358cb59b26ba2585bc2094b4da2a547d}{strongsum\+\_\+kind\+\_\+t}} \mbox{\hyperlink{sumset_8h_abe86a822aaee69a13ca160a89c20ffda}{rs\+\_\+signature\+\_\+strongsum\+\_\+kind}} (\mbox{\hyperlink{librsync_8h_afb2a9cb505daeb8e519d06686f5caabf}{rs\+\_\+signature\+\_\+t}} const $\ast$sig)
\begin{DoxyCompactList}\small\item\em Get the strongsum kind for a signature. \end{DoxyCompactList}\item 
static rs\+\_\+weak\+\_\+sum\+\_\+t \mbox{\hyperlink{sumset_8h_a14a14da39166a770021ba9e7a7ffec05}{rs\+\_\+signature\+\_\+calc\+\_\+weak\+\_\+sum}} (\mbox{\hyperlink{librsync_8h_afb2a9cb505daeb8e519d06686f5caabf}{rs\+\_\+signature\+\_\+t}} const $\ast$sig, void const $\ast$buf, size\+\_\+t len)
\begin{DoxyCompactList}\small\item\em Calculate the weak sum of a buffer. \end{DoxyCompactList}\item 
static void \mbox{\hyperlink{sumset_8h_a33a74e6404f8b7315febb4470c20d6c3}{rs\+\_\+signature\+\_\+calc\+\_\+strong\+\_\+sum}} (\mbox{\hyperlink{librsync_8h_afb2a9cb505daeb8e519d06686f5caabf}{rs\+\_\+signature\+\_\+t}} const $\ast$sig, void const $\ast$buf, size\+\_\+t len, rs\+\_\+strong\+\_\+sum\+\_\+t $\ast$sum)
\begin{DoxyCompactList}\small\item\em Calculate the strong sum of a buffer. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsubsection{Detailed Description}
The \mbox{\hyperlink{structrs__signature}{rs\+\_\+signature}} class implementation of a file signature. 



Definition in file \mbox{\hyperlink{sumset_8h_source}{sumset.\+h}}.



\doxysubsubsection{Macro Definition Documentation}
\mbox{\label{sumset_8h_a3949d54634a29c2e1527a5ff48fbebfa}} 
\index{sumset.h@{sumset.h}!rs\_sig\_args\_check@{rs\_sig\_args\_check}}
\index{rs\_sig\_args\_check@{rs\_sig\_args\_check}!sumset.h@{sumset.h}}
\doxyparagraph{\texorpdfstring{rs\_sig\_args\_check}{rs\_sig\_args\_check}}
{\footnotesize\ttfamily \#define rs\+\_\+sig\+\_\+args\+\_\+check(\begin{DoxyParamCaption}\item[{}]{magic,  }\item[{}]{block\+\_\+len,  }\item[{}]{strong\+\_\+len }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{    \textcolor{keywordflow}{do} \{\(\backslash\)}
\DoxyCodeLine{    assert(((magic) \& \string~0xff) == (RS\_MD4\_SIG\_MAGIC \& \string~0xff));\(\backslash\)}
\DoxyCodeLine{    assert(((magic) \& 0xf0) == 0x30 || ((magic) \& 0xf0) == 0x40);\(\backslash\)}
\DoxyCodeLine{    assert((((magic) \& 0x0f) == 0x06 \&\&\(\backslash\)}
\DoxyCodeLine{            (\textcolor{keywordtype}{int})(strong\_len) <= RS\_MD4\_SUM\_LENGTH) ||\(\backslash\)}
\DoxyCodeLine{           (((magic) \& 0x0f) == 0x07 \&\&\(\backslash\)}
\DoxyCodeLine{            (\textcolor{keywordtype}{int})(strong\_len) <= RS\_BLAKE2\_SUM\_LENGTH));\(\backslash\)}
\DoxyCodeLine{    assert(0 < (block\_len));\(\backslash\)}
\DoxyCodeLine{    assert(0 < (strong\_len) \&\& (strong\_len) <= RS\_MAX\_STRONG\_SUM\_LENGTH);\(\backslash\)}
\DoxyCodeLine{\} \textcolor{keywordflow}{while} (0)}

\end{DoxyCode}


Assert that \mbox{\hyperlink{librsync_8h_a3c4c3fcea2814610109536f3ae029c5e}{rs\+\_\+sig\+\_\+args()}} args for \mbox{\hyperlink{sumset_8h_a51855f18220429c42d9243a9e17c5498}{rs\+\_\+signature\+\_\+init()}} are valid. 

We don\textquotesingle{}t use a static inline function here so that assert failure output points at where \mbox{\hyperlink{sumset_8h_a3949d54634a29c2e1527a5ff48fbebfa}{rs\+\_\+sig\+\_\+args\+\_\+check()}} was called from. 

Definition at line \mbox{\hyperlink{sumset_8h_source_l00092}{92}} of file \mbox{\hyperlink{sumset_8h_source}{sumset.\+h}}.

\mbox{\label{sumset_8h_afb7830fd2d4deff03b72ceab3936f19e}} 
\index{sumset.h@{sumset.h}!rs\_signature\_check@{rs\_signature\_check}}
\index{rs\_signature\_check@{rs\_signature\_check}!sumset.h@{sumset.h}}
\doxyparagraph{\texorpdfstring{rs\_signature\_check}{rs\_signature\_check}}
{\footnotesize\ttfamily \#define rs\+\_\+signature\+\_\+check(\begin{DoxyParamCaption}\item[{}]{sig }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{    \textcolor{keywordflow}{do} \{\(\backslash\)}
\DoxyCodeLine{    rs\_sig\_args\_check((sig)-\/>magic, (sig)-\/>block\_len, (sig)-\/>strong\_sum\_len);\(\backslash\)}
\DoxyCodeLine{    assert(0 <= (sig)-\/>count \&\& (sig)-\/>count <= (sig)-\/>size);\(\backslash\)}
\DoxyCodeLine{    assert(!(sig)-\/>hashtable || (sig)-\/>hashtable-\/>count <= (sig)-\/>count);\(\backslash\)}
\DoxyCodeLine{\} \textcolor{keywordflow}{while} (0)}

\end{DoxyCode}


Assert that a signature is valid. 

We don\textquotesingle{}t use a static inline function here so that assert failure output points at where \mbox{\hyperlink{sumset_8h_afb7830fd2d4deff03b72ceab3936f19e}{rs\+\_\+signature\+\_\+check()}} was called from. 

Definition at line \mbox{\hyperlink{sumset_8h_source_l00107}{107}} of file \mbox{\hyperlink{sumset_8h_source}{sumset.\+h}}.



\doxysubsubsection{Typedef Documentation}
\mbox{\label{sumset_8h_afae2c65649949b883263dd30ac161853}} 
\index{sumset.h@{sumset.h}!rs\_block\_sig\_t@{rs\_block\_sig\_t}}
\index{rs\_block\_sig\_t@{rs\_block\_sig\_t}!sumset.h@{sumset.h}}
\doxyparagraph{\texorpdfstring{rs\_block\_sig\_t}{rs\_block\_sig\_t}}
{\footnotesize\ttfamily typedef struct \mbox{\hyperlink{structrs__block__sig}{rs\+\_\+block\+\_\+sig}} \mbox{\hyperlink{sumset_8h_afae2c65649949b883263dd30ac161853}{rs\+\_\+block\+\_\+sig\+\_\+t}}}



Signature of a single block. 



\doxysubsubsection{Function Documentation}
\mbox{\label{sumset_8h_a51855f18220429c42d9243a9e17c5498}} 
\index{sumset.h@{sumset.h}!rs\_signature\_init@{rs\_signature\_init}}
\index{rs\_signature\_init@{rs\_signature\_init}!sumset.h@{sumset.h}}
\doxyparagraph{\texorpdfstring{rs\_signature\_init()}{rs\_signature\_init()}}
{\footnotesize\ttfamily \mbox{\hyperlink{librsync_8h_a7feb858ceba3b8f3cf048d49be108253}{rs\+\_\+result}} rs\+\_\+signature\+\_\+init (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{librsync_8h_afb2a9cb505daeb8e519d06686f5caabf}{rs\+\_\+signature\+\_\+t}} $\ast$}]{sig,  }\item[{\mbox{\hyperlink{librsync_8h_ab6abafd1db0a3947bb3c076507f4f7c2}{rs\+\_\+magic\+\_\+number}}}]{magic,  }\item[{size\+\_\+t}]{block\+\_\+len,  }\item[{size\+\_\+t}]{strong\+\_\+len,  }\item[{rs\+\_\+long\+\_\+t}]{sig\+\_\+fsize }\end{DoxyParamCaption})}



Initialize an \mbox{\hyperlink{structrs__signature}{rs\+\_\+signature}} instance. 


\begin{DoxyParams}{Parameters}
{\em $\ast$sig} & the signature to initialize.\\
\hline
{\em magic} & -\/ the magic type to use (0 for \char`\"{}recommended\char`\"{}).\\
\hline
{\em block\+\_\+len} & -\/ the block length to use (0 for \char`\"{}recommended\char`\"{}).\\
\hline
{\em strong\+\_\+len} & -\/ the strongsum length to use (0 for \char`\"{}maximum\char`\"{}, -\/1 for \char`\"{}minimum\char`\"{}). Must be \texorpdfstring{$<$}{<}= the max strongsum size for the strongsum type indicated by the magic value.\\
\hline
{\em sig\+\_\+fsize} & -\/ the signature file size (-\/1 for \char`\"{}unknown\char`\"{}). Used to preallocate required storage. \\
\hline
\end{DoxyParams}


Definition at line \mbox{\hyperlink{sumset_8c_source_l00183}{183}} of file \mbox{\hyperlink{sumset_8c_source}{sumset.\+c}}.

\mbox{\label{sumset_8h_add31221c3651a00de1665b839bdb1e19}} 
\index{sumset.h@{sumset.h}!rs\_signature\_done@{rs\_signature\_done}}
\index{rs\_signature\_done@{rs\_signature\_done}!sumset.h@{sumset.h}}
\doxyparagraph{\texorpdfstring{rs\_signature\_done()}{rs\_signature\_done()}}
{\footnotesize\ttfamily void rs\+\_\+signature\+\_\+done (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{librsync_8h_afb2a9cb505daeb8e519d06686f5caabf}{rs\+\_\+signature\+\_\+t}} $\ast$}]{sig }\end{DoxyParamCaption})}



Destroy an \mbox{\hyperlink{structrs__signature}{rs\+\_\+signature}} instance. 



Definition at line \mbox{\hyperlink{sumset_8c_source_l00215}{215}} of file \mbox{\hyperlink{sumset_8c_source}{sumset.\+c}}.

\mbox{\label{sumset_8h_a95cd93448053a006e74f201c442f9b32}} 
\index{sumset.h@{sumset.h}!rs\_signature\_add\_block@{rs\_signature\_add\_block}}
\index{rs\_signature\_add\_block@{rs\_signature\_add\_block}!sumset.h@{sumset.h}}
\doxyparagraph{\texorpdfstring{rs\_signature\_add\_block()}{rs\_signature\_add\_block()}}
{\footnotesize\ttfamily \mbox{\hyperlink{sumset_8h_afae2c65649949b883263dd30ac161853}{rs\+\_\+block\+\_\+sig\+\_\+t}} $\ast$ rs\+\_\+signature\+\_\+add\+\_\+block (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{librsync_8h_afb2a9cb505daeb8e519d06686f5caabf}{rs\+\_\+signature\+\_\+t}} $\ast$}]{sig,  }\item[{rs\+\_\+weak\+\_\+sum\+\_\+t}]{weak\+\_\+sum,  }\item[{rs\+\_\+strong\+\_\+sum\+\_\+t $\ast$}]{strong\+\_\+sum }\end{DoxyParamCaption})}



Add a block to an \mbox{\hyperlink{structrs__signature}{rs\+\_\+signature}} instance. 



Definition at line \mbox{\hyperlink{sumset_8c_source_l00222}{222}} of file \mbox{\hyperlink{sumset_8c_source}{sumset.\+c}}.

\mbox{\label{sumset_8h_a6e83fb1697e2326f39fc3ec3c6a0c6ee}} 
\index{sumset.h@{sumset.h}!rs\_signature\_find\_match@{rs\_signature\_find\_match}}
\index{rs\_signature\_find\_match@{rs\_signature\_find\_match}!sumset.h@{sumset.h}}
\doxyparagraph{\texorpdfstring{rs\_signature\_find\_match()}{rs\_signature\_find\_match()}}
{\footnotesize\ttfamily rs\+\_\+long\+\_\+t rs\+\_\+signature\+\_\+find\+\_\+match (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{librsync_8h_afb2a9cb505daeb8e519d06686f5caabf}{rs\+\_\+signature\+\_\+t}} $\ast$}]{sig,  }\item[{rs\+\_\+weak\+\_\+sum\+\_\+t}]{weak\+\_\+sum,  }\item[{void const $\ast$}]{buf,  }\item[{size\+\_\+t}]{len }\end{DoxyParamCaption})}



Find a matching block offset in a signature. 



Definition at line \mbox{\hyperlink{sumset_8c_source_l00242}{242}} of file \mbox{\hyperlink{sumset_8c_source}{sumset.\+c}}.

\mbox{\label{sumset_8h_ae72598d4e3ca0ce67f46a3818707c3e5}} 
\index{sumset.h@{sumset.h}!rs\_signature\_weaksum\_kind@{rs\_signature\_weaksum\_kind}}
\index{rs\_signature\_weaksum\_kind@{rs\_signature\_weaksum\_kind}!sumset.h@{sumset.h}}
\doxyparagraph{\texorpdfstring{rs\_signature\_weaksum\_kind()}{rs\_signature\_weaksum\_kind()}}
{\footnotesize\ttfamily static \mbox{\hyperlink{checksum_8h_a523b170a7d10ae0b00117c2761abaf8d}{weaksum\+\_\+kind\+\_\+t}} rs\+\_\+signature\+\_\+weaksum\+\_\+kind (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{librsync_8h_afb2a9cb505daeb8e519d06686f5caabf}{rs\+\_\+signature\+\_\+t}} const $\ast$}]{sig }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Get the weaksum kind for a signature. 



Definition at line \mbox{\hyperlink{sumset_8h_source_l00114}{114}} of file \mbox{\hyperlink{sumset_8h_source}{sumset.\+h}}.

\mbox{\label{sumset_8h_abe86a822aaee69a13ca160a89c20ffda}} 
\index{sumset.h@{sumset.h}!rs\_signature\_strongsum\_kind@{rs\_signature\_strongsum\_kind}}
\index{rs\_signature\_strongsum\_kind@{rs\_signature\_strongsum\_kind}!sumset.h@{sumset.h}}
\doxyparagraph{\texorpdfstring{rs\_signature\_strongsum\_kind()}{rs\_signature\_strongsum\_kind()}}
{\footnotesize\ttfamily static \mbox{\hyperlink{checksum_8h_a358cb59b26ba2585bc2094b4da2a547d}{strongsum\+\_\+kind\+\_\+t}} rs\+\_\+signature\+\_\+strongsum\+\_\+kind (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{librsync_8h_afb2a9cb505daeb8e519d06686f5caabf}{rs\+\_\+signature\+\_\+t}} const $\ast$}]{sig }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Get the strongsum kind for a signature. 



Definition at line \mbox{\hyperlink{sumset_8h_source_l00121}{121}} of file \mbox{\hyperlink{sumset_8h_source}{sumset.\+h}}.

\mbox{\label{sumset_8h_a14a14da39166a770021ba9e7a7ffec05}} 
\index{sumset.h@{sumset.h}!rs\_signature\_calc\_weak\_sum@{rs\_signature\_calc\_weak\_sum}}
\index{rs\_signature\_calc\_weak\_sum@{rs\_signature\_calc\_weak\_sum}!sumset.h@{sumset.h}}
\doxyparagraph{\texorpdfstring{rs\_signature\_calc\_weak\_sum()}{rs\_signature\_calc\_weak\_sum()}}
{\footnotesize\ttfamily static rs\+\_\+weak\+\_\+sum\+\_\+t rs\+\_\+signature\+\_\+calc\+\_\+weak\+\_\+sum (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{librsync_8h_afb2a9cb505daeb8e519d06686f5caabf}{rs\+\_\+signature\+\_\+t}} const $\ast$}]{sig,  }\item[{void const $\ast$}]{buf,  }\item[{size\+\_\+t}]{len }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Calculate the weak sum of a buffer. 



Definition at line \mbox{\hyperlink{sumset_8h_source_l00128}{128}} of file \mbox{\hyperlink{sumset_8h_source}{sumset.\+h}}.

\mbox{\label{sumset_8h_a33a74e6404f8b7315febb4470c20d6c3}} 
\index{sumset.h@{sumset.h}!rs\_signature\_calc\_strong\_sum@{rs\_signature\_calc\_strong\_sum}}
\index{rs\_signature\_calc\_strong\_sum@{rs\_signature\_calc\_strong\_sum}!sumset.h@{sumset.h}}
\doxyparagraph{\texorpdfstring{rs\_signature\_calc\_strong\_sum()}{rs\_signature\_calc\_strong\_sum()}}
{\footnotesize\ttfamily static void rs\+\_\+signature\+\_\+calc\+\_\+strong\+\_\+sum (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{librsync_8h_afb2a9cb505daeb8e519d06686f5caabf}{rs\+\_\+signature\+\_\+t}} const $\ast$}]{sig,  }\item[{void const $\ast$}]{buf,  }\item[{size\+\_\+t}]{len,  }\item[{rs\+\_\+strong\+\_\+sum\+\_\+t $\ast$}]{sum }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



Calculate the strong sum of a buffer. 



Definition at line \mbox{\hyperlink{sumset_8h_source_l00136}{136}} of file \mbox{\hyperlink{sumset_8h_source}{sumset.\+h}}.

