Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
security
keys
encrypted-keys
ecryptfs_format.c
Go to the documentation of this file.
1
/*
2
* ecryptfs_format.c: helper functions for the encrypted key type
3
*
4
* Copyright (C) 2006 International Business Machines Corp.
5
* Copyright (C) 2010 Politecnico di Torino, Italy
6
* TORSEC group -- http://security.polito.it
7
*
8
* Authors:
9
* Michael A. Halcrow <
[email protected]
>
10
* Tyler Hicks <
[email protected]
>
11
* Roberto Sassu <
[email protected]
>
12
*
13
* This program is free software; you can redistribute it and/or modify
14
* it under the terms of the GNU General Public License as published by
15
* the Free Software Foundation, version 2 of the License.
16
*/
17
18
#include <linux/module.h>
19
#include "
ecryptfs_format.h
"
20
21
u8
*
ecryptfs_get_auth_tok_key
(
struct
ecryptfs_auth_tok
*auth_tok)
22
{
23
return
auth_tok->
token
.
password
.session_key_encryption_key;
24
}
25
EXPORT_SYMBOL
(
ecryptfs_get_auth_tok_key
);
26
27
/*
28
* ecryptfs_get_versions()
29
*
30
* Source code taken from the software 'ecryptfs-utils' version 83.
31
*
32
*/
33
void
ecryptfs_get_versions
(
int
*major,
int
*minor,
int
*file_version)
34
{
35
*major =
ECRYPTFS_VERSION_MAJOR
;
36
*minor =
ECRYPTFS_VERSION_MINOR
;
37
if
(file_version)
38
*file_version =
ECRYPTFS_SUPPORTED_FILE_VERSION
;
39
}
40
EXPORT_SYMBOL
(
ecryptfs_get_versions
);
41
42
/*
43
* ecryptfs_fill_auth_tok - fill the ecryptfs_auth_tok structure
44
*
45
* Fill the ecryptfs_auth_tok structure with required ecryptfs data.
46
* The source code is inspired to the original function generate_payload()
47
* shipped with the software 'ecryptfs-utils' version 83.
48
*
49
*/
50
int
ecryptfs_fill_auth_tok
(
struct
ecryptfs_auth_tok
*auth_tok,
51
const
char
*key_desc)
52
{
53
int
major
,
minor
;
54
55
ecryptfs_get_versions
(&major, &minor,
NULL
);
56
auth_tok->
version
= (((
uint16_t
)(major << 8) & 0xFF00)
57
| ((
uint16_t
)minor & 0x00FF));
58
auth_tok->
token_type
=
ECRYPTFS_PASSWORD
;
59
strncpy
((
char
*)auth_tok->
token
.
password
.signature, key_desc,
60
ECRYPTFS_PASSWORD_SIG_SIZE
);
61
auth_tok->
token
.
password
.session_key_encryption_key_bytes =
62
ECRYPTFS_MAX_KEY_BYTES
;
63
/*
64
* Removed auth_tok->token.password.salt and
65
* auth_tok->token.password.session_key_encryption_key
66
* initialization from the original code
67
*/
68
/* TODO: Make the hash parameterizable via policy */
69
auth_tok->
token
.
password
.flags |=
70
ECRYPTFS_SESSION_KEY_ENCRYPTION_KEY_SET
;
71
/* The kernel code will encrypt the session key. */
72
auth_tok->
session_key
.encrypted_key[0] = 0;
73
auth_tok->
session_key
.encrypted_key_size = 0;
74
/* Default; subject to change by kernel eCryptfs */
75
auth_tok->
token
.
password
.hash_algo =
PGP_DIGEST_ALGO_SHA512
;
76
auth_tok->
token
.
password
.flags &= ~(
ECRYPTFS_PERSISTENT_PASSWORD
);
77
return
0;
78
}
79
EXPORT_SYMBOL
(
ecryptfs_fill_auth_tok
);
80
81
MODULE_LICENSE
(
"GPL"
);
Generated on Thu Jan 10 2013 15:03:12 for Linux Kernel by
1.8.2