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* pPreference | Preference 参数 |
返回:迭代完整且不可变的摘要偏好值,游标不可与摘要迭代混用。
示例已编译验证
/* 迭代完整且不可变的摘要偏好值,游标不可与摘要迭代混用。 */ 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* pPreference | Preference 参数 |
返回:跨重复摘要偏好字段行迭代。
示例已编译验证
/* 跨重复摘要偏好字段行迭代。 */ 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 iWeight | Weght 参数 |
| 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);