diff options
| author | Benedict <benedict@0xb8000.de> | 2016-03-21 23:06:08 +0100 |
|---|---|---|
| committer | Benedict <benedict@0xb8000.de> | 2017-02-21 13:00:25 +0100 |
| commit | b586255b0dc1d6940c4a552a7125c9875e8adba6 (patch) | |
| tree | fef42cc9bd579b022f519f1208e80c5d84b4a5f3 /lib/lib2.c | |
| parent | 27a1b8050d2170b40024fe82cb27088f3c676f26 (diff) | |
completed set2. challenge 15
wait this is not the given order. Whaaats upp? Carzy guy!
Diffstat (limited to 'lib/lib2.c')
| -rw-r--r-- | lib/lib2.c | 28 |
1 files changed, 28 insertions, 0 deletions
@@ -24,6 +24,34 @@ char *pkcs7_padding(char *string, int length_string, int blocksize) } /** + * unpadd a string + * @param in string which should be unpadded + * @param length_in length of paramter length_in + * @param unpadded place where the unpadded text should be stored + * @param blocksize size of the block to which should be padded + */ +int valid_pkcs7_padding(const char *in, int length_in, char *unpadded, int blocksize) +{ + int i, padding_length; + // look how many equal bytes are at the end + // ignore last byte \0 + for(i=length_in-1;i>0;i--) { + if(in[i] != in[i-1]) + break; + } + + padding_length = length_in - i; + if ((length_in % padding_length) != 0) + return 0; + + if(in[length_in-1] != padding_length) + return 0; + + memcpy(unpadded, in, (length_in-padding_length)); + return 1; +} + +/** * decrypts content which is encrypted in AES CBC mode * @param in input content * @param length_in length of parametere in |
