diff options
| author | Matthew Garrett <mjg@redhat.com> | 2012-06-18 17:49:57 -0400 |
|---|---|---|
| committer | Matthew Garrett <mjg@redhat.com> | 2012-06-18 17:49:57 -0400 |
| commit | 9579a3633657f0adb26e975fca191e0a49474e82 (patch) | |
| tree | 2d5c048c92fabf912a95db35c54a50287794056e /Cryptlib/OpenSSL/crypto/comp/c_rle.c | |
| parent | 661392464eee92684187e49812c63b9afed5675f (diff) | |
| download | efi-boot-shim-9579a3633657f0adb26e975fca191e0a49474e82.tar.gz efi-boot-shim-9579a3633657f0adb26e975fca191e0a49474e82.zip | |
Add crypto libraries
Diffstat (limited to 'Cryptlib/OpenSSL/crypto/comp/c_rle.c')
| -rwxr-xr-x | Cryptlib/OpenSSL/crypto/comp/c_rle.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/Cryptlib/OpenSSL/crypto/comp/c_rle.c b/Cryptlib/OpenSSL/crypto/comp/c_rle.c new file mode 100755 index 00000000..efd366fa --- /dev/null +++ b/Cryptlib/OpenSSL/crypto/comp/c_rle.c @@ -0,0 +1,62 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <openssl/objects.h> +#include <openssl/comp.h> + +static int rle_compress_block(COMP_CTX *ctx, unsigned char *out, + unsigned int olen, unsigned char *in, unsigned int ilen); +static int rle_expand_block(COMP_CTX *ctx, unsigned char *out, + unsigned int olen, unsigned char *in, unsigned int ilen); + +static COMP_METHOD rle_method={ + NID_rle_compression, + LN_rle_compression, + NULL, + NULL, + rle_compress_block, + rle_expand_block, + NULL, + NULL, + }; + +COMP_METHOD *COMP_rle(void) + { + return(&rle_method); + } + +static int rle_compress_block(COMP_CTX *ctx, unsigned char *out, + unsigned int olen, unsigned char *in, unsigned int ilen) + { + /* int i; */ + + if (olen < (ilen+1)) + { + /* ZZZZZZZZZZZZZZZZZZZZZZ */ + return(-1); + } + + *(out++)=0; + memcpy(out,in,ilen); + return(ilen+1); + } + +static int rle_expand_block(COMP_CTX *ctx, unsigned char *out, + unsigned int olen, unsigned char *in, unsigned int ilen) + { + int i; + + if (olen < (ilen-1)) + { + /* ZZZZZZZZZZZZZZZZZZZZZZ */ + return(-1); + } + + i= *(in++); + if (i == 0) + { + memcpy(out,in,ilen-1); + } + return(ilen-1); + } + |
