int encode_data(unsigned char *dst, int dst_len, unsigned char *src, int src_len, int rand) { int i, b, x, srcb_len=src_len<<3; unsigned char *srcb = malloc(srcb_len * sizeof *srcb); if(dst_len != (src_len<<3)) return(-1); // store bits into srcb x=0; memset(srcb, 0, srcb_len); for(i=0; i<src_len; i++) { for(b=0; b<8; b++) { srcb[x] = ENCODE_BIT(srcb[x], src[i], b); x++; } } // Shuffle bytes randomly if necessary if(rand == 1) prng_array_shuffle(srcb, (unsigned int)srcb_len); // Set destination bits for(i=0; i<dst_len; i++) { dst[i] = ENCODE_BIT(dst[i], srcb[i], 7); } free(srcb); return(0); }
void BIO_Stdio_Encode_Bit (int bit, stdio_bitio_state * bs) { ENCODE_CONTINUE (*bs) ENCODE_BIT (bit); ENCODE_PAUSE (*bs) }