]>
git.ipfire.org Git - thirdparty/strongswan.git/blob - scripts/crypt_burn.c
2 * Copyright (C) 2010 Martin Willi
3 * Copyright (C) 2010 revosec AG
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the
7 * Free Software Foundation; either version 2 of the License, or (at your
8 * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
18 #include <crypto/proposal/proposal_keywords.h>
20 int main(int argc
, char *argv
[])
22 const proposal_token_t
*token
;
25 char buffer
[1024], assoc
[8], iv
[32];
31 lib
->plugins
->load(lib
->plugins
, NULL
, PLUGINS
);
32 atexit(library_deinit
);
34 printf("loaded: %s\n", PLUGINS
);
36 memset(buffer
, 0x12, sizeof(buffer
));
37 memset(assoc
, 0x34, sizeof(assoc
));
38 memset(iv
, 0x56, sizeof(iv
));
42 fprintf(stderr
, "usage: %s <algorithm>!\n", argv
[0]);
47 limit
= atoi(argv
[2]);
50 token
= proposal_get_token(argv
[1], strlen(argv
[1]));
53 fprintf(stderr
, "algorithm '%s' unknown!\n", argv
[1]);
56 if (token
->type
!= ENCRYPTION_ALGORITHM
)
58 fprintf(stderr
, "'%s' is not an encryption/aead algorithm!\n", argv
[1]);
62 if (encryption_algorithm_is_aead(token
->algorithm
))
64 aead
= lib
->crypto
->create_aead(lib
->crypto
,
65 token
->algorithm
, token
->keysize
/ 8);
68 fprintf(stderr
, "aead '%s' not supported!\n", argv
[1]);
73 if (!aead
->encrypt(aead
,
74 chunk_create(buffer
, sizeof(buffer
) - aead
->get_icv_size(aead
)),
75 chunk_from_thing(assoc
),
76 chunk_create(iv
, aead
->get_iv_size(aead
)), NULL
))
78 fprintf(stderr
, "aead encryption failed!\n");
81 if (!aead
->decrypt(aead
, chunk_create(buffer
, sizeof(buffer
)),
82 chunk_from_thing(assoc
),
83 chunk_create(iv
, aead
->get_iv_size(aead
)), NULL
))
85 fprintf(stderr
, "aead integrity check failed!\n");
88 if (limit
&& ++i
== limit
)
96 crypter
= lib
->crypto
->create_crypter(lib
->crypto
,
97 token
->algorithm
, token
->keysize
/ 8);
100 fprintf(stderr
, "crypter '%s' not supported!\n", argv
[1]);
103 bs
= crypter
->get_block_size(crypter
);
107 if (!crypter
->encrypt(crypter
,
108 chunk_create(buffer
, sizeof(buffer
) / bs
* bs
),
109 chunk_create(iv
, crypter
->get_iv_size(crypter
)), NULL
))
113 if (!crypter
->decrypt(crypter
,
114 chunk_create(buffer
, sizeof(buffer
) / bs
* bs
),
115 chunk_create(iv
, crypter
->get_iv_size(crypter
)), NULL
))
119 if (limit
&& ++i
== limit
)