xrtSshTransportTcpConfigInit

写入指定角色、默认 packet、banner 和 rekey 预算。

bool xrtSshTransportTcpConfigInit( xsshtransporttcpconfig* pConfig, xsshrole Role );
参数说明
xsshtransporttcpconfig* pConfig配置结构
xsshrole Role本地角色
返回:写入指定角色、默认 packet、banner 和 rekey 预算。

示例已编译验证

sshtransporttcpconfiginit obj;
xrtSshTransportTcpConfigInit(&obj, Role);

xrtSshTransportTcpInit

使用所属 Worker 的缓冲池初始化 TCP transport;不接管缓冲池。

bool xrtSshTransportTcpInit( xsshtransporttcp* pTransport, xnetbufpool* pPool, const xsshtransporttcpconfig* pConfig, uint64 iNowMs );
参数说明
xsshtransporttcp* pTransport传输对象
xnetbufpool* pPool池
const xsshtransporttcpconfig* pConfig配置结构
uint64 iNowMs当前毫秒时间
返回:使用所属 Worker 的缓冲池初始化 TCP transport;不接管缓冲池。

示例已编译验证

sshtransporttcpinit obj;
xrtSshTransportTcpInit(&obj, pTransport, pPool, iNowMs);

xrtSshTransportTcpClear

放弃未决事务、释放动态块并安全清除 cipher 状态。

void xrtSshTransportTcpClear(xsshtransporttcp* pTransport);
参数说明
xsshtransporttcp* pTransport传输对象
返回:放弃未决事务、释放动态块并安全清除 cipher 状态。

示例已编译验证

/* 放弃未决事务、释放动态块并安全清除 cipher 状态。 */
result = xrtSshTransportTcpClear(pTransport);

xrtSshTransportTcpCore

返回可推进 KEX、密钥、认证和连接协议的 transport core。

xsshtransportcore* xrtSshTransportTcpCore( xsshtransporttcp* pTransport );
参数说明
xsshtransporttcp* pTransport传输对象
返回:返回可推进 KEX、密钥、认证和连接协议的 transport core。

示例已编译验证

/* 返回可推进 KEX、密钥、认证和连接协议的 transport core。 */
result = xrtSshTransportTcpCore(pTransport);

xrtSshTransportTcpCoreConst

返回只读 transport core;无效对象返回空。

const xsshtransportcore* xrtSshTransportTcpCoreConst( const xsshtransporttcp* pTransport );
参数说明
const xsshtransporttcp* pTransport传输对象
返回:返回只读 transport core;无效对象返回空。

示例已编译验证

/* 返回只读 transport core;无效对象返回空。 */
result = xrtSshTransportTcpCoreConst(pTransport);

xrtSshTransportTcpIdentificationPrepare

在动态输出链中准备本端 identification,但不推进协议状态。

xsshcode xrtSshTransportTcpIdentificationPrepare( xsshtransporttcp* pTransport, xstrview Banner );
参数说明
xsshtransporttcp* pTransport传输对象
xstrview Banner服务端横幅文本
返回:在动态输出链中准备本端 identification,但不推进协议状态。

示例已编译验证

/* 在动态输出链中准备本端 identification,但不推进协议状态。 */
result = xrtSshTransportTcpIdentificationPrepare(pTransport, Banner);

xrtSshTransportTcpWritePrepareWithPadding

使用调用方 padding 源在动态输出链中准备唯一 packet。

xsshcode xrtSshTransportTcpWritePrepareWithPadding( xsshtransporttcp* pTransport, xbytesview Payload, xsshpaddingproc pPadding, ptr pUserData, uint64 iNowMs );
参数说明
xsshtransporttcp* pTransport传输对象
xbytesview Payload负载
xsshpaddingproc pPaddingPaddng 参数
ptr pUserData透传用户数据
uint64 iNowMs当前毫秒时间
返回:使用调用方 padding 源在动态输出链中准备唯一 packet。

示例已编译验证

/* 使用调用方 padding 源在动态输出链中准备唯一 packet。 */
result = xrtSshTransportTcpWritePrepareWithPadding(pTransport, Payload, pPadding, pUserData, iNowMs);

xrtSshTransportTcpWriteSubmit

XRT_API xnetresult xrtSshTransportTcpWriteSubmit( xsshtransporttcp* pTransport, xnetstream* pStream, uint64 iNowMs, xsshrekeydecision* pDecision );

;
返回:XRT_API xnetresult xrtSshTransportTcpWriteSubmit( xsshtransporttcp* pTransport, xnetstream* pStream, uint64 iNowMs, xsshrekeydecision* pDecision );

示例已编译验证

/* XRT_API xnetresult xrtSshTransportTcpWriteSubmit( xsshtransporttcp* pTransport, xnetstream* pStream, uint64 iNowMs, xsshrekeydecision* pDecision ); */
result = xrtSshTransportTcpWriteSubmit();

xrtSshTransportTcpWriteAbort

放弃尚未被 TCP 接管的输出;packet sequence 与 nonce 保持不变。

xsshcode xrtSshTransportTcpWriteAbort( xsshtransporttcp* pTransport );
参数说明
xsshtransporttcp* pTransport传输对象
返回:放弃尚未被 TCP 接管的输出;packet sequence 与 nonce 保持不变。

示例已编译验证

/* 放弃尚未被 TCP 接管的输出;packet sequence 与 nonce 保持不变。 */
result = xrtSshTransportTcpWriteAbort(pTransport);

xrtSshTransportTcpWriteSize

返回当前待重试输出字节数;没有未决输出时返回零。

size_t xrtSshTransportTcpWriteSize( const xsshtransporttcp* pTransport );
参数说明
const xsshtransporttcp* pTransport传输对象
返回:返回当前待重试输出字节数;没有未决输出时返回零。

示例已编译验证

/* 返回当前待重试输出字节数;没有未决输出时返回零。 */
result = xrtSshTransportTcpWriteSize(pTransport);

xrtSshTransportTcpIdentificationReadPrepare

从分块 TCP 输入准备 peer identification,返回值借用到 ReadCommit/Abort。

xsshcode xrtSshTransportTcpIdentificationReadPrepare( xsshtransporttcp* pTransport, xnetbuf* pInput, xstrview* pBanner );
参数说明
xsshtransporttcp* pTransport传输对象
xnetbuf* pInput输入
xstrview* pBanner横幅
返回:从分块 TCP 输入准备 peer identification,返回值借用到 ReadCommit/Abort。

示例已编译验证

/* 从分块 TCP 输入准备 peer identification,返回值借用到 ReadCommit/Abort。 */
result = xrtSshTransportTcpIdentificationReadPrepare(pTransport, pInput, pBanner);

xrtSshTransportTcpReadInspect

仅复制四字节长度头,探测下一 packet 的线路和解密工作区需求。

xsshcode xrtSshTransportTcpReadInspect( const xsshtransporttcp* pTransport, const xnetbuf* pInput, xsshpacketneed* pNeed );
参数说明
const xsshtransporttcp* pTransport传输对象
const xnetbuf* pInput输入
xsshpacketneed* pNeedNeed 参数
返回:仅复制四字节长度头,探测下一 packet 的线路和解密工作区需求。

示例已编译验证

/* 仅复制四字节长度头,探测下一 packet 的线路和解密工作区需求。 */
result = xrtSshTransportTcpReadInspect(pTransport, pInput, pNeed);

xrtSshTransportTcpReadPrepare

按需连续化一个完整 packet,认证后返回借用 view。

xsshcode xrtSshTransportTcpReadPrepare( xsshtransporttcp* pTransport, xnetbuf* pInput, xsshpacketview* pPacket, void* pPlain, size_t iPlainCapacity, uint64 iNowMs );
参数说明
xsshtransporttcp* pTransport传输对象
xnetbuf* pInput输入
xsshpacketview* pPacket数据包
void* pPlain明文
size_t iPlainCapacityPlanCaacty 参数
uint64 iNowMs当前毫秒时间
返回:按需连续化一个完整 packet,认证后返回借用 view。

示例已编译验证

/* 按需连续化一个完整 packet,认证后返回借用 view。 */
result = xrtSshTransportTcpReadPrepare(pTransport, pInput, pPacket, pPlain, iPlainCapacity, iNowMs);

xrtSshTransportTcpReadCommit

提交上层已经接受的输入并从原 TCP 缓冲精确消费。

xsshcode xrtSshTransportTcpReadCommit( xsshtransporttcp* pTransport, uint64 iNowMs, xsshrekeydecision* pDecision );
参数说明
xsshtransporttcp* pTransport传输对象
uint64 iNowMs当前毫秒时间
xsshrekeydecision* pDecisionDecson 参数
返回:提交上层已经接受的输入并从原 TCP 缓冲精确消费。

示例已编译验证

/* 提交上层已经接受的输入并从原 TCP 缓冲精确消费。 */
result = xrtSshTransportTcpReadCommit(pTransport, iNowMs, pDecision);

xrtSshTransportTcpReadAbort

拒绝当前借用输入、消费其线路字节并关闭不可继续的 transport。

xsshcode xrtSshTransportTcpReadAbort( xsshtransporttcp* pTransport );
参数说明
xsshtransporttcp* pTransport传输对象
返回:拒绝当前借用输入、消费其线路字节并关闭不可继续的 transport。

示例已编译验证

/* 拒绝当前借用输入、消费其线路字节并关闭不可继续的 transport。 */
result = xrtSshTransportTcpReadAbort(pTransport);