Deleted Added
full compact
g_eli.h (161127) g_eli.h (161217)
1/*-
2 * Copyright (c) 2005 Pawel Jakub Dawidek <pjd@FreeBSD.org>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
1/*-
2 * Copyright (c) 2005 Pawel Jakub Dawidek <pjd@FreeBSD.org>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 9 unchanged lines hidden (view full) ---

18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 * $FreeBSD: head/sys/geom/eli/g_eli.h 161127 2006-08-09 18:11:14Z pjd $
26 * $FreeBSD: head/sys/geom/eli/g_eli.h 161217 2006-08-11 18:39:58Z pjd $
27 */
28
29#ifndef _G_ELI_H_
30#define _G_ELI_H_
31
32#include <sys/endian.h>
33#include <sys/errno.h>
34#include <sys/malloc.h>

--- 16 unchanged lines hidden (view full) ---

51#define G_ELI_MAGIC "GEOM::ELI"
52#define G_ELI_SUFFIX ".eli"
53
54/*
55 * Version history:
56 * 0 - Initial version number.
57 * 1 - Added data authentication support (md_aalgo field and
58 * G_ELI_FLAG_AUTH flag).
27 */
28
29#ifndef _G_ELI_H_
30#define _G_ELI_H_
31
32#include <sys/endian.h>
33#include <sys/errno.h>
34#include <sys/malloc.h>

--- 16 unchanged lines hidden (view full) ---

51#define G_ELI_MAGIC "GEOM::ELI"
52#define G_ELI_SUFFIX ".eli"
53
54/*
55 * Version history:
56 * 0 - Initial version number.
57 * 1 - Added data authentication support (md_aalgo field and
58 * G_ELI_FLAG_AUTH flag).
59 * 2 - Added G_ELI_FLAG_READONLY.
59 */
60 */
60#define G_ELI_VERSION 1
61#define G_ELI_VERSION 2
61
62/* ON DISK FLAGS. */
63/* Use random, onetime keys. */
64#define G_ELI_FLAG_ONETIME 0x00000001
65/* Ask for the passphrase from the kernel, before mounting root. */
66#define G_ELI_FLAG_BOOT 0x00000002
67/* Detach on last close, if we were open for writing. */
68#define G_ELI_FLAG_WO_DETACH 0x00000004

--- 149 unchanged lines hidden (view full) ---

218 MD5Init(&ctx);
219 MD5Update(&ctx, data, p - data);
220 MD5Final(md->md_hash, &ctx);
221 if (bcmp(md->md_hash, p, 16) != 0)
222 return (EINVAL);
223 return (0);
224}
225static __inline int
62
63/* ON DISK FLAGS. */
64/* Use random, onetime keys. */
65#define G_ELI_FLAG_ONETIME 0x00000001
66/* Ask for the passphrase from the kernel, before mounting root. */
67#define G_ELI_FLAG_BOOT 0x00000002
68/* Detach on last close, if we were open for writing. */
69#define G_ELI_FLAG_WO_DETACH 0x00000004

--- 149 unchanged lines hidden (view full) ---

219 MD5Init(&ctx);
220 MD5Update(&ctx, data, p - data);
221 MD5Final(md->md_hash, &ctx);
222 if (bcmp(md->md_hash, p, 16) != 0)
223 return (EINVAL);
224 return (0);
225}
226static __inline int
226eli_metadata_decode_v1(const u_char *data, struct g_eli_metadata *md)
227eli_metadata_decode_v1v2(const u_char *data, struct g_eli_metadata *md)
227{
228 MD5_CTX ctx;
229 const u_char *p;
230
231 p = data + sizeof(md->md_magic) + sizeof(md->md_version);
232 md->md_flags = le32dec(p); p += sizeof(md->md_flags);
233 md->md_ealgo = le16dec(p); p += sizeof(md->md_ealgo);
234 md->md_keylen = le16dec(p); p += sizeof(md->md_keylen);

--- 18 unchanged lines hidden (view full) ---

253
254 bcopy(data, md->md_magic, sizeof(md->md_magic));
255 md->md_version = le32dec(data + sizeof(md->md_magic));
256 switch (md->md_version) {
257 case 0:
258 error = eli_metadata_decode_v0(data, md);
259 break;
260 case 1:
228{
229 MD5_CTX ctx;
230 const u_char *p;
231
232 p = data + sizeof(md->md_magic) + sizeof(md->md_version);
233 md->md_flags = le32dec(p); p += sizeof(md->md_flags);
234 md->md_ealgo = le16dec(p); p += sizeof(md->md_ealgo);
235 md->md_keylen = le16dec(p); p += sizeof(md->md_keylen);

--- 18 unchanged lines hidden (view full) ---

254
255 bcopy(data, md->md_magic, sizeof(md->md_magic));
256 md->md_version = le32dec(data + sizeof(md->md_magic));
257 switch (md->md_version) {
258 case 0:
259 error = eli_metadata_decode_v0(data, md);
260 break;
261 case 1:
261 error = eli_metadata_decode_v1(data, md);
262 case 2:
263 error = eli_metadata_decode_v1v2(data, md);
262 break;
263 default:
264 error = EINVAL;
265 break;
266 }
267 return (error);
268}
269#endif /* !_OpenSSL */

--- 214 unchanged lines hidden ---
264 break;
265 default:
266 error = EINVAL;
267 break;
268 }
269 return (error);
270}
271#endif /* !_OpenSSL */

--- 214 unchanged lines hidden ---