Skip to content
Snippets Groups Projects
Commit 1ab78800 authored by Deucе's avatar Deucе :ok_hand_tone4:
Browse files

Introduce portable.h for ugly hacks

The plan is to hide non-standard stuff in here.  Currently, just
has [[maybe-unused]] from C23.
parent c65fe446
No related branches found
No related tags found
No related merge requests found
Pipeline #7323 passed
#ifndef DEUCE_SSH_PLATWRAP_H
#define DEUCE_SSH_PLATWRAP_H
/*
* This file is here to hold all the ugly compiler and platform
* "stuff" that ends up being needed.
*/
#ifdef __has_c_attribute
#if __has_c_attribute(maybe_unused)
#define MAYBE_UNUSED [[maybe_unused]]
#endif
#endif
#ifndef MAYBE_UNUSED
#define MAYBE_UNUSED
#endif
#endif
......@@ -28,7 +28,7 @@ deuce_ssh_serialized_byte_length(deuce_ssh_byte_t val)
}
void
deuce_ssh_serialize_byte(deuce_ssh_byte_t val, uint8_t *buf, [[maybe_unused]] size_t bufsz, size_t *pos)
deuce_ssh_serialize_byte(deuce_ssh_byte_t val, uint8_t *buf, MAYBE_UNUSED size_t bufsz, size_t *pos)
{
assert(*pos + 1 <= bufsz);
buf[*pos] = val;
......@@ -54,7 +54,7 @@ deuce_ssh_serialized_boolean_length(deuce_ssh_boolean_t val)
}
void
deuce_ssh_serialize_boolean(deuce_ssh_boolean_t val, uint8_t *buf, [[maybe_unused]] size_t bufsz, size_t *pos)
deuce_ssh_serialize_boolean(deuce_ssh_boolean_t val, uint8_t *buf, MAYBE_UNUSED size_t bufsz, size_t *pos)
{
assert(*pos + 1 <= bufsz);
buf[*pos] = val;
......@@ -78,7 +78,7 @@ deuce_ssh_serialized_uint32_length(deuce_ssh_uint32_t val)
}
void
deuce_ssh_serialize_uint32(deuce_ssh_uint32_t val, uint8_t *buf, [[maybe_unused]] size_t bufsz, size_t *pos)
deuce_ssh_serialize_uint32(deuce_ssh_uint32_t val, uint8_t *buf, MAYBE_UNUSED size_t bufsz, size_t *pos)
{
assert(*pos + 4 <= bufsz);
buf[(*pos)++] = (val >> 24) & 0xff;
......@@ -106,7 +106,7 @@ deuce_ssh_serialized_uint64_length(deuce_ssh_uint64_t val)
}
void
deuce_ssh_serialize_uint64(deuce_ssh_uint64_t val, uint8_t *buf, [[maybe_unused]] size_t bufsz, size_t *pos)
deuce_ssh_serialize_uint64(deuce_ssh_uint64_t val, uint8_t *buf, MAYBE_UNUSED size_t bufsz, size_t *pos)
{
assert(*pos + 8 <= bufsz);
buf[(*pos)++] = (val >> 56) & 0xff;
......@@ -156,7 +156,7 @@ deuce_ssh_serialized_string_length(deuce_ssh_string_t val)
}
void
deuce_ssh_serialize_string(deuce_ssh_string_t val, uint8_t *buf, [[maybe_unused]] size_t bufsz, size_t *pos)
deuce_ssh_serialize_string(deuce_ssh_string_t val, uint8_t *buf, MAYBE_UNUSED size_t bufsz, size_t *pos)
{
assert(*pos + 4 + val->length <= bufsz);
deuce_ssh_serialize_uint32(val->length, buf, bufsz, pos);
......@@ -197,7 +197,7 @@ deuce_ssh_serialized_mpint_length(deuce_ssh_mpint_t val)
}
void
deuce_ssh_serialize_mpint(deuce_ssh_mpint_t val, uint8_t *buf, [[maybe_unused]] size_t bufsz, size_t *pos)
deuce_ssh_serialize_mpint(deuce_ssh_mpint_t val, uint8_t *buf, MAYBE_UNUSED size_t bufsz, size_t *pos)
{
assert(*pos + 4 <= bufsz);
*pos += BN_bn2mpi(val, &buf[*pos]);
......@@ -272,7 +272,7 @@ deuce_ssh_serialized_namelist_length(deuce_ssh_namelist_t val)
}
void
deuce_ssh_serialize_namelist(deuce_ssh_namelist_t val, uint8_t *buf, [[maybe_unused]] size_t bufsz, size_t *pos)
deuce_ssh_serialize_namelist(deuce_ssh_namelist_t val, uint8_t *buf, MAYBE_UNUSED size_t bufsz, size_t *pos)
{
assert(bufsz >= 4);
......
......@@ -8,6 +8,8 @@
#include <openssl/bn.h>
#include "portable.h"
// SSH Data Types (internal representations)
typedef uint8_t deuce_ssh_byte_t;
typedef bool deuce_ssh_boolean_t;
......@@ -52,30 +54,30 @@ typedef struct deuce_ssh_namelist {
ssize_t deuce_ssh_parse_byte(uint8_t * buf, size_t bufsz, deuce_ssh_byte_t *val);
size_t deuce_ssh_serialized_byte_length(deuce_ssh_byte_t val);
void deuce_ssh_serialize_byte(deuce_ssh_byte_t val, uint8_t *buf, [[maybe_unused]] size_t bufsz, size_t *pos);
void deuce_ssh_serialize_byte(deuce_ssh_byte_t val, uint8_t *buf, MAYBE_UNUSED size_t bufsz, size_t *pos);
ssize_t deuce_ssh_parse_boolean(uint8_t * buf, size_t bufsz, deuce_ssh_boolean_t *val);
size_t deuce_ssh_serialized_boolean_length(deuce_ssh_boolean_t val);
void deuce_ssh_serialize_boolean(deuce_ssh_boolean_t val, uint8_t *buf, [[maybe_unused]] size_t bufsz, size_t *pos);
void deuce_ssh_serialize_boolean(deuce_ssh_boolean_t val, uint8_t *buf, MAYBE_UNUSED size_t bufsz, size_t *pos);
ssize_t deuce_ssh_parse_uint32(uint8_t * buf, size_t bufsz, deuce_ssh_uint32_t *val);
size_t deuce_ssh_serialized_uint32_length(deuce_ssh_uint32_t val);
void deuce_ssh_serialize_uint32(deuce_ssh_uint32_t val, uint8_t *buf, [[maybe_unused]] size_t bufsz, size_t *pos);
void deuce_ssh_serialize_uint32(deuce_ssh_uint32_t val, uint8_t *buf, MAYBE_UNUSED size_t bufsz, size_t *pos);
ssize_t deuce_ssh_parse_uint64(uint8_t * buf, size_t bufsz, deuce_ssh_uint64_t *val);
size_t deuce_ssh_serialized_uint64_length(deuce_ssh_uint64_t val);
void deuce_ssh_serialize_uint64(deuce_ssh_uint64_t val, uint8_t *buf, [[maybe_unused]] size_t bufsz, size_t *pos);
void deuce_ssh_serialize_uint64(deuce_ssh_uint64_t val, uint8_t *buf, MAYBE_UNUSED size_t bufsz, size_t *pos);
ssize_t deuce_ssh_parse_string(uint8_t * buf, size_t bufsz, deuce_ssh_string_t *val);
size_t deuce_ssh_serialized_string_length(deuce_ssh_string_t val);
void deuce_ssh_serialize_string(deuce_ssh_string_t val, uint8_t *buf, [[maybe_unused]] size_t bufsz, size_t *pos);
void deuce_ssh_serialize_string(deuce_ssh_string_t val, uint8_t *buf, MAYBE_UNUSED size_t bufsz, size_t *pos);
ssize_t deuce_ssh_parse_mpint(uint8_t * buf, size_t bufsz, deuce_ssh_mpint_t *val);
size_t deuce_ssh_serialized_mpint_length(deuce_ssh_mpint_t val);
void deuce_ssh_serialize_mpint(deuce_ssh_mpint_t val, uint8_t *buf, [[maybe_unused]] size_t bufsz, size_t *pos);
void deuce_ssh_serialize_mpint(deuce_ssh_mpint_t val, uint8_t *buf, MAYBE_UNUSED size_t bufsz, size_t *pos);
ssize_t deuce_ssh_parse_namelist(uint8_t * buf, size_t bufsz, deuce_ssh_namelist_t *val);
size_t deuce_ssh_serialized_namelist_length(deuce_ssh_namelist_t val);
void deuce_ssh_serialize_namelist(deuce_ssh_namelist_t val, uint8_t *buf, [[maybe_unused]] size_t bufsz, size_t *pos);
void deuce_ssh_serialize_namelist(deuce_ssh_namelist_t val, uint8_t *buf, MAYBE_UNUSED size_t bufsz, size_t *pos);
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment