\doxysection{rtrlib/bgpsec/bgpsec\+\_\+utils\+\_\+private.h File Reference}
\hypertarget{bgpsec__utils__private_8h}{}\label{bgpsec__utils__private_8h}\index{rtrlib/bgpsec/bgpsec\_utils\_private.h@{rtrlib/bgpsec/bgpsec\_utils\_private.h}}
{\ttfamily \#include "{}rtrlib/bgpsec/bgpsec.\+h"{}}\newline
{\ttfamily \#include "{}rtrlib/lib/alloc\+\_\+utils\+\_\+private.\+h"{}}\newline
{\ttfamily \#include "{}rtrlib/lib/log\+\_\+private.\+h"{}}\newline
{\ttfamily \#include "{}rtrlib/rtrlib\+\_\+export\+\_\+private.\+h"{}}\newline
{\ttfamily \#include $<$arpa/inet.\+h$>$}\newline
{\ttfamily \#include $<$openssl/x509.\+h$>$}\newline
{\ttfamily \#include $<$string.\+h$>$}\newline
\doxysubsubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \mbox{\hyperlink{bgpsec__utils__private_8h_a76719ebd5027af2767e993710e19e05a}{BGPSEC\+\_\+\+DBG}}(fmt, ...)~\mbox{\hyperlink{log__private_8h_abb57f299264865eb02379019cfe4df0c}{lrtr\+\_\+dbg}}("{}BGPSEC\+: "{} fmt, \#\#\+\_\+\+\_\+\+VA\+\_\+\+ARGS\+\_\+\+\_\+)
\item 
\#define \mbox{\hyperlink{bgpsec__utils__private_8h_a02472725013492b417a6f1a93a170fce}{BGPSEC\+\_\+\+DBG1}}(a)~\mbox{\hyperlink{log__private_8h_abb57f299264865eb02379019cfe4df0c}{lrtr\+\_\+dbg}}("{}BGPSEC\+: "{} a)
\item 
\#define \mbox{\hyperlink{bgpsec__utils__private_8h_a25ecadbd11533628e83a391aff478e12}{SECURE\+\_\+\+PATH\+\_\+\+SEG\+\_\+\+SIZE}}~6
\begin{DoxyCompactList}\small\item\em The length of a \doxylink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg} without the next pointer\+: pcount(1) + \doxylink{rtr__pdus_8h_aa2585d779da0ab21273a8d92de9a0ebe}{flags(1)} + \doxylink{rtr__pdus_8h_af54a4e57359d5c0dc5935878531a9e58}{asn(4)} \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{bgpsec__utils__private_8h_a18e7ef7f46a071247b01447796731ba7}{SKI\+\_\+\+STR\+\_\+\+LEN}}~61
\begin{DoxyCompactList}\small\item\em The string length of a SKI, including spaces. \end{DoxyCompactList}\item 
\#define \mbox{\hyperlink{bgpsec__utils__private_8h_a9e29e16ef5df623c3f1d9f828cebed9f}{PRIVATE\+\_\+\+KEY\+\_\+\+LENGTH}}~121L
\begin{DoxyCompactList}\small\item\em The total length of a private key in bytes. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \mbox{\hyperlink{bgpsec__utils__private_8h_ac93d27f6095940798150fd9cc61e8db3}{align\+\_\+type}} \{ \mbox{\hyperlink{bgpsec__utils__private_8h_ac93d27f6095940798150fd9cc61e8db3a7721bbfbdf88038c07a667176e9ab22c}{VALIDATION}}
, \mbox{\hyperlink{bgpsec__utils__private_8h_ac93d27f6095940798150fd9cc61e8db3a34bc8689edea431068fb64025f6e5d0c}{SIGNING}}
 \}
\begin{DoxyCompactList}\small\item\em Control flag, validation and signing procedures for aligning data differs. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
struct stream \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{bgpsec__utils__private_8h_a6b685c5cfe8237f8aac2c723f86ae24a}{init\+\_\+stream}} (uint16\+\_\+t size)
\item 
struct stream \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{bgpsec__utils__private_8h_a99edb0f324129b558fc1dcc6194aeaf7}{copy\+\_\+stream}} (struct stream \texorpdfstring{$\ast$}{*}s)
\item 
void \mbox{\hyperlink{bgpsec__utils__private_8h_a92276a87f1d7b8002362e528bbaafee6}{free\+\_\+stream}} (struct stream \texorpdfstring{$\ast$}{*}s)
\item 
void \mbox{\hyperlink{bgpsec__utils__private_8h_aff96997757c81776d4d9330fe5a92c0d}{write\+\_\+stream}} (struct stream \texorpdfstring{$\ast$}{*}s, void \texorpdfstring{$\ast$}{*}data, uint16\+\_\+t \mbox{\hyperlink{rtr__pdus_8h_a96bbf959016e4411c9e6b9812a8be60a}{len}})
\item 
uint8\+\_\+t \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{bgpsec__utils__private_8h_a844b6b7c0cc5f45d7d51beb079ab182c}{get\+\_\+stream\+\_\+start}} (struct stream \texorpdfstring{$\ast$}{*}s)
\item 
size\+\_\+t \mbox{\hyperlink{bgpsec__utils__private_8h_ae6a90b39cfa02546e1581c1f0a4acf2d}{get\+\_\+stream\+\_\+size}} (struct stream \texorpdfstring{$\ast$}{*}s)
\item 
uint8\+\_\+t \mbox{\hyperlink{bgpsec__utils__private_8h_aa759f1b9cda97b8b677406420453a3a6}{read\+\_\+stream}} (struct stream \texorpdfstring{$\ast$}{*}s)
\item 
void \mbox{\hyperlink{bgpsec__utils__private_8h_ae80e62a25bca98bed7107b53377226db}{read\+\_\+n\+\_\+bytes\+\_\+stream}} (uint8\+\_\+t \texorpdfstring{$\ast$}{*}buff, struct stream \texorpdfstring{$\ast$}{*}s, uint16\+\_\+t \mbox{\hyperlink{rtr__pdus_8h_a96bbf959016e4411c9e6b9812a8be60a}{len}})
\item 
void \mbox{\hyperlink{bgpsec__utils__private_8h_a238bc2b424cb156213f21a337afedca0}{read\+\_\+stream\+\_\+at}} (uint8\+\_\+t \texorpdfstring{$\ast$}{*}buff, struct stream \texorpdfstring{$\ast$}{*}s, uint16\+\_\+t start, uint16\+\_\+t \mbox{\hyperlink{rtr__pdus_8h_a96bbf959016e4411c9e6b9812a8be60a}{len}})
\item 
size\+\_\+t \mbox{\hyperlink{bgpsec__utils__private_8h_ab5e5c3e57d6379bf573648fea34c05c5}{req\+\_\+stream\+\_\+size}} (const struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}data, enum \mbox{\hyperlink{bgpsec__utils__private_8h_ac93d27f6095940798150fd9cc61e8db3}{align\+\_\+type}} \mbox{\hyperlink{rtr__pdus_8h_a1d127017fb298b889f4ba24752d08b8e}{type}})
\item 
int \mbox{\hyperlink{bgpsec__utils__private_8h_afdae4ebd000267e60e29baf47574bd8f}{get\+\_\+sig\+\_\+seg\+\_\+size}} (const struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}sig\+\_\+segs, enum \mbox{\hyperlink{bgpsec__utils__private_8h_ac93d27f6095940798150fd9cc61e8db3}{align\+\_\+type}} \mbox{\hyperlink{rtr__pdus_8h_a1d127017fb298b889f4ba24752d08b8e}{type}})
\item 
int \mbox{\hyperlink{bgpsec__utils__private_8h_a5d2757737865dbaa06ee1a46aa2a3260}{check\+\_\+router\+\_\+keys}} (const struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}sig\+\_\+segs, struct \mbox{\hyperlink{structspki__table}{spki\+\_\+table}} \texorpdfstring{$\ast$}{*}table)
\item 
int \mbox{\hyperlink{bgpsec__utils__private_8h_afb3f2a91ccd096d6ef08177579daa792}{bgpsec\+\_\+segment\+\_\+to\+\_\+str}} (char \texorpdfstring{$\ast$}{*}buffer, struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}sig\+\_\+seg, struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*}sec\+\_\+path)
\item 
int \mbox{\hyperlink{bgpsec__utils__private_8h_ac6317dc0c414dccee0d1aa9061080cbf}{byte\+\_\+sequence\+\_\+to\+\_\+str}} (char \texorpdfstring{$\ast$}{*}buffer, uint8\+\_\+t \texorpdfstring{$\ast$}{*}bytes, unsigned int bytes\+\_\+len, unsigned int tabstops)
\item 
void \mbox{\hyperlink{bgpsec__utils__private_8h_ab55c3562ce712c145c2ca1173e67f8df}{ski\+\_\+to\+\_\+char}} (char \texorpdfstring{$\ast$}{*}ski\+\_\+str, uint8\+\_\+t \texorpdfstring{$\ast$}{*}\mbox{\hyperlink{rtr__pdus_8h_a12038882b8c1e8109c0e4b1ea6f8cb5c}{ski}})
\item 
int \mbox{\hyperlink{bgpsec__utils__private_8h_a2f4b251ebabba57068f95e5fd3743ca7}{align\+\_\+byte\+\_\+sequence}} (const struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}data, struct stream \texorpdfstring{$\ast$}{*}s, enum \mbox{\hyperlink{bgpsec__utils__private_8h_ac93d27f6095940798150fd9cc61e8db3}{align\+\_\+type}} \mbox{\hyperlink{rtr__pdus_8h_a1d127017fb298b889f4ba24752d08b8e}{type}})
\item 
int \mbox{\hyperlink{bgpsec__utils__private_8h_aa0aaca9cac4a1f48846d9ce2a59eeda0}{hash\+\_\+byte\+\_\+sequence}} (uint8\+\_\+t \texorpdfstring{$\ast$}{*}bytes, size\+\_\+t bytes\+\_\+len, uint8\+\_\+t alg\+\_\+suite\+\_\+id, unsigned char \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}result\+\_\+buffer)
\item 
int \mbox{\hyperlink{bgpsec__utils__private_8h_a88e92a2a39b3f497a17f3c555c9fc801}{validate\+\_\+signature}} (const unsigned char \texorpdfstring{$\ast$}{*}hash, const struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}sig, struct \mbox{\hyperlink{structspki__record}{spki\+\_\+record}} \texorpdfstring{$\ast$}{*}record)
\item 
int \mbox{\hyperlink{bgpsec__utils__private_8h_ada1184ccfb82bafb76006a79a6409142}{load\+\_\+private\+\_\+key}} (EC\+\_\+\+KEY \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}priv\+\_\+key, uint8\+\_\+t \texorpdfstring{$\ast$}{*}bytes\+\_\+key)
\item 
int \mbox{\hyperlink{bgpsec__utils__private_8h_ab26250c7b541e8e5b8b2253688d8396e}{load\+\_\+public\+\_\+key}} (EC\+\_\+\+KEY \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}pub\+\_\+key, uint8\+\_\+t \texorpdfstring{$\ast$}{*}\mbox{\hyperlink{rtr__pdus_8h_a4b4ec32d54b57f9de44ec9bb55838d5c}{spki}})
\item 
int \mbox{\hyperlink{bgpsec__utils__private_8h_a749a96362572194bd3933522f2c7e05d}{sign\+\_\+byte\+\_\+sequence}} (uint8\+\_\+t \texorpdfstring{$\ast$}{*}hash\+\_\+result, EC\+\_\+\+KEY \texorpdfstring{$\ast$}{*}priv\+\_\+key, uint8\+\_\+t alg, struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}new\+\_\+signature)
\item 
int \mbox{\hyperlink{bgpsec__utils__private_8h_a70f44e6e07e994617df730c819d44349}{ski\+\_\+is\+\_\+empty}} (uint8\+\_\+t \texorpdfstring{$\ast$}{*}\mbox{\hyperlink{rtr__pdus_8h_a12038882b8c1e8109c0e4b1ea6f8cb5c}{ski}})
\end{DoxyCompactItemize}


\doxysubsection{Macro Definition Documentation}
\Hypertarget{bgpsec__utils__private_8h_a76719ebd5027af2767e993710e19e05a}\label{bgpsec__utils__private_8h_a76719ebd5027af2767e993710e19e05a} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!BGPSEC\_DBG@{BGPSEC\_DBG}}
\index{BGPSEC\_DBG@{BGPSEC\_DBG}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{BGPSEC\_DBG}{BGPSEC\_DBG}}
{\footnotesize\ttfamily \#define BGPSEC\+\_\+\+DBG(\begin{DoxyParamCaption}\item[{}]{fmt,  }\item[{}]{... }\end{DoxyParamCaption})~\mbox{\hyperlink{log__private_8h_abb57f299264865eb02379019cfe4df0c}{lrtr\+\_\+dbg}}("{}BGPSEC\+: "{} fmt, \#\#\+\_\+\+\_\+\+VA\+\_\+\+ARGS\+\_\+\+\_\+)}

\Hypertarget{bgpsec__utils__private_8h_a02472725013492b417a6f1a93a170fce}\label{bgpsec__utils__private_8h_a02472725013492b417a6f1a93a170fce} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!BGPSEC\_DBG1@{BGPSEC\_DBG1}}
\index{BGPSEC\_DBG1@{BGPSEC\_DBG1}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{BGPSEC\_DBG1}{BGPSEC\_DBG1}}
{\footnotesize\ttfamily \#define BGPSEC\+\_\+\+DBG1(\begin{DoxyParamCaption}\item[{}]{a }\end{DoxyParamCaption})~\mbox{\hyperlink{log__private_8h_abb57f299264865eb02379019cfe4df0c}{lrtr\+\_\+dbg}}("{}BGPSEC\+: "{} a)}

\Hypertarget{bgpsec__utils__private_8h_a9e29e16ef5df623c3f1d9f828cebed9f}\label{bgpsec__utils__private_8h_a9e29e16ef5df623c3f1d9f828cebed9f} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!PRIVATE\_KEY\_LENGTH@{PRIVATE\_KEY\_LENGTH}}
\index{PRIVATE\_KEY\_LENGTH@{PRIVATE\_KEY\_LENGTH}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{PRIVATE\_KEY\_LENGTH}{PRIVATE\_KEY\_LENGTH}}
{\footnotesize\ttfamily \#define PRIVATE\+\_\+\+KEY\+\_\+\+LENGTH~121L}



The total length of a private key in bytes. 

\Hypertarget{bgpsec__utils__private_8h_a25ecadbd11533628e83a391aff478e12}\label{bgpsec__utils__private_8h_a25ecadbd11533628e83a391aff478e12} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!SECURE\_PATH\_SEG\_SIZE@{SECURE\_PATH\_SEG\_SIZE}}
\index{SECURE\_PATH\_SEG\_SIZE@{SECURE\_PATH\_SEG\_SIZE}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{SECURE\_PATH\_SEG\_SIZE}{SECURE\_PATH\_SEG\_SIZE}}
{\footnotesize\ttfamily \#define SECURE\+\_\+\+PATH\+\_\+\+SEG\+\_\+\+SIZE~6}



The length of a \doxylink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg} without the next pointer\+: pcount(1) + \doxylink{rtr__pdus_8h_aa2585d779da0ab21273a8d92de9a0ebe}{flags(1)} + \doxylink{rtr__pdus_8h_af54a4e57359d5c0dc5935878531a9e58}{asn(4)} 

\Hypertarget{bgpsec__utils__private_8h_a18e7ef7f46a071247b01447796731ba7}\label{bgpsec__utils__private_8h_a18e7ef7f46a071247b01447796731ba7} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!SKI\_STR\_LEN@{SKI\_STR\_LEN}}
\index{SKI\_STR\_LEN@{SKI\_STR\_LEN}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{SKI\_STR\_LEN}{SKI\_STR\_LEN}}
{\footnotesize\ttfamily \#define SKI\+\_\+\+STR\+\_\+\+LEN~61}



The string length of a SKI, including spaces. 



\doxysubsection{Enumeration Type Documentation}
\Hypertarget{bgpsec__utils__private_8h_ac93d27f6095940798150fd9cc61e8db3}\label{bgpsec__utils__private_8h_ac93d27f6095940798150fd9cc61e8db3} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!align\_type@{align\_type}}
\index{align\_type@{align\_type}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{align\_type}{align\_type}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{bgpsec__utils__private_8h_ac93d27f6095940798150fd9cc61e8db3}{align\+\_\+type}}}



Control flag, validation and signing procedures for aligning data differs. 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{VALIDATION@{VALIDATION}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!VALIDATION@{VALIDATION}}}\Hypertarget{bgpsec__utils__private_8h_ac93d27f6095940798150fd9cc61e8db3a7721bbfbdf88038c07a667176e9ab22c}\label{bgpsec__utils__private_8h_ac93d27f6095940798150fd9cc61e8db3a7721bbfbdf88038c07a667176e9ab22c} 
VALIDATION&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{SIGNING@{SIGNING}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!SIGNING@{SIGNING}}}\Hypertarget{bgpsec__utils__private_8h_ac93d27f6095940798150fd9cc61e8db3a34bc8689edea431068fb64025f6e5d0c}\label{bgpsec__utils__private_8h_ac93d27f6095940798150fd9cc61e8db3a34bc8689edea431068fb64025f6e5d0c} 
SIGNING&\\
\hline

\end{DoxyEnumFields}


\doxysubsection{Function Documentation}
\Hypertarget{bgpsec__utils__private_8h_a2f4b251ebabba57068f95e5fd3743ca7}\label{bgpsec__utils__private_8h_a2f4b251ebabba57068f95e5fd3743ca7} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!align\_byte\_sequence@{align\_byte\_sequence}}
\index{align\_byte\_sequence@{align\_byte\_sequence}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{align\_byte\_sequence()}{align\_byte\_sequence()}}
{\footnotesize\ttfamily int align\+\_\+byte\+\_\+sequence (\begin{DoxyParamCaption}\item[{const struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}}]{data,  }\item[{struct stream \texorpdfstring{$\ast$}{*}}]{s,  }\item[{enum \mbox{\hyperlink{bgpsec__utils__private_8h_ac93d27f6095940798150fd9cc61e8db3}{align\+\_\+type}}}]{type }\end{DoxyParamCaption})}

\Hypertarget{bgpsec__utils__private_8h_afb3f2a91ccd096d6ef08177579daa792}\label{bgpsec__utils__private_8h_afb3f2a91ccd096d6ef08177579daa792} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!bgpsec\_segment\_to\_str@{bgpsec\_segment\_to\_str}}
\index{bgpsec\_segment\_to\_str@{bgpsec\_segment\_to\_str}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{bgpsec\_segment\_to\_str()}{bgpsec\_segment\_to\_str()}}
{\footnotesize\ttfamily int bgpsec\+\_\+segment\+\_\+to\+\_\+str (\begin{DoxyParamCaption}\item[{char \texorpdfstring{$\ast$}{*}}]{buffer,  }\item[{struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}}]{sig\+\_\+seg,  }\item[{struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*}}]{sec\+\_\+path }\end{DoxyParamCaption})}

\Hypertarget{bgpsec__utils__private_8h_ac6317dc0c414dccee0d1aa9061080cbf}\label{bgpsec__utils__private_8h_ac6317dc0c414dccee0d1aa9061080cbf} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!byte\_sequence\_to\_str@{byte\_sequence\_to\_str}}
\index{byte\_sequence\_to\_str@{byte\_sequence\_to\_str}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{byte\_sequence\_to\_str()}{byte\_sequence\_to\_str()}}
{\footnotesize\ttfamily int byte\+\_\+sequence\+\_\+to\+\_\+str (\begin{DoxyParamCaption}\item[{char \texorpdfstring{$\ast$}{*}}]{buffer,  }\item[{uint8\+\_\+t \texorpdfstring{$\ast$}{*}}]{bytes,  }\item[{unsigned int}]{bytes\+\_\+len,  }\item[{unsigned int}]{tabstops }\end{DoxyParamCaption})}

\Hypertarget{bgpsec__utils__private_8h_a5d2757737865dbaa06ee1a46aa2a3260}\label{bgpsec__utils__private_8h_a5d2757737865dbaa06ee1a46aa2a3260} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!check\_router\_keys@{check\_router\_keys}}
\index{check\_router\_keys@{check\_router\_keys}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{check\_router\_keys()}{check\_router\_keys()}}
{\footnotesize\ttfamily int check\+\_\+router\+\_\+keys (\begin{DoxyParamCaption}\item[{const struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}}]{sig\+\_\+segs,  }\item[{struct \mbox{\hyperlink{structspki__table}{spki\+\_\+table}} \texorpdfstring{$\ast$}{*}}]{table }\end{DoxyParamCaption})}

\Hypertarget{bgpsec__utils__private_8h_a99edb0f324129b558fc1dcc6194aeaf7}\label{bgpsec__utils__private_8h_a99edb0f324129b558fc1dcc6194aeaf7} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!copy\_stream@{copy\_stream}}
\index{copy\_stream@{copy\_stream}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{copy\_stream()}{copy\_stream()}}
{\footnotesize\ttfamily struct stream \texorpdfstring{$\ast$}{*} copy\+\_\+stream (\begin{DoxyParamCaption}\item[{struct stream \texorpdfstring{$\ast$}{*}}]{s }\end{DoxyParamCaption})}

\Hypertarget{bgpsec__utils__private_8h_a92276a87f1d7b8002362e528bbaafee6}\label{bgpsec__utils__private_8h_a92276a87f1d7b8002362e528bbaafee6} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!free\_stream@{free\_stream}}
\index{free\_stream@{free\_stream}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{free\_stream()}{free\_stream()}}
{\footnotesize\ttfamily void free\+\_\+stream (\begin{DoxyParamCaption}\item[{struct stream \texorpdfstring{$\ast$}{*}}]{s }\end{DoxyParamCaption})}

\Hypertarget{bgpsec__utils__private_8h_afdae4ebd000267e60e29baf47574bd8f}\label{bgpsec__utils__private_8h_afdae4ebd000267e60e29baf47574bd8f} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!get\_sig\_seg\_size@{get\_sig\_seg\_size}}
\index{get\_sig\_seg\_size@{get\_sig\_seg\_size}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{get\_sig\_seg\_size()}{get\_sig\_seg\_size()}}
{\footnotesize\ttfamily int get\+\_\+sig\+\_\+seg\+\_\+size (\begin{DoxyParamCaption}\item[{const struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}}]{sig\+\_\+segs,  }\item[{enum \mbox{\hyperlink{bgpsec__utils__private_8h_ac93d27f6095940798150fd9cc61e8db3}{align\+\_\+type}}}]{type }\end{DoxyParamCaption})}

\Hypertarget{bgpsec__utils__private_8h_ae6a90b39cfa02546e1581c1f0a4acf2d}\label{bgpsec__utils__private_8h_ae6a90b39cfa02546e1581c1f0a4acf2d} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!get\_stream\_size@{get\_stream\_size}}
\index{get\_stream\_size@{get\_stream\_size}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{get\_stream\_size()}{get\_stream\_size()}}
{\footnotesize\ttfamily size\+\_\+t get\+\_\+stream\+\_\+size (\begin{DoxyParamCaption}\item[{struct stream \texorpdfstring{$\ast$}{*}}]{s }\end{DoxyParamCaption})}

\Hypertarget{bgpsec__utils__private_8h_a844b6b7c0cc5f45d7d51beb079ab182c}\label{bgpsec__utils__private_8h_a844b6b7c0cc5f45d7d51beb079ab182c} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!get\_stream\_start@{get\_stream\_start}}
\index{get\_stream\_start@{get\_stream\_start}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{get\_stream\_start()}{get\_stream\_start()}}
{\footnotesize\ttfamily uint8\+\_\+t \texorpdfstring{$\ast$}{*} get\+\_\+stream\+\_\+start (\begin{DoxyParamCaption}\item[{struct stream \texorpdfstring{$\ast$}{*}}]{s }\end{DoxyParamCaption})}

\Hypertarget{bgpsec__utils__private_8h_aa0aaca9cac4a1f48846d9ce2a59eeda0}\label{bgpsec__utils__private_8h_aa0aaca9cac4a1f48846d9ce2a59eeda0} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!hash\_byte\_sequence@{hash\_byte\_sequence}}
\index{hash\_byte\_sequence@{hash\_byte\_sequence}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{hash\_byte\_sequence()}{hash\_byte\_sequence()}}
{\footnotesize\ttfamily int hash\+\_\+byte\+\_\+sequence (\begin{DoxyParamCaption}\item[{uint8\+\_\+t \texorpdfstring{$\ast$}{*}}]{bytes,  }\item[{size\+\_\+t}]{bytes\+\_\+len,  }\item[{uint8\+\_\+t}]{alg\+\_\+suite\+\_\+id,  }\item[{unsigned char \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}}]{result\+\_\+buffer }\end{DoxyParamCaption})}

\Hypertarget{bgpsec__utils__private_8h_a6b685c5cfe8237f8aac2c723f86ae24a}\label{bgpsec__utils__private_8h_a6b685c5cfe8237f8aac2c723f86ae24a} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!init\_stream@{init\_stream}}
\index{init\_stream@{init\_stream}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{init\_stream()}{init\_stream()}}
{\footnotesize\ttfamily struct stream \texorpdfstring{$\ast$}{*} init\+\_\+stream (\begin{DoxyParamCaption}\item[{uint16\+\_\+t}]{size }\end{DoxyParamCaption})}

\Hypertarget{bgpsec__utils__private_8h_ada1184ccfb82bafb76006a79a6409142}\label{bgpsec__utils__private_8h_ada1184ccfb82bafb76006a79a6409142} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!load\_private\_key@{load\_private\_key}}
\index{load\_private\_key@{load\_private\_key}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{load\_private\_key()}{load\_private\_key()}}
{\footnotesize\ttfamily int load\+\_\+private\+\_\+key (\begin{DoxyParamCaption}\item[{EC\+\_\+\+KEY \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}}]{priv\+\_\+key,  }\item[{uint8\+\_\+t \texorpdfstring{$\ast$}{*}}]{bytes\+\_\+key }\end{DoxyParamCaption})}

\Hypertarget{bgpsec__utils__private_8h_ab26250c7b541e8e5b8b2253688d8396e}\label{bgpsec__utils__private_8h_ab26250c7b541e8e5b8b2253688d8396e} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!load\_public\_key@{load\_public\_key}}
\index{load\_public\_key@{load\_public\_key}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{load\_public\_key()}{load\_public\_key()}}
{\footnotesize\ttfamily int load\+\_\+public\+\_\+key (\begin{DoxyParamCaption}\item[{EC\+\_\+\+KEY \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}}]{pub\+\_\+key,  }\item[{uint8\+\_\+t \texorpdfstring{$\ast$}{*}}]{spki }\end{DoxyParamCaption})}

\Hypertarget{bgpsec__utils__private_8h_ae80e62a25bca98bed7107b53377226db}\label{bgpsec__utils__private_8h_ae80e62a25bca98bed7107b53377226db} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!read\_n\_bytes\_stream@{read\_n\_bytes\_stream}}
\index{read\_n\_bytes\_stream@{read\_n\_bytes\_stream}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{read\_n\_bytes\_stream()}{read\_n\_bytes\_stream()}}
{\footnotesize\ttfamily void read\+\_\+n\+\_\+bytes\+\_\+stream (\begin{DoxyParamCaption}\item[{uint8\+\_\+t \texorpdfstring{$\ast$}{*}}]{buff,  }\item[{struct stream \texorpdfstring{$\ast$}{*}}]{s,  }\item[{uint16\+\_\+t}]{len }\end{DoxyParamCaption})}

\Hypertarget{bgpsec__utils__private_8h_aa759f1b9cda97b8b677406420453a3a6}\label{bgpsec__utils__private_8h_aa759f1b9cda97b8b677406420453a3a6} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!read\_stream@{read\_stream}}
\index{read\_stream@{read\_stream}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{read\_stream()}{read\_stream()}}
{\footnotesize\ttfamily uint8\+\_\+t read\+\_\+stream (\begin{DoxyParamCaption}\item[{struct stream \texorpdfstring{$\ast$}{*}}]{s }\end{DoxyParamCaption})}

\Hypertarget{bgpsec__utils__private_8h_a238bc2b424cb156213f21a337afedca0}\label{bgpsec__utils__private_8h_a238bc2b424cb156213f21a337afedca0} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!read\_stream\_at@{read\_stream\_at}}
\index{read\_stream\_at@{read\_stream\_at}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{read\_stream\_at()}{read\_stream\_at()}}
{\footnotesize\ttfamily void read\+\_\+stream\+\_\+at (\begin{DoxyParamCaption}\item[{uint8\+\_\+t \texorpdfstring{$\ast$}{*}}]{buff,  }\item[{struct stream \texorpdfstring{$\ast$}{*}}]{s,  }\item[{uint16\+\_\+t}]{start,  }\item[{uint16\+\_\+t}]{len }\end{DoxyParamCaption})}

\Hypertarget{bgpsec__utils__private_8h_ab5e5c3e57d6379bf573648fea34c05c5}\label{bgpsec__utils__private_8h_ab5e5c3e57d6379bf573648fea34c05c5} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!req\_stream\_size@{req\_stream\_size}}
\index{req\_stream\_size@{req\_stream\_size}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{req\_stream\_size()}{req\_stream\_size()}}
{\footnotesize\ttfamily size\+\_\+t req\+\_\+stream\+\_\+size (\begin{DoxyParamCaption}\item[{const struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}}]{data,  }\item[{enum \mbox{\hyperlink{bgpsec__utils__private_8h_ac93d27f6095940798150fd9cc61e8db3}{align\+\_\+type}}}]{type }\end{DoxyParamCaption})}

\Hypertarget{bgpsec__utils__private_8h_a749a96362572194bd3933522f2c7e05d}\label{bgpsec__utils__private_8h_a749a96362572194bd3933522f2c7e05d} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!sign\_byte\_sequence@{sign\_byte\_sequence}}
\index{sign\_byte\_sequence@{sign\_byte\_sequence}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{sign\_byte\_sequence()}{sign\_byte\_sequence()}}
{\footnotesize\ttfamily int sign\+\_\+byte\+\_\+sequence (\begin{DoxyParamCaption}\item[{uint8\+\_\+t \texorpdfstring{$\ast$}{*}}]{hash\+\_\+result,  }\item[{EC\+\_\+\+KEY \texorpdfstring{$\ast$}{*}}]{priv\+\_\+key,  }\item[{uint8\+\_\+t}]{alg,  }\item[{struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}}]{new\+\_\+signature }\end{DoxyParamCaption})}

\Hypertarget{bgpsec__utils__private_8h_a70f44e6e07e994617df730c819d44349}\label{bgpsec__utils__private_8h_a70f44e6e07e994617df730c819d44349} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!ski\_is\_empty@{ski\_is\_empty}}
\index{ski\_is\_empty@{ski\_is\_empty}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{ski\_is\_empty()}{ski\_is\_empty()}}
{\footnotesize\ttfamily int ski\+\_\+is\+\_\+empty (\begin{DoxyParamCaption}\item[{uint8\+\_\+t \texorpdfstring{$\ast$}{*}}]{ski }\end{DoxyParamCaption})}

\Hypertarget{bgpsec__utils__private_8h_ab55c3562ce712c145c2ca1173e67f8df}\label{bgpsec__utils__private_8h_ab55c3562ce712c145c2ca1173e67f8df} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!ski\_to\_char@{ski\_to\_char}}
\index{ski\_to\_char@{ski\_to\_char}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{ski\_to\_char()}{ski\_to\_char()}}
{\footnotesize\ttfamily void ski\+\_\+to\+\_\+char (\begin{DoxyParamCaption}\item[{char \texorpdfstring{$\ast$}{*}}]{ski\+\_\+str,  }\item[{uint8\+\_\+t \texorpdfstring{$\ast$}{*}}]{ski }\end{DoxyParamCaption})}

\Hypertarget{bgpsec__utils__private_8h_a88e92a2a39b3f497a17f3c555c9fc801}\label{bgpsec__utils__private_8h_a88e92a2a39b3f497a17f3c555c9fc801} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!validate\_signature@{validate\_signature}}
\index{validate\_signature@{validate\_signature}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{validate\_signature()}{validate\_signature()}}
{\footnotesize\ttfamily int validate\+\_\+signature (\begin{DoxyParamCaption}\item[{const unsigned char \texorpdfstring{$\ast$}{*}}]{hash,  }\item[{const struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}}]{sig,  }\item[{struct \mbox{\hyperlink{structspki__record}{spki\+\_\+record}} \texorpdfstring{$\ast$}{*}}]{record }\end{DoxyParamCaption})}

\Hypertarget{bgpsec__utils__private_8h_aff96997757c81776d4d9330fe5a92c0d}\label{bgpsec__utils__private_8h_aff96997757c81776d4d9330fe5a92c0d} 
\index{bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}!write\_stream@{write\_stream}}
\index{write\_stream@{write\_stream}!bgpsec\_utils\_private.h@{bgpsec\_utils\_private.h}}
\doxysubsubsection{\texorpdfstring{write\_stream()}{write\_stream()}}
{\footnotesize\ttfamily void write\+\_\+stream (\begin{DoxyParamCaption}\item[{struct stream \texorpdfstring{$\ast$}{*}}]{s,  }\item[{void \texorpdfstring{$\ast$}{*}}]{data,  }\item[{uint16\+\_\+t}]{len }\end{DoxyParamCaption})}

