Where Online Learning is simpler!
The C and C++ Include Header Files
/usr/include/node/openssl/byteorder.h
$ cat -n /usr/include/node/openssl/byteorder.h 1 /* 2 * Copyright 2025 The OpenSSL Project Authors. All Rights Reserved. 3 * 4 * Licensed under the Apache License 2.0 (the "License"). You may not use 5 * this file except in compliance with the License. You can obtain a copy 6 * in the file LICENSE in the source distribution or at 7 * https://www.openssl.org/source/license.html 8 */ 9 10 #ifndef OPENSSL_BYTEORDER_H 11 # define OPENSSL_BYTEORDER_H 12 # pragma once 13 14 # include
15 # include
16 17 /* 18 * "Modern" compilers do a decent job of optimising these functions to just a 19 * couple of instruction ([swap +] store, or load [+ swap]) when either no 20 * swapping is required, or a suitable swap instruction is available. 21 */ 22 23 # if defined(_MSC_VER) && _MSC_VER>=1300 24 # include
25 # pragma intrinsic(_byteswap_ushort) 26 # pragma intrinsic(_byteswap_ulong) 27 # pragma intrinsic(_byteswap_uint64) 28 # define OSSL_HTOBE16(x) _byteswap_ushort(x) 29 # define OSSL_HTOBE32(x) _byteswap_ulong(x) 30 # define OSSL_HTOBE64(x) _byteswap_uint64(x) 31 # define OSSL_BE16TOH(x) _byteswap_ushort(x) 32 # define OSSL_BE32TOH(x) _byteswap_ulong(x) 33 # define OSSL_BE64TOH(x) _byteswap_uint64(x) 34 # define OSSL_HTOLE16(x) (x) 35 # define OSSL_HTOLE32(x) (x) 36 # define OSSL_HTOLE64(x) (x) 37 # define OSSL_LE16TOH(x) (x) 38 # define OSSL_LE32TOH(x) (x) 39 # define OSSL_LE64TOH(x) (x) 40 41 # elif defined(__GLIBC__) && defined(__GLIBC_PREREQ) 42 # if (__GLIBC_PREREQ(2, 19)) && defined(_DEFAULT_SOURCE) 43 # include
44 # define OSSL_HTOBE16(x) htobe16(x) 45 # define OSSL_HTOBE32(x) htobe32(x) 46 # define OSSL_HTOBE64(x) htobe64(x) 47 # define OSSL_BE16TOH(x) be16toh(x) 48 # define OSSL_BE32TOH(x) be32toh(x) 49 # define OSSL_BE64TOH(x) be64toh(x) 50 # define OSSL_HTOLE16(x) htole16(x) 51 # define OSSL_HTOLE32(x) htole32(x) 52 # define OSSL_HTOLE64(x) htole64(x) 53 # define OSSL_LE16TOH(x) le16toh(x) 54 # define OSSL_LE32TOH(x) le32toh(x) 55 # define OSSL_LE64TOH(x) le64toh(x) 56 # endif 57 58 # elif defined(__FreeBSD__) || defined(__NetBSD__) || defined (__OpenBSD__) 59 # if defined(__OpenBSD__) 60 # include
61 # else 62 # include
63 # endif 64 # define OSSL_HTOBE16(x) htobe16(x) 65 # define OSSL_HTOBE32(x) htobe32(x) 66 # define OSSL_HTOBE64(x) htobe64(x) 67 # define OSSL_BE16TOH(x) be16toh(x) 68 # define OSSL_BE32TOH(x) be32toh(x) 69 # define OSSL_BE64TOH(x) be64toh(x) 70 # define OSSL_HTOLE16(x) htole16(x) 71 # define OSSL_HTOLE32(x) htole32(x) 72 # define OSSL_HTOLE64(x) htole64(x) 73 # define OSSL_LE16TOH(x) le16toh(x) 74 # define OSSL_LE32TOH(x) le32toh(x) 75 # define OSSL_LE64TOH(x) le64toh(x) 76 77 # elif defined(__APPLE__) 78 # include
79 # define OSSL_HTOBE16(x) OSSwapHostToBigInt16(x) 80 # define OSSL_HTOBE32(x) OSSwapHostToBigInt32(x) 81 # define OSSL_HTOBE64(x) OSSwapHostToBigInt64(x) 82 # define OSSL_BE16TOH(x) OSSwapBigToHostInt16(x) 83 # define OSSL_BE32TOH(x) OSSwapBigToHostInt32(x) 84 # define OSSL_BE64TOH(x) OSSwapBigToHostInt64(x) 85 # define OSSL_HTOLE16(x) OSSwapHostToLittleInt16(x) 86 # define OSSL_HTOLE32(x) OSSwapHostToLittleInt32(x) 87 # define OSSL_HTOLE64(x) OSSwapHostToLittleInt64(x) 88 # define OSSL_LE16TOH(x) OSSwapLittleToHostInt16(x) 89 # define OSSL_LE32TOH(x) OSSwapLittleToHostInt32(x) 90 # define OSSL_LE64TOH(x) OSSwapLittleToHostInt64(x) 91 92 # endif 93 94 static ossl_inline ossl_unused unsigned char * 95 OPENSSL_store_u16_le(unsigned char *out, uint16_t val) 96 { 97 # ifdef OSSL_HTOLE16 98 uint16_t t = OSSL_HTOLE16(val); 99 100 memcpy(out, (unsigned char *)&t, 2); 101 return out + 2; 102 # else 103 *out++ = (val & 0xff); 104 *out++ = (val >> 8) & 0xff; 105 return out; 106 # endif 107 } 108 109 static ossl_inline ossl_unused unsigned char * 110 OPENSSL_store_u16_be(unsigned char *out, uint16_t val) 111 { 112 # ifdef OSSL_HTOBE16 113 uint16_t t = OSSL_HTOBE16(val); 114 115 memcpy(out, (unsigned char *)&t, 2); 116 return out + 2; 117 # else 118 *out++ = (val >> 8) & 0xff; 119 *out++ = (val & 0xff); 120 return out; 121 # endif 122 } 123 124 static ossl_inline ossl_unused unsigned char * 125 OPENSSL_store_u32_le(unsigned char *out, uint32_t val) 126 { 127 # ifdef OSSL_HTOLE32 128 uint32_t t = OSSL_HTOLE32(val); 129 130 memcpy(out, (unsigned char *)&t, 4); 131 return out + 4; 132 # else 133 *out++ = (val & 0xff); 134 *out++ = (val >> 8) & 0xff; 135 *out++ = (val >> 16) & 0xff; 136 *out++ = (val >> 24) & 0xff; 137 return out; 138 # endif 139 } 140 141 static ossl_inline ossl_unused unsigned char * 142 OPENSSL_store_u32_be(unsigned char *out, uint32_t val) 143 { 144 # ifdef OSSL_HTOBE32 145 uint32_t t = OSSL_HTOBE32(val); 146 147 memcpy(out, (unsigned char *)&t, 4); 148 return out + 4; 149 # else 150 *out++ = (val >> 24) & 0xff; 151 *out++ = (val >> 16) & 0xff; 152 *out++ = (val >> 8) & 0xff; 153 *out++ = (val & 0xff); 154 return out; 155 # endif 156 } 157 158 static ossl_inline ossl_unused unsigned char * 159 OPENSSL_store_u64_le(unsigned char *out, uint64_t val) 160 { 161 # ifdef OSSL_HTOLE64 162 uint64_t t = OSSL_HTOLE64(val); 163 164 memcpy(out, (unsigned char *)&t, 8); 165 return out + 8; 166 # else 167 *out++ = (val & 0xff); 168 *out++ = (val >> 8) & 0xff; 169 *out++ = (val >> 16) & 0xff; 170 *out++ = (val >> 24) & 0xff; 171 *out++ = (val >> 32) & 0xff; 172 *out++ = (val >> 40) & 0xff; 173 *out++ = (val >> 48) & 0xff; 174 *out++ = (val >> 56) & 0xff; 175 return out; 176 # endif 177 } 178 179 static ossl_inline ossl_unused unsigned char * 180 OPENSSL_store_u64_be(unsigned char *out, uint64_t val) 181 { 182 # ifdef OSSL_HTOLE64 183 uint64_t t = OSSL_HTOBE64(val); 184 185 memcpy(out, (unsigned char *)&t, 8); 186 return out + 8; 187 # else 188 *out++ = (val >> 56) & 0xff; 189 *out++ = (val >> 48) & 0xff; 190 *out++ = (val >> 40) & 0xff; 191 *out++ = (val >> 32) & 0xff; 192 *out++ = (val >> 24) & 0xff; 193 *out++ = (val >> 16) & 0xff; 194 *out++ = (val >> 8) & 0xff; 195 *out++ = (val & 0xff); 196 return out; 197 # endif 198 } 199 200 static ossl_inline ossl_unused const unsigned char * 201 OPENSSL_load_u16_le(uint16_t *val, const unsigned char *in) 202 { 203 # ifdef OSSL_LE16TOH 204 uint16_t t; 205 206 memcpy((unsigned char *)&t, in, 2); 207 *val = OSSL_LE16TOH(t); 208 return in + 2; 209 # else 210 uint16_t b0 = *in++; 211 uint16_t b1 = *in++; 212 213 *val = b0 | (b1 << 8); 214 return in; 215 #endif 216 } 217 218 static ossl_inline ossl_unused const unsigned char * 219 OPENSSL_load_u16_be(uint16_t *val, const unsigned char *in) 220 { 221 # ifdef OSSL_LE16TOH 222 uint16_t t; 223 224 memcpy((unsigned char *)&t, in, 2); 225 *val = OSSL_BE16TOH(t); 226 return in + 2; 227 # else 228 uint16_t b1 = *in++; 229 uint16_t b0 = *in++; 230 231 *val = b0 | (b1 << 8); 232 return in; 233 #endif 234 } 235 236 static ossl_inline ossl_unused const unsigned char * 237 OPENSSL_load_u32_le(uint32_t *val, const unsigned char *in) 238 { 239 # ifdef OSSL_LE32TOH 240 uint32_t t; 241 242 memcpy((unsigned char *)&t, in, 4); 243 *val = OSSL_LE32TOH(t); 244 return in + 4; 245 # else 246 uint32_t b0 = *in++; 247 uint32_t b1 = *in++; 248 uint32_t b2 = *in++; 249 uint32_t b3 = *in++; 250 251 *val = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24); 252 return in; 253 #endif 254 } 255 256 static ossl_inline ossl_unused const unsigned char * 257 OPENSSL_load_u32_be(uint32_t *val, const unsigned char *in) 258 { 259 # ifdef OSSL_LE32TOH 260 uint32_t t; 261 262 memcpy((unsigned char *)&t, in, 4); 263 *val = OSSL_BE32TOH(t); 264 return in + 4; 265 # else 266 uint32_t b3 = *in++; 267 uint32_t b2 = *in++; 268 uint32_t b1 = *in++; 269 uint32_t b0 = *in++; 270 271 *val = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24); 272 return in; 273 #endif 274 } 275 276 static ossl_inline ossl_unused const unsigned char * 277 OPENSSL_load_u64_le(uint64_t *val, const unsigned char *in) 278 { 279 # ifdef OSSL_LE64TOH 280 uint64_t t; 281 282 memcpy((unsigned char *)&t, in, 8); 283 *val = OSSL_LE64TOH(t); 284 return in + 8; 285 # else 286 uint64_t b0 = *in++; 287 uint64_t b1 = *in++; 288 uint64_t b2 = *in++; 289 uint64_t b3 = *in++; 290 uint64_t b4 = *in++; 291 uint64_t b5 = *in++; 292 uint64_t b6 = *in++; 293 uint64_t b7 = *in++; 294 295 *val = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24) 296 | (b4 << 32) | (b5 << 40) | (b6 << 48) | (b7 << 56); 297 return in; 298 #endif 299 } 300 301 static ossl_inline ossl_unused const unsigned char * 302 OPENSSL_load_u64_be(uint64_t *val, const unsigned char *in) 303 { 304 # ifdef OSSL_LE64TOH 305 uint64_t t; 306 307 memcpy((unsigned char *)&t, in, 8); 308 *val = OSSL_BE64TOH(t); 309 return in + 8; 310 # else 311 uint64_t b7 = *in++; 312 uint64_t b6 = *in++; 313 uint64_t b5 = *in++; 314 uint64_t b4 = *in++; 315 uint64_t b3 = *in++; 316 uint64_t b2 = *in++; 317 uint64_t b1 = *in++; 318 uint64_t b0 = *in++; 319 320 *val = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24) 321 | (b4 << 32) | (b5 << 40) | (b6 << 48) | (b7 << 56); 322 return in; 323 #endif 324 } 325 326 # undef OSSL_HTOBE16 327 # undef OSSL_HTOBE32 328 # undef OSSL_HTOBE64 329 # undef OSSL_BE16TOH 330 # undef OSSL_BE32TOH 331 # undef OSSL_BE64TOH 332 # undef OSSL_HTOLE16 333 # undef OSSL_HTOLE32 334 # undef OSSL_HTOLE64 335 # undef OSSL_LE16TOH 336 # undef OSSL_LE32TOH 337 # undef OSSL_LE64TOH 338 339 #endif
Contact us
|
About us
|
Term of use
|
Copyright © 2000-2026 MyWebUniversity.com ™