]>
Commit | Line | Data |
---|---|---|
90112edb NM |
1 | /* write-le32.c |
2 | ||
3 | Copyright (C) 2001, 2011 Niels Möller | |
4 | ||
5 | This file is part of GNU Nettle. | |
6 | ||
7 | GNU Nettle is free software: you can redistribute it and/or | |
8 | modify it under the terms of either: | |
9 | ||
10 | * the GNU Lesser General Public License as published by the Free | |
11 | Software Foundation; either version 3 of the License, or (at your | |
12 | option) any later version. | |
13 | ||
14 | or | |
15 | ||
16 | * the GNU General Public License as published by the Free | |
17 | Software Foundation; either version 2 of the License, or (at your | |
18 | option) any later version. | |
19 | ||
20 | or both in parallel, as here. | |
21 | ||
22 | GNU Nettle is distributed in the hope that it will be useful, | |
23 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
24 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
25 | General Public License for more details. | |
26 | ||
27 | You should have received copies of the GNU General Public License and | |
28 | the GNU Lesser General Public License along with this program. If | |
29 | not, see http://www.gnu.org/licenses/. | |
30 | */ | |
c46f2b02 NM |
31 | |
32 | #if HAVE_CONFIG_H | |
33 | # include "config.h" | |
34 | #endif | |
35 | ||
36 | #include <stdlib.h> | |
37 | ||
38 | #include "nettle-write.h" | |
39 | ||
40 | #include "macros.h" | |
41 | ||
42 | void | |
c15a79d4 | 43 | _nettle_write_le32(size_t length, uint8_t *dst, |
f8ad54fa | 44 | const uint32_t *src) |
c46f2b02 | 45 | { |
c15a79d4 NM |
46 | size_t i; |
47 | size_t words; | |
c46f2b02 NM |
48 | unsigned leftover; |
49 | ||
50 | words = length / 4; | |
51 | leftover = length % 4; | |
52 | ||
53 | for (i = 0; i < words; i++, dst += 4) | |
54 | LE_WRITE_UINT32(dst, src[i]); | |
55 | ||
56 | if (leftover) | |
57 | { | |
58 | uint32_t word; | |
59 | ||
60 | word = src[i]; | |
61 | ||
62 | do | |
63 | { | |
64 | *dst++ = word & 0xff; | |
65 | word >>= 8; | |
66 | } | |
67 | while (--leftover); | |
68 | } | |
69 | } |