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
include
crypto
public_key.h
Go to the documentation of this file.
1
/* Asymmetric public-key algorithm definitions
2
*
3
* See Documentation/crypto/asymmetric-keys.txt
4
*
5
* Copyright (C) 2012 Red Hat, Inc. All Rights Reserved.
6
* Written by David Howells (
[email protected]
)
7
*
8
* This program is free software; you can redistribute it and/or
9
* modify it under the terms of the GNU General Public Licence
10
* as published by the Free Software Foundation; either version
11
* 2 of the Licence, or (at your option) any later version.
12
*/
13
14
#ifndef _LINUX_PUBLIC_KEY_H
15
#define _LINUX_PUBLIC_KEY_H
16
17
#include <
linux/mpi.h
>
18
19
enum
pkey_algo
{
20
PKEY_ALGO_DSA
,
21
PKEY_ALGO_RSA
,
22
PKEY_ALGO__LAST
23
};
24
25
extern
const
char
*
const
pkey_algo
[
PKEY_ALGO__LAST
];
26
27
enum
pkey_hash_algo
{
28
PKEY_HASH_MD4
,
29
PKEY_HASH_MD5
,
30
PKEY_HASH_SHA1
,
31
PKEY_HASH_RIPE_MD_160
,
32
PKEY_HASH_SHA256
,
33
PKEY_HASH_SHA384
,
34
PKEY_HASH_SHA512
,
35
PKEY_HASH_SHA224
,
36
PKEY_HASH__LAST
37
};
38
39
extern
const
char
*
const
pkey_hash_algo
[
PKEY_HASH__LAST
];
40
41
enum
pkey_id_type
{
42
PKEY_ID_PGP
,
/* OpenPGP generated key ID */
43
PKEY_ID_X509
,
/* X.509 arbitrary subjectKeyIdentifier */
44
PKEY_ID_TYPE__LAST
45
};
46
47
extern
const
char
*
const
pkey_id_type
[
PKEY_ID_TYPE__LAST
];
48
49
/*
50
* Cryptographic data for the public-key subtype of the asymmetric key type.
51
*
52
* Note that this may include private part of the key as well as the public
53
* part.
54
*/
55
struct
public_key
{
56
const
struct
public_key_algorithm
*
algo
;
57
u8
capabilities
;
58
#define PKEY_CAN_ENCRYPT 0x01
59
#define PKEY_CAN_DECRYPT 0x02
60
#define PKEY_CAN_SIGN 0x04
61
#define PKEY_CAN_VERIFY 0x08
62
enum
pkey_id_type
id_type : 8;
63
union
{
64
MPI
mpi
[5];
65
struct
{
66
MPI
p
;
/* DSA prime */
67
MPI
q
;
/* DSA group order */
68
MPI
g
;
/* DSA group generator */
69
MPI
y
;
/* DSA public-key value = g^x mod p */
70
MPI
x
;
/* DSA secret exponent (if present) */
71
}
dsa
;
72
struct
{
73
MPI
n
;
/* RSA public modulus */
74
MPI
e
;
/* RSA public encryption exponent */
75
MPI
d
;
/* RSA secret encryption exponent (if present) */
76
MPI
p
;
/* RSA secret prime (if present) */
77
MPI
q
;
/* RSA secret prime (if present) */
78
}
rsa
;
79
};
80
};
81
82
extern
void
public_key_destroy
(
void
*
payload
);
83
84
/*
85
* Public key cryptography signature data
86
*/
87
struct
public_key_signature
{
88
u8
*
digest
;
89
u8
digest_size
;
/* Number of bytes in digest */
90
u8
nr_mpi
;
/* Occupancy of mpi[] */
91
enum
pkey_hash_algo
pkey_hash_algo
: 8;
92
union
{
93
MPI
mpi
[2];
94
struct
{
95
MPI
s
;
/* m^d mod n */
96
}
rsa
;
97
struct
{
98
MPI
r
;
99
MPI
s
;
100
}
dsa
;
101
};
102
};
103
104
struct
key
;
105
extern
int
verify_signature
(
const
struct
key
*
key
,
106
const
struct
public_key_signature
*
sig
);
107
108
#endif
/* _LINUX_PUBLIC_KEY_H */
Generated on Thu Jan 10 2013 13:22:52 for Linux Kernel by
1.8.2