xrtSshReaderInit

初始化借用输入的 SSH reader;空输入允许 Data 为 NULL。

bool xrtSshReaderInit(xsshreader* pReader, xbytesview Source);
参数说明
xsshreader* pReader读取器
xbytesview SourceSource 参数
返回:初始化借用输入的 SSH reader;空输入允许 Data 为 NULL。

示例已编译验证

sshreaderinit obj;
xrtSshReaderInit(&obj, pReader, Source);

xrtSshWriterInit

初始化借用输出缓冲的 SSH writer;零容量允许 Data 为 NULL。

bool xrtSshWriterInit(xsshwriter* pWriter, void* pData, size_t iCapacity);
参数说明
xsshwriter* pWriter写入器
void* pData用户数据
size_t iCapacity容量
返回:初始化借用输出缓冲的 SSH writer;零容量允许 Data 为 NULL。

示例已编译验证

sshwriterinit obj;
xrtSshWriterInit(&obj, pWriter, iCapacity);

xrtSshReaderRemaining

返回 reader 尚未消费的字节数;无效状态返回零。

size_t xrtSshReaderRemaining(const xsshreader* pReader);
参数说明
const xsshreader* pReader读取器
返回:返回 reader 尚未消费的字节数;无效状态返回零。

示例已编译验证

/* 返回 reader 尚未消费的字节数;无效状态返回零。 */
result = xrtSshReaderRemaining(pReader);

xrtSshWriterRemaining

返回 writer 尚可写入的字节数;无效状态返回零。

size_t xrtSshWriterRemaining(const xsshwriter* pWriter);
参数说明
const xsshwriter* pWriter写入器
返回:返回 writer 尚可写入的字节数;无效状态返回零。

示例已编译验证

/* 返回 writer 尚可写入的字节数;无效状态返回零。 */
result = xrtSshWriterRemaining(pWriter);

xrtSshWriterReserve

校验 writer 并确认后续写入可一次完成,不改变 writer 状态。

xsshcode xrtSshWriterReserve( const xsshwriter* pWriter, size_t iSize );
参数说明
const xsshwriter* pWriter写入器
size_t iSize字节数
返回:校验 writer 并确认后续写入可一次完成,不改变 writer 状态。

示例已编译验证

/* 校验 writer 并确认后续写入可一次完成,不改变 writer 状态。 */
result = xrtSshWriterReserve(pWriter, iSize);

xrtSshWriterReserveInputs

校验整段输出与多个借用输入不重叠,不改变 writer 状态。

xsshcode xrtSshWriterReserveInputs( const xsshwriter* pWriter, size_t iSize, const xbytesview* pInputs, size_t iInputCount );
参数说明
const xsshwriter* pWriter写入器
size_t iSize字节数
const xbytesview* pInputsInuts 参数
size_t iInputCountInutCount 参数
返回:校验整段输出与多个借用输入不重叠,不改变 writer 状态。

示例已编译验证

/* 校验整段输出与多个借用输入不重叠,不改变 writer 状态。 */
result = xrtSshWriterReserveInputs(pWriter, iSize, pInputs, iInputCount);

xrtSshReadByte

读取一个 SSH byte,输入不足返回 XSSH_NEED_MORE。

xsshcode xrtSshReadByte(xsshreader* pReader, uint8* pValue);
参数说明
xsshreader* pReader读取器
uint8* pValue值
返回:读取一个 SSH byte,输入不足返回 XSSH_NEED_MORE。

示例已编译验证

/* 读取一个 SSH byte,输入不足返回 XSSH_NEED_MORE。 */
result = xrtSshReadByte(pReader, pValue);

xrtSshReadBool

读取一个 SSH boolean;零为 false,任意非零值为 true。

xsshcode xrtSshReadBool(xsshreader* pReader, bool* pValue);
参数说明
xsshreader* pReader读取器
bool* pValue值
返回:读取一个 SSH boolean;零为 false,任意非零值为 true。

示例已编译验证

/* 读取一个 SSH boolean;零为 false,任意非零值为 true。 */
result = xrtSshReadBool(pReader, pValue);

xrtSshReadU32

读取一个网络字节序 uint32。

xsshcode xrtSshReadU32(xsshreader* pReader, uint32* pValue);
参数说明
xsshreader* pReader读取器
uint32* pValue值
返回:读取一个网络字节序 uint32。

示例已编译验证

/* 读取一个网络字节序 uint32。 */
result = xrtSshReadU32(pReader, pValue);

xrtSshReadU64

读取一个网络字节序 uint64。

xsshcode xrtSshReadU64(xsshreader* pReader, uint64* pValue);
参数说明
xsshreader* pReader读取器
uint64* pValue值
返回:读取一个网络字节序 uint64。

示例已编译验证

/* 读取一个网络字节序 uint64。 */
result = xrtSshReadU64(pReader, pValue);

xrtSshReadString

读取 uint32 长度前缀的 SSH string,并返回借用视图。

xsshcode xrtSshReadString(xsshreader* pReader, xbytesview* pValue);
参数说明
xsshreader* pReader读取器
xbytesview* pValue值
返回:读取 uint32 长度前缀的 SSH string,并返回借用视图。

示例已编译验证

/* 读取 uint32 长度前缀的 SSH string,并返回借用视图。 */
result = xrtSshReadString(pReader, pValue);

xrtSshReadBytes

读取指定数量的原始字节,并返回借用视图。

xsshcode xrtSshReadBytes( xsshreader* pReader, size_t iSize, xbytesview* pValue );
参数说明
xsshreader* pReader读取器
size_t iSize字节数
xbytesview* pValue值
返回:读取指定数量的原始字节,并返回借用视图。

示例已编译验证

/* 读取指定数量的原始字节,并返回借用视图。 */
result = xrtSshReadBytes(pReader, iSize, pValue);

xrtSshWriteByte

写入一个 SSH byte。

xsshcode xrtSshWriteByte(xsshwriter* pWriter, uint8 iValue);
参数说明
xsshwriter* pWriter写入器
uint8 iValue增量值
返回:写入一个 SSH byte。

示例已编译验证

/* 写入一个 SSH byte。 */
result = xrtSshWriteByte(pWriter, iValue);

xrtSshWriteBool

写入规范的单字节 SSH boolean。

xsshcode xrtSshWriteBool(xsshwriter* pWriter, bool bValue);
参数说明
xsshwriter* pWriter写入器
bool bValue布尔值
返回:写入规范的单字节 SSH boolean。

示例已编译验证

/* 写入规范的单字节 SSH boolean。 */
result = xrtSshWriteBool(pWriter, bValue);

xrtSshWriteU32

以网络字节序写入 uint32。

xsshcode xrtSshWriteU32(xsshwriter* pWriter, uint32 iValue);
参数说明
xsshwriter* pWriter写入器
uint32 iValue增量值
返回:以网络字节序写入 uint32。

示例已编译验证

/* 以网络字节序写入 uint32。 */
result = xrtSshWriteU32(pWriter, iValue);

xrtSshWriteU64

以网络字节序写入 uint64。

xsshcode xrtSshWriteU64(xsshwriter* pWriter, uint64 iValue);
参数说明
xsshwriter* pWriter写入器
uint64 iValue增量值
返回:以网络字节序写入 uint64。

示例已编译验证

/* 以网络字节序写入 uint64。 */
result = xrtSshWriteU64(pWriter, iValue);

xrtSshWriteString

写入 uint32 长度前缀的 SSH string。

xsshcode xrtSshWriteString(xsshwriter* pWriter, xbytesview Value);
参数说明
xsshwriter* pWriter写入器
xbytesview Value值
返回:写入 uint32 长度前缀的 SSH string。

示例已编译验证

/* 写入 uint32 长度前缀的 SSH string。 */
result = xrtSshWriteString(pWriter, Value);

xrtSshWriteBytes

不添加长度前缀,直接写入原始字节。

xsshcode xrtSshWriteBytes(xsshwriter* pWriter, xbytesview Value);
参数说明
xsshwriter* pWriter写入器
xbytesview Value值
返回:不添加长度前缀,直接写入原始字节。

示例已编译验证

/* 不添加长度前缀,直接写入原始字节。 */
result = xrtSshWriteBytes(pWriter, Value);

xrtSshWriteNameList

校验并写入一个 SSH name-list string。

xsshcode xrtSshWriteNameList(xsshwriter* pWriter, xstrview List);
参数说明
xsshwriter* pWriter写入器
xstrview ListLst 参数
返回:校验并写入一个 SSH name-list string。

示例已编译验证

/* 校验并写入一个 SSH name-list string。 */
result = xrtSshWriteNameList(pWriter, List);

xrtSshNameValid

校验一个非空、可打印 US-ASCII 且不含逗号的 SSH 名称。

bool xrtSshNameValid(xstrview Name);
参数说明
xstrview Name名称(xstrview)
返回:校验一个非空、可打印 US-ASCII 且不含逗号的 SSH 名称。

示例已编译验证

/* 校验一个非空、可打印 US-ASCII 且不含逗号的 SSH 名称。 */
result = xrtSshNameValid(Name);

xrtSshLanguageValid

校验允许为空且不含控制字符的 ASCII language tag。

bool xrtSshLanguageValid(xstrview Language);
参数说明
xstrview LanguageLanguage 参数
返回:校验允许为空且不含控制字符的 ASCII language tag。

示例已编译验证

/* 校验允许为空且不含控制字符的 ASCII language tag。 */
result = xrtSshLanguageValid(Language);

xrtSshNameListValid

校验 SSH name-list 的非空项与可打印 US-ASCII 约束。

bool xrtSshNameListValid(xstrview List);
参数说明
xstrview ListLst 参数
返回:校验 SSH name-list 的非空项与可打印 US-ASCII 约束。

示例已编译验证

/* 校验 SSH name-list 的非空项与可打印 US-ASCII 约束。 */
result = xrtSshNameListValid(List);

xrtSshNameListContains

判断有效 name-list 是否包含一个完整名称。

bool xrtSshNameListContains(xstrview List, xstrview Name);
参数说明
xstrview ListLst 参数
xstrview Name名称(xstrview)
返回:判断有效 name-list 是否包含一个完整名称。

示例已编译验证

/* 判断有效 name-list 是否包含一个完整名称。 */
result = xrtSshNameListContains(List, Name);

xrtSshNameListHasDuplicate

判断有效 name-list 是否存在完全相同的重复项。

bool xrtSshNameListHasDuplicate(xstrview List);
参数说明
xstrview ListLst 参数
返回:判断有效 name-list 是否存在完全相同的重复项。

示例已编译验证

/* 判断有效 name-list 是否存在完全相同的重复项。 */
result = xrtSshNameListHasDuplicate(List);

xrtSshNameListFirstMatch

按 Preferred 的顺序返回 Available 中首个匹配名称的借用视图。

xsshcode xrtSshNameListFirstMatch( xstrview Preferred, xstrview Available, xstrview* pMatch );
参数说明
xstrview PreferredPreferred 参数
xstrview Available可用性位集
xstrview* pMatch出:匹配详情
返回:按 Preferred 的顺序返回 Available 中首个匹配名称的借用视图。

示例已编译验证

/* 按 Preferred 的顺序返回 Available 中首个匹配名称的借用视图。 */
result = xrtSshNameListFirstMatch(Preferred, Available, pMatch);

xrtSshReadMpint

读取规范的非负 SSH mpint,返回原始二进制补码字节视图。

xsshcode xrtSshReadMpint(xsshreader* pReader, xbytesview* pValue);
参数说明
xsshreader* pReader读取器
xbytesview* pValue值
返回:读取规范的非负 SSH mpint,返回原始二进制补码字节视图。

示例已编译验证

/* 读取规范的非负 SSH mpint,返回原始二进制补码字节视图。 */
result = xrtSshReadMpint(pReader, pValue);

xrtSshWriteMpint

将大端无符号 magnitude 规范化并写成非负 SSH mpint。

xsshcode xrtSshWriteMpint(xsshwriter* pWriter, xbytesview Magnitude);
参数说明
xsshwriter* pWriter写入器
xbytesview MagnitudeMagntude 参数
返回:将大端无符号 magnitude 规范化并写成非负 SSH mpint。

示例已编译验证

/* 将大端无符号 magnitude 规范化并写成非负 SSH mpint。 */
result = xrtSshWriteMpint(pWriter, Magnitude);

xrtSshReadSignedMpint

读取规范的有符号 SSH mpint,并报告其符号。

xsshcode xrtSshReadSignedMpint( xsshreader* pReader, xbytesview* pValue, bool* pNegative );
参数说明
xsshreader* pReader读取器
xbytesview* pValue值
bool* pNegativeNegatve 参数
返回:读取规范的有符号 SSH mpint,并报告其符号。

示例已编译验证

/* 读取规范的有符号 SSH mpint,并报告其符号。 */
result = xrtSshReadSignedMpint(pReader, pValue, pNegative);

xrtSshWriteSignedMpint

将大端 magnitude 和符号规范化并写成 SSH mpint。

xsshcode xrtSshWriteSignedMpint( xsshwriter* pWriter, xbytesview Magnitude, bool bNegative );
参数说明
xsshwriter* pWriter写入器
xbytesview MagnitudeMagntude 参数
bool bNegativebNegatve 参数
返回:将大端 magnitude 和符号规范化并写成 SSH mpint。

示例已编译验证

/* 将大端 magnitude 和符号规范化并写成 SSH mpint。 */
result = xrtSshWriteSignedMpint(pWriter, Magnitude, bNegative);

xrtSshBannerRead

从增量输入读取 SSH-2.0/SSH-1.99 identification,可跳过服务端前置行。

xsshcode xrtSshBannerRead( xstrview Data, xstrview* pBanner, size_t* pConsumed );
参数说明
xstrview Data数据内容
xstrview* pBanner横幅
size_t* pConsumedConsumed 参数
返回:从增量输入读取 SSH-2.0/SSH-1.99 identification,可跳过服务端前置行。

示例已编译验证

/* 从增量输入读取 SSH-2.0/SSH-1.99 identification,可跳过服务端前置行。 */
result = xrtSshBannerRead(Data, pBanner, pConsumed);

xrtSshBannerWrite

严格校验并写入本端 SSH-2.0 identification 与 CRLF。

xsshcode xrtSshBannerWrite( xsshwriter* pWriter, xstrview Banner );
参数说明
xsshwriter* pWriter写入器
xstrview Banner服务端横幅文本
返回:严格校验并写入本端 SSH-2.0 identification 与 CRLF。

示例已编译验证

/* 严格校验并写入本端 SSH-2.0 identification 与 CRLF。 */
result = xrtSshBannerWrite(pWriter, Banner);