From 61d581e2343af9677815fa7dc13e8a36a6f5ec3e Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Wed, 1 Jan 2025 13:05:15 -0800 Subject: sha1: move this to private websocket API Nothing else uses it, and nothing else *should* use it because SHA1 is insecure. WebSockets have to use it by definition, unfortunately. The implementation is not very fast, but doesn't have to be for the use case of websocket keying. --- src/supplemental/websocket/sha1.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/supplemental/websocket/sha1.h (limited to 'src/supplemental/websocket/sha1.h') diff --git a/src/supplemental/websocket/sha1.h b/src/supplemental/websocket/sha1.h new file mode 100644 index 00000000..43b6f20d --- /dev/null +++ b/src/supplemental/websocket/sha1.h @@ -0,0 +1,26 @@ +// +// Copyright 2025 Staysail Systems, Inc. +// Copyright 2018 Capitar IT Group BV +// +// This software is supplied under the terms of the MIT License, a +// copy of which should be located in the distribution where this +// file was obtained (LICENSE.txt). A copy of the license may also be +// found online at https://opensource.org/licenses/MIT. +// + +#ifndef NNG_SUPPLEMENTAL_WEBSOCKET_SHA1_H +#define NNG_SUPPLEMENTAL_WEBSOCKET_SHA1_H + +typedef struct { + uint32_t digest[5]; // resulting digest + uint64_t len; // length in bits + uint8_t blk[64]; // message block + int idx; // index of next byte in block +} nni_sha1_ctx; + +extern void nni_sha1_init(nni_sha1_ctx *); +extern void nni_sha1_update(nni_sha1_ctx *, const void *, size_t); +extern void nni_sha1_final(nni_sha1_ctx *, uint8_t[20]); +extern void nni_sha1(const void *, size_t, uint8_t[20]); + +#endif // NNG_SUPPLEMENTAL_WEBSOCKET_SHA1_H -- cgit v1.2.3-70-g09d2