xrtHttpDigestCursorInit

初始化摘要或摘要偏好游标。

void xrtHttpDigestCursorInit(xhttpdigestcursor* pCursor);
参数说明
xhttpdigestcursor* pCursor游标
返回:初始化摘要或摘要偏好游标。

示例已编译验证

httpdigestcursorinit obj;
xrtHttpDigestCursorInit(&obj, pCursor);

xrtHttpDigestValid

严格验证完整 Content-Digest 或 Repr-Digest 字段值。

bool xrtHttpDigestValid(xstrview Value);
参数说明
xstrview Value值
返回:严格验证完整 Content-Digest 或 Repr-Digest 字段值。

示例已编译验证

/* 严格验证完整 Content-Digest 或 Repr-Digest 字段值。 */
result = xrtHttpDigestValid(Value);

xrtHttpDigestNext

迭代完整且不可变的摘要值;算法按首次位置输出,重复值取最后一次。

xhttpnext xrtHttpDigestNext( xstrview Value, xhttpdigestcursor* pCursor, xhttpdigest* pDigest );
参数说明
xstrview Value值
xhttpdigestcursor* pCursor游标
xhttpdigest* pDigest摘要
返回:迭代完整且不可变的摘要值;算法按首次位置输出,重复值取最后一次。

示例已编译验证

/* 迭代完整且不可变的摘要值;算法按首次位置输出,重复值取最后一次。 */
result = xrtHttpDigestNext(Value, pCursor, pDigest);

xrtHttpDigestFieldNext

跨重复字段行迭代;字段数组、目标和借用内容在游标期间不可改变。

xhttpnext xrtHttpDigestFieldNext( const xhttpfield* pFields, size_t iCount, xhttpdigesttarget Target, xhttpdigestcursor* pCursor, xhttpdigest* pDigest );
参数说明
const xhttpfield* pFields字段数组
size_t iCount数量
xhttpdigesttarget Target目标地址
xhttpdigestcursor* pCursor游标
xhttpdigest* pDigest摘要
返回:跨重复字段行迭代;字段数组、目标和借用内容在游标期间不可改变。

示例已编译验证

/* 跨重复字段行迭代;字段数组、目标和借用内容在游标期间不可改变。 */
result = xrtHttpDigestFieldNext(pFields, iCount, Target, pCursor, pDigest);

xrtHttpDigestRead

解码摘要;空输出查询长度,不附加零字节,长度输出允许未对齐。

bool xrtHttpDigestRead( const xhttpdigest* pDigest, void* pOutput, size_t iCapacity, size_t* pSize );
参数说明
const xhttpdigest* pDigest摘要
void* pOutput出:输出缓冲
size_t iCapacity容量
size_t* pSize出:大小
返回:解码摘要;空输出查询长度,不附加零字节,长度输出允许未对齐。

示例已编译验证

/* 解码摘要;空输出查询长度,不附加零字节,长度输出允许未对齐。 */
result = xrtHttpDigestRead(pDigest, pOutput, iCapacity, pSize);

xrtHttpDigestPreferenceValid

严格验证完整 Want-Content-Digest 或 Want-Repr-Digest 值。

bool xrtHttpDigestPreferenceValid(xstrview Value);
参数说明
xstrview Value值
返回:严格验证完整 Want-Content-Digest 或 Want-Repr-Digest 值。

示例已编译验证

/* 严格验证完整 Want-Content-Digest 或 Want-Repr-Digest 值。 */
result = xrtHttpDigestPreferenceValid(Value);

xrtHttpDigestPreferenceNext

迭代完整且不可变的摘要偏好值,游标不可与摘要迭代混用。

xhttpnext xrtHttpDigestPreferenceNext( xstrview Value, xhttpdigestcursor* pCursor, xhttpdigestpreference* pPreference );
参数说明
xstrview Value值
xhttpdigestcursor* pCursor游标
xhttpdigestpreference* pPreferencePreference 参数
返回:迭代完整且不可变的摘要偏好值,游标不可与摘要迭代混用。

示例已编译验证

/* 迭代完整且不可变的摘要偏好值,游标不可与摘要迭代混用。 */
result = xrtHttpDigestPreferenceNext(Value, pCursor, pPreference);

xrtHttpDigestPreferenceFieldNext

跨重复摘要偏好字段行迭代。

xhttpnext xrtHttpDigestPreferenceFieldNext( const xhttpfield* pFields, size_t iCount, xhttpdigesttarget Target, xhttpdigestcursor* pCursor, xhttpdigestpreference* pPreference );
参数说明
const xhttpfield* pFields字段数组
size_t iCount数量
xhttpdigesttarget Target目标地址
xhttpdigestcursor* pCursor游标
xhttpdigestpreference* pPreferencePreference 参数
返回:跨重复摘要偏好字段行迭代。

示例已编译验证

/* 跨重复摘要偏好字段行迭代。 */
result = xrtHttpDigestPreferenceFieldNext(pFields, iCount, Target, pCursor, pPreference);

xrtHttpDigestWrite

写出一个算法的摘要 Dictionary;适合最常见的单算法路径。

bool xrtHttpDigestWrite( xstrview Algorithm, xbytesview Digest, void* pOutput, size_t iCapacity, size_t* pSize );
参数说明
xstrview Algorithm算法标识
xbytesview Digest摘要值
void* pOutput出:输出缓冲
size_t iCapacity容量
size_t* pSize出:大小
返回:写出一个算法的摘要 Dictionary;适合最常见的单算法路径。

示例已编译验证

/* 写出一个算法的摘要 Dictionary;适合最常见的单算法路径。 */
result = xrtHttpDigestWrite(Algorithm, Digest, pOutput, iCapacity, pSize);

xrtHttpDigestPreferenceWrite

写出一个算法的偏好 Dictionary,权重必须位于 0 到 10。

bool xrtHttpDigestPreferenceWrite( xstrview Algorithm, uint8 iWeight, void* pOutput, size_t iCapacity, size_t* pSize );
参数说明
xstrview Algorithm算法标识
uint8 iWeightWeght 参数
void* pOutput出:输出缓冲
size_t iCapacity容量
size_t* pSize出:大小
返回:写出一个算法的偏好 Dictionary,权重必须位于 0 到 10。

示例已编译验证

/* 写出一个算法的偏好 Dictionary,权重必须位于 0 到 10。 */
result = xrtHttpDigestPreferenceWrite(Algorithm, iWeight, pOutput, iCapacity, pSize);

xrtHttpDigestSha256Write

计算连续内容的 SHA-256 并写出 Dictionary;长度输出允许未对齐。

bool xrtHttpDigestSha256Write( const void* pData, size_t iSize, void* pOutput, size_t iCapacity, size_t* pOutputSize );
参数说明
const void* pData用户数据
size_t iSize字节数
void* pOutput出:输出缓冲
size_t iCapacity容量
size_t* pOutputSize出:输出长度
返回:计算连续内容的 SHA-256 并写出 Dictionary;长度输出允许未对齐。

示例已编译验证

/* 计算连续内容的 SHA-256 并写出 Dictionary;长度输出允许未对齐。 */
result = xrtHttpDigestSha256Write(pData, iSize, pOutput, iCapacity, pOutputSize);

xrtHttpDigestSha512Write

计算连续内容的 SHA-512 并写出 Dictionary;长度输出允许未对齐。

bool xrtHttpDigestSha512Write( const void* pData, size_t iSize, void* pOutput, size_t iCapacity, size_t* pOutputSize );
参数说明
const void* pData用户数据
size_t iSize字节数
void* pOutput出:输出缓冲
size_t iCapacity容量
size_t* pOutputSize出:输出长度
返回:计算连续内容的 SHA-512 并写出 Dictionary;长度输出允许未对齐。

示例已编译验证

/* 计算连续内容的 SHA-512 并写出 Dictionary;长度输出允许未对齐。 */
result = xrtHttpDigestSha512Write(pData, iSize, pOutput, iCapacity, pOutputSize);

xrtHttpDigestSha2Verify

按成员算法常量时间校验;未知算法不解码载荷并返回 UNSUPPORTED。

xhttpdigestmatch xrtHttpDigestSha2Verify( const xhttpdigest* pDigest, const void* pData, size_t iSize );
参数说明
const xhttpdigest* pDigest摘要
const void* pData用户数据
size_t iSize字节数
返回:按成员算法常量时间校验;未知算法不解码载荷并返回 UNSUPPORTED。

示例已编译验证

/* 按成员算法常量时间校验;未知算法不解码载荷并返回 UNSUPPORTED。 */
result = xrtHttpDigestSha2Verify(pDigest, pData, iSize);