diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-04-11 20:27:50 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2016-04-11 20:27:50 +0200 |
commit | 8f4db30e7865232f9179f5850fe0e1ca759302cc (patch) | |
tree | 2b6639bde08c3f2bc8af5f0b965b70de059e35b2 | |
parent | 464763202be7bdafa703c8c2ecfe1f4a5142f26f (diff) |
gs: replace openssl aes implementation with ape/libsec
-rw-r--r-- | sys/src/cmd/gs/mkfile | 3 | ||||
-rw-r--r-- | sys/src/cmd/gs/src/saes.c | 11 | ||||
-rw-r--r-- | sys/src/cmd/gs/src/saes.h | 6 |
3 files changed, 11 insertions, 9 deletions
diff --git a/sys/src/cmd/gs/mkfile b/sys/src/cmd/gs/mkfile index 2567b2ddb..50f162bf4 100644 --- a/sys/src/cmd/gs/mkfile +++ b/sys/src/cmd/gs/mkfile @@ -64,8 +64,7 @@ BIN=/$objtype/bin TARG=gs OFILES=\ obj/gs.$O\ - `{sed 's#^./obj/(.*)\.o .*#obj/\1.$O#' src/ld.tr >[2] /dev/null | sort} \ - /$objtype/lib/ape/libcrypto.a + `{sed 's#^./obj/(.*)\.o .*#obj/\1.$O#' src/ld.tr >[2] /dev/null | sort} # The first driver is the default. DRIVERS=\ diff --git a/sys/src/cmd/gs/src/saes.c b/sys/src/cmd/gs/src/saes.c index 14d60dd77..552b0529b 100644 --- a/sys/src/cmd/gs/src/saes.c +++ b/sys/src/cmd/gs/src/saes.c @@ -102,19 +102,20 @@ s_aes_process(stream_state * ss, stream_cursor_read * pr, if (state->keylength < 1 || state->keylength > SAES_MAX_KEYLENGTH) return ERRC; if (!state->initialized) { - memset(&state->aes, 0, sizeof(state->aes)); - AES_set_decrypt_key(state->key, state->keylength*8, &state->aes); + if (in_size < 16) return 0; /* get more data */ /* read the initialization vector from the first 16 bytes */ - if (in_size < 16) return 0; /* get more data */ memcpy(state->iv, pr->ptr + 1, 16); - state->initialized = 1; pr->ptr += 16; + + setupAESstate(&state->aes, state->key, state->keylength, state->iv); + state->initialized = 1; } /* decrypt available blocks */ while (pr->ptr + 16 <= limit) { - AES_cbc_encrypt(pr->ptr + 1, temp, 16, &state->aes, state->iv, AES_DECRYPT); + memcpy(temp, pr->ptr + 1, 16); + aesCBCdecrypt(temp, 16, &state->aes); pr->ptr += 16; if (last && pr->ptr == pr->limit) { /* we're on the last block; unpad if necessary */ diff --git a/sys/src/cmd/gs/src/saes.h b/sys/src/cmd/gs/src/saes.h index a11695145..53f73e73f 100644 --- a/sys/src/cmd/gs/src/saes.h +++ b/sys/src/cmd/gs/src/saes.h @@ -21,7 +21,9 @@ # define saes_INCLUDED #include "scommon.h" -#include <openssl/aes.h> + +#define _PLAN9_SOURCE +#include <libsec.h> /* maximum supported key length in bytes */ #define SAES_MAX_KEYLENGTH 32 @@ -36,7 +38,7 @@ struct stream_aes_state_s unsigned char iv[16]; /* CBC initialization vector */ int initialized; /* whether we're set up */ int use_padding; /* are we using RFC 1423-style padding? */ - AES_KEY aes; + AESstate aes; }; #ifndef stream_aes_state_DEFINED |