Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Wim Lewis
nettle
Commits
3a75965e
Commit
3a75965e
authored
Sep 09, 2001
by
Niels Möller
Browse files
* des3.c: New file, implementing triple des.
Rev: src/nettle/des3.c:1.1
parent
97829771
Changes
1
Hide whitespace changes
Inline
Side-by-side
des3.c
0 → 100644
View file @
3a75965e
/* des3.h
*
* Triple DES cipher. Three key encrypt-decrypt-encrypt.
*/
/* nettle, low-level cryptographics library
*
* Copyright (C) 2001 Niels Mller
*
* The nettle library is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or (at your
* option) any later version.
*
* The nettle library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with the nettle library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
* MA 02111-1307, USA.
*/
#include
"des.h"
/* It's possible to make some more general pipe construction, like the
* lsh/src/cascade.c, but as in practice it's never used for anything
* like triple DES, it's not worth the effort. */
/* On success, returns 1 and sets ctx->status to DES_OK (zero). On
* error, returns 0 and sets ctx->status accordingly. */
int
des3_set_key
(
struct
des3_ctx
*
ctx
,
const
uint8_t
*
key
)
{
unsigned
i
;
for
(
i
=
0
;
i
<
3
;
i
++
,
key
+=
DES_KEY_SIZE
)
if
(
!
des_set_key
(
&
ctx
->
des
[
i
],
key
))
{
ctx
->
status
=
ctx
->
des
[
i
].
status
;
return
0
;
}
ctx
->
status
=
DES_OK
;
return
1
;
}
void
des3_encrypt
(
struct
des3_ctx
*
ctx
,
unsigned
length
,
uint8_t
*
dst
,
const
uint8_t
*
src
)
{
des_encrypt
(
&
ctx
->
des
[
0
],
length
,
dst
,
src
);
des_decrypt
(
&
ctx
->
des
[
1
],
length
,
dst
,
dst
);
des_encrypt
(
&
ctx
->
des
[
2
],
length
,
dst
,
dst
);
}
void
des3_decrypt
(
struct
des3_ctx
*
ctx
,
unsigned
length
,
uint8_t
*
dst
,
const
uint8_t
*
src
)
{
des_decrypt
(
&
ctx
->
des
[
2
],
length
,
dst
,
src
);
des_encrypt
(
&
ctx
->
des
[
1
],
length
,
dst
,
dst
);
des_decrypt
(
&
ctx
->
des
[
0
],
length
,
dst
,
dst
);
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment