| 1170 | } |
| 1171 | |
| 1172 | apr_status_t md_crypt_hmac64(const char **pmac64, const md_data_t *hmac_key, |
| 1173 | apr_pool_t *p, const char *d, size_t dlen) |
| 1174 | { |
| 1175 | const char *mac64 = NULL; |
| 1176 | unsigned char *s; |
| 1177 | unsigned int digest_len = 0; |
| 1178 | md_data_t *digest; |
| 1179 | apr_status_t rv = APR_SUCCESS; |
| 1180 | |
| 1181 | digest = md_data_pmake(EVP_MAX_MD_SIZE, p); |
| 1182 | s = HMAC(EVP_sha256(), (const unsigned char*)hmac_key->data, (int)hmac_key->len, |
| 1183 | (const unsigned char*)d, (size_t)dlen, |
| 1184 | (unsigned char*)digest->data, &digest_len); |
| 1185 | if (!s) { |
| 1186 | rv = APR_EINVAL; |
| 1187 | goto cleanup; |
| 1188 | } |
| 1189 | digest->len = digest_len; |
| 1190 | mac64 = md_util_base64url_encode(digest, p); |
| 1191 | |
| 1192 | cleanup: |
| 1193 | *pmac64 = (APR_SUCCESS == rv)? mac64 : NULL; |
| 1194 | return rv; |
| 1195 | } |
| 1196 | |
| 1197 | /**************************************************************************************************/ |
| 1198 | /* certificates */ |
no test coverage detected