From b586255b0dc1d6940c4a552a7125c9875e8adba6 Mon Sep 17 00:00:00 2001 From: Benedict Date: Mon, 21 Mar 2016 23:06:08 +0100 Subject: completed set2. challenge 15 wait this is not the given order. Whaaats upp? Carzy guy! --- lib/lib2.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'lib/lib2.c') diff --git a/lib/lib2.c b/lib/lib2.c index fe65bb8..49f7363 100644 --- a/lib/lib2.c +++ b/lib/lib2.c @@ -23,6 +23,34 @@ char *pkcs7_padding(char *string, int length_string, int blocksize) return result; } +/** + * 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 -- cgit v1.2.3-70-g09d2