hc
2024-02-19 1c055e55a242a33e574e48be530e06770a210dcd
kernel/net/sunrpc/auth_gss/gss_krb5_seqnum.c
....@@ -39,56 +39,15 @@
3939 # define RPCDBG_FACILITY RPCDBG_AUTH
4040 #endif
4141
42
-static s32
43
-krb5_make_rc4_seq_num(struct krb5_ctx *kctx, int direction, s32 seqnum,
44
- unsigned char *cksum, unsigned char *buf)
45
-{
46
- struct crypto_skcipher *cipher;
47
- unsigned char *plain;
48
- s32 code;
49
-
50
- dprintk("RPC: %s:\n", __func__);
51
- cipher = crypto_alloc_skcipher(kctx->gk5e->encrypt_name, 0,
52
- CRYPTO_ALG_ASYNC);
53
- if (IS_ERR(cipher))
54
- return PTR_ERR(cipher);
55
-
56
- plain = kmalloc(8, GFP_NOFS);
57
- if (!plain)
58
- return -ENOMEM;
59
-
60
- plain[0] = (unsigned char) ((seqnum >> 24) & 0xff);
61
- plain[1] = (unsigned char) ((seqnum >> 16) & 0xff);
62
- plain[2] = (unsigned char) ((seqnum >> 8) & 0xff);
63
- plain[3] = (unsigned char) ((seqnum >> 0) & 0xff);
64
- plain[4] = direction;
65
- plain[5] = direction;
66
- plain[6] = direction;
67
- plain[7] = direction;
68
-
69
- code = krb5_rc4_setup_seq_key(kctx, cipher, cksum);
70
- if (code)
71
- goto out;
72
-
73
- code = krb5_encrypt(cipher, cksum, plain, buf, 8);
74
-out:
75
- crypto_free_skcipher(cipher);
76
- kfree(plain);
77
- return code;
78
-}
7942 s32
8043 krb5_make_seq_num(struct krb5_ctx *kctx,
81
- struct crypto_skcipher *key,
44
+ struct crypto_sync_skcipher *key,
8245 int direction,
8346 u32 seqnum,
8447 unsigned char *cksum, unsigned char *buf)
8548 {
8649 unsigned char *plain;
8750 s32 code;
88
-
89
- if (kctx->enctype == ENCTYPE_ARCFOUR_HMAC)
90
- return krb5_make_rc4_seq_num(kctx, direction, seqnum,
91
- cksum, buf);
9251
9352 plain = kmalloc(8, GFP_NOFS);
9453 if (!plain)
....@@ -109,51 +68,6 @@
10968 return code;
11069 }
11170
112
-static s32
113
-krb5_get_rc4_seq_num(struct krb5_ctx *kctx, unsigned char *cksum,
114
- unsigned char *buf, int *direction, s32 *seqnum)
115
-{
116
- struct crypto_skcipher *cipher;
117
- unsigned char *plain;
118
- s32 code;
119
-
120
- dprintk("RPC: %s:\n", __func__);
121
- cipher = crypto_alloc_skcipher(kctx->gk5e->encrypt_name, 0,
122
- CRYPTO_ALG_ASYNC);
123
- if (IS_ERR(cipher))
124
- return PTR_ERR(cipher);
125
-
126
- code = krb5_rc4_setup_seq_key(kctx, cipher, cksum);
127
- if (code)
128
- goto out;
129
-
130
- plain = kmalloc(8, GFP_NOFS);
131
- if (!plain) {
132
- code = -ENOMEM;
133
- goto out;
134
- }
135
-
136
- code = krb5_decrypt(cipher, cksum, buf, plain, 8);
137
- if (code)
138
- goto out_plain;
139
-
140
- if ((plain[4] != plain[5]) || (plain[4] != plain[6])
141
- || (plain[4] != plain[7])) {
142
- code = (s32)KG_BAD_SEQ;
143
- goto out_plain;
144
- }
145
-
146
- *direction = plain[4];
147
-
148
- *seqnum = ((plain[0] << 24) | (plain[1] << 16) |
149
- (plain[2] << 8) | (plain[3]));
150
-out_plain:
151
- kfree(plain);
152
-out:
153
- crypto_free_skcipher(cipher);
154
- return code;
155
-}
156
-
15771 s32
15872 krb5_get_seq_num(struct krb5_ctx *kctx,
15973 unsigned char *cksum,
....@@ -161,14 +75,11 @@
16175 int *direction, u32 *seqnum)
16276 {
16377 s32 code;
164
- struct crypto_skcipher *key = kctx->seq;
16578 unsigned char *plain;
79
+ struct crypto_sync_skcipher *key = kctx->seq;
16680
16781 dprintk("RPC: krb5_get_seq_num:\n");
16882
169
- if (kctx->enctype == ENCTYPE_ARCFOUR_HMAC)
170
- return krb5_get_rc4_seq_num(kctx, cksum, buf,
171
- direction, seqnum);
17283 plain = kmalloc(8, GFP_NOFS);
17384 if (!plain)
17485 return -ENOMEM;