root / lab4 / .minix-src / include / x86 / via_padlock.h @ 14
History | View | Annotate | Download (2.79 KB)
1 | 13 | up20180614 | /* $NetBSD: via_padlock.h,v 1.8 2015/04/13 16:03:51 riastradh Exp $ */
|
---|---|---|---|
2 | |||
3 | /*-
|
||
4 | * Copyright (c) 2003 Jason Wright
|
||
5 | * Copyright (c) 2003, 2004 Theo de Raadt
|
||
6 | * All rights reserved.
|
||
7 | *
|
||
8 | * Permission to use, copy, modify, and distribute this software for any
|
||
9 | * purpose with or without fee is hereby granted, provided that the above
|
||
10 | * copyright notice and this permission notice appear in all copies.
|
||
11 | *
|
||
12 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||
13 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||
14 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||
15 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||
16 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||
17 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||
18 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||
19 | */
|
||
20 | |||
21 | #ifndef _X86_VIA_PADLOCK_H_
|
||
22 | #define _X86_VIA_PADLOCK_H_
|
||
23 | |||
24 | #if defined(_KERNEL)
|
||
25 | |||
26 | #include <sys/rndsource.h> |
||
27 | #include <sys/callout.h> |
||
28 | #include <crypto/rijndael/rijndael.h> |
||
29 | |||
30 | /* VIA C3 xcrypt-* instruction context control options */
|
||
31 | #define C3_CRYPT_CWLO_ROUND_M 0x0000000f |
||
32 | #define C3_CRYPT_CWLO_ALG_M 0x00000070 |
||
33 | #define C3_CRYPT_CWLO_ALG_AES 0x00000000 |
||
34 | #define C3_CRYPT_CWLO_KEYGEN_M 0x00000080 |
||
35 | #define C3_CRYPT_CWLO_KEYGEN_HW 0x00000000 |
||
36 | #define C3_CRYPT_CWLO_KEYGEN_SW 0x00000080 |
||
37 | #define C3_CRYPT_CWLO_NORMAL 0x00000000 |
||
38 | #define C3_CRYPT_CWLO_INTERMEDIATE 0x00000100 |
||
39 | #define C3_CRYPT_CWLO_ENCRYPT 0x00000000 |
||
40 | #define C3_CRYPT_CWLO_DECRYPT 0x00000200 |
||
41 | #define C3_CRYPT_CWLO_KEY128 0x0000000a /* 128bit, 10 rds */ |
||
42 | #define C3_CRYPT_CWLO_KEY192 0x0000040c /* 192bit, 12 rds */ |
||
43 | #define C3_CRYPT_CWLO_KEY256 0x0000080e /* 256bit, 15 rds */ |
||
44 | |||
45 | struct via_padlock_session {
|
||
46 | uint32_t ses_ekey[4 * (RIJNDAEL_MAXNR + 1) + 4]; /* 128 bit aligned */ |
||
47 | uint32_t ses_dkey[4 * (RIJNDAEL_MAXNR + 1) + 4]; /* 128 bit aligned */ |
||
48 | uint8_t ses_iv[16]; /* 128 bit aligned */ |
||
49 | uint32_t ses_cw0; |
||
50 | struct swcr_data *swd;
|
||
51 | int ses_klen;
|
||
52 | int ses_used;
|
||
53 | }; |
||
54 | |||
55 | struct via_padlock_softc {
|
||
56 | device_t sc_dev; |
||
57 | |||
58 | uint32_t op_cw[4]; /* 128 bit aligned */ |
||
59 | uint8_t op_iv[16]; /* 128 bit aligned */ |
||
60 | void *op_buf;
|
||
61 | |||
62 | int sc_rnd_hz;
|
||
63 | struct callout sc_rnd_co;
|
||
64 | krndsource_t sc_rnd_source; |
||
65 | bool sc_rnd_attached;
|
||
66 | |||
67 | /* normal softc stuff */
|
||
68 | int32_t sc_cid; |
||
69 | bool sc_cid_attached;
|
||
70 | int sc_nsessions;
|
||
71 | struct via_padlock_session *sc_sessions;
|
||
72 | }; |
||
73 | |||
74 | #define VIAC3_SESSION(sid) ((sid) & 0x0fffffff) |
||
75 | #define VIAC3_SID(crd,ses) (((crd) << 28) | ((ses) & 0x0fffffff)) |
||
76 | |||
77 | #define VIAC3_RNG_BUFSIZ 16 |
||
78 | |||
79 | #endif /* _KERNEL */ |
||
80 | |||
81 | #if defined(_KERNEL) || defined(_KMEMUSER)
|
||
82 | struct cpu_info;
|
||
83 | |||
84 | struct via_padlock {
|
||
85 | struct cpu_info *vp_ci;
|
||
86 | int vp_freq;
|
||
87 | }; |
||
88 | |||
89 | #endif /* _KERNEL || _KMEMUSER */ |
||
90 | #endif /* _X86_VIA_PADLOCK_H_ */ |