1c87c5fbaSopenharmony_ci/* coap_hashkey.c -- definition of hash key type and helper functions 2c87c5fbaSopenharmony_ci * 3c87c5fbaSopenharmony_ci * Copyright (C) 2010,2011 Olaf Bergmann <bergmann@tzi.org> 4c87c5fbaSopenharmony_ci * 5c87c5fbaSopenharmony_ci * SPDX-License-Identifier: BSD-2-Clause 6c87c5fbaSopenharmony_ci * 7c87c5fbaSopenharmony_ci * This file is part of the CoAP library libcoap. Please see 8c87c5fbaSopenharmony_ci * README for terms of use. 9c87c5fbaSopenharmony_ci */ 10c87c5fbaSopenharmony_ci 11c87c5fbaSopenharmony_ci/** 12c87c5fbaSopenharmony_ci * @file coap_hashkey.c 13c87c5fbaSopenharmony_ci * @brief Hashkey functions 14c87c5fbaSopenharmony_ci */ 15c87c5fbaSopenharmony_ci 16c87c5fbaSopenharmony_ci#include "coap3/coap_internal.h" 17c87c5fbaSopenharmony_ci 18c87c5fbaSopenharmony_civoid 19c87c5fbaSopenharmony_cicoap_hash_impl(const unsigned char *s, size_t len, coap_key_t h) { 20c87c5fbaSopenharmony_ci size_t j; 21c87c5fbaSopenharmony_ci 22c87c5fbaSopenharmony_ci while (len--) { 23c87c5fbaSopenharmony_ci j = sizeof(coap_key_t)-1; 24c87c5fbaSopenharmony_ci 25c87c5fbaSopenharmony_ci while (j) { 26c87c5fbaSopenharmony_ci h[j] = ((h[j] << 7) | (h[j-1] >> 1)) + h[j]; 27c87c5fbaSopenharmony_ci --j; 28c87c5fbaSopenharmony_ci } 29c87c5fbaSopenharmony_ci 30c87c5fbaSopenharmony_ci h[0] = (h[0] << 7) + h[0] + *s++; 31c87c5fbaSopenharmony_ci } 32c87c5fbaSopenharmony_ci} 33