xrtSshAesGcmMeasure

计算 AES-GCM packet 的 padding 和 packet_length。

xsshcode xrtSshAesGcmMeasure( size_t iPayloadSize, uint8* pPaddingSize, uint32* pPacketSize );
参数说明
size_t iPayloadSizePayloadSze 参数
uint8* pPaddingSizePaddngSze 参数
uint32* pPacketSizePacketSze 参数
返回:计算 AES-GCM packet 的 padding 和 packet_length。

示例已编译验证

/* 计算 AES-GCM packet 的 padding 和 packet_length。 */
result = xrtSshAesGcmMeasure(iPayloadSize, pPaddingSize, pPacketSize);

xrtSshAesGcmInit

用 AES-128/256 密钥和十二字节 initial IV 初始化单向 packet 状态。

xsshcode xrtSshAesGcmInit( xsshaesgcm* pState, xbytesview Key, xbytesview InitialIV );
参数说明
xsshaesgcm* pState状态对象
xbytesview Key键
xbytesview InitialIVIntalIV 参数
返回:用 AES-128/256 密钥和十二字节 initial IV 初始化单向 packet 状态。

示例已编译验证

sshaesgcminit obj;
xrtSshAesGcmInit(&obj, pState, Key, InitialIV);

xrtSshAesGcmClear

清除 AES-GCM 密钥、固定 IV 和 invocation counter。

void xrtSshAesGcmClear(xsshaesgcm* pState);
参数说明
xsshaesgcm* pState状态对象
返回:清除 AES-GCM 密钥、固定 IV 和 invocation counter。

示例已编译验证

/* 清除 AES-GCM 密钥、固定 IV 和 invocation counter。 */
result = xrtSshAesGcmClear(pState);

xrtSshAesGcmInvocation

读取下一次 packet 使用的 invocation counter。

xsshcode xrtSshAesGcmInvocation( const xsshaesgcm* pState, uint64* pInvocation );
参数说明
const xsshaesgcm* pState状态对象
uint64* pInvocationInvocaton 参数
返回:读取下一次 packet 使用的 invocation counter。

示例已编译验证

/* 读取下一次 packet 使用的 invocation counter。 */
result = xrtSshAesGcmInvocation(pState, pInvocation);

xrtSshAesGcmWrite

原位构建并加密一个 AES-GCM packet;成功后才推进状态和序列号。

xsshcode xrtSshAesGcmWrite( xsshwriter* pWriter, xbytesview Payload, xsshaesgcm* pState, uint32* pSequence, xsshpaddingproc pPadding, ptr pUserData );
参数说明
xsshwriter* pWriter写入器
xbytesview Payload负载
xsshaesgcm* pState状态对象
uint32* pSequence序号
xsshpaddingproc pPaddingPaddng 参数
ptr pUserData透传用户数据
返回:原位构建并加密一个 AES-GCM packet;成功后才推进状态和序列号。

示例已编译验证

/* 原位构建并加密一个 AES-GCM packet;成功后才推进状态和序列号。 */
result = xrtSshAesGcmWrite(pWriter, Payload, pState, pSequence, pPadding, pUserData);

xrtSshAesGcmRead

认证并解密一个 AES-GCM packet;payload 与 padding 借用 plain 缓冲。

xsshcode xrtSshAesGcmRead( xsshreader* pReader, xsshaesgcm* pState, uint32 iMaxPacketSize, uint32* pSequence, xsshpacketview* pPacket, void* pPlain, size_t iPlainCapacity );
参数说明
xsshreader* pReader读取器
xsshaesgcm* pState状态对象
uint32 iMaxPacketSizeMaxPacketSze 参数
uint32* pSequence序号
xsshpacketview* pPacket数据包
void* pPlain明文
size_t iPlainCapacityPlanCaacty 参数
返回:认证并解密一个 AES-GCM packet;payload 与 padding 借用 plain 缓冲。

示例已编译验证

/* 认证并解密一个 AES-GCM packet;payload 与 padding 借用 plain 缓冲。 */
result = xrtSshAesGcmRead(pReader, pState, iMaxPacketSize, pSequence, pPacket, pPlain, iPlainCapacity);