xrtSshAesGcmMeasure
计算 AES-GCM packet 的 padding 和 packet_length。
xsshcode xrtSshAesGcmMeasure( size_t iPayloadSize, uint8* pPaddingSize, uint32* pPacketSize );
| 参数 | 说明 |
|---|---|
| size_t iPayloadSize | PayloadSze 参数 |
| uint8* pPaddingSize | PaddngSze 参数 |
| uint32* pPacketSize | PacketSze 参数 |
返回:计算 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 InitialIV | IntalIV 参数 |
返回:用 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* pInvocation | Invocaton 参数 |
返回:读取下一次 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 pPadding | Paddng 参数 |
| 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 iMaxPacketSize | MaxPacketSze 参数 |
| uint32* pSequence | 序号 |
| xsshpacketview* pPacket | 数据包 |
| void* pPlain | 明文 |
| size_t iPlainCapacity | PlanCaacty 参数 |
返回:认证并解密一个 AES-GCM packet;payload 与 padding 借用 plain 缓冲。
示例已编译验证
/* 认证并解密一个 AES-GCM packet;payload 与 padding 借用 plain 缓冲。 */ result = xrtSshAesGcmRead(pReader, pState, iMaxPacketSize, pSequence, pPacket, pPlain, iPlainCapacity);