miniupnpd 1.9 (20160113)
[tomato.git] / release / src / router / nettle / write-be32.c
blob462492d6028051480dd659c252edeb4cdc025693
1 /* write-be32.c */
3 /* nettle, low-level cryptographics library
5 * Copyright (C) 2001 Niels Möller
6 *
7 * The nettle library is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU Lesser General Public License as published by
9 * the Free Software Foundation; either version 2.1 of the License, or (at your
10 * option) any later version.
12 * The nettle library is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
15 * License for more details.
17 * You should have received a copy of the GNU Lesser General Public License
18 * along with the nettle library; see the file COPYING.LIB. If not, write to
19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20 * MA 02111-1301, USA.
23 #if HAVE_CONFIG_H
24 # include "config.h"
25 #endif
27 #include <stdlib.h>
29 #include "nettle-write.h"
31 #include "macros.h"
33 void
34 _nettle_write_be32(unsigned length, uint8_t *dst,
35 uint32_t *src)
37 unsigned i;
38 unsigned words;
39 unsigned leftover;
41 words = length / 4;
42 leftover = length % 4;
44 for (i = 0; i < words; i++, dst += 4)
45 WRITE_UINT32(dst, src[i]);
47 if (leftover)
49 uint32_t word;
50 unsigned j = leftover;
52 word = src[i];
54 switch (leftover)
56 default:
57 abort();
58 case 3:
59 dst[--j] = (word >> 8) & 0xff;
60 /* Fall through */
61 case 2:
62 dst[--j] = (word >> 16) & 0xff;
63 /* Fall through */
64 case 1:
65 dst[--j] = (word >> 24) & 0xff;