static int fencode(FILE *in, FILE *out) { off_t pos; char *encbuf = NULL; size_t buflen; size_t count; pos = 0; while(!feof(in)) { char *ptr; count = fread(buf, 1, sizeof(buf), in); if ( count <= 0 ) return -1; buflen = base32encsize(count); ptr = realloc(encbuf, pos+buflen); if ( !ptr ) die(ENOMEM, "Out of memory while requesting realloc"); encbuf = ptr; buflen = base32enc(encbuf+pos, buf, count); fwrite(encbuf+pos, 1, buflen, out); pos += buflen; } return 0; }
vector<string> encrypt (vector<string> clrtxt, string keystr, primenc_et contprimenc, contenc_et contsecenc) { byte primencarr[CIPHERLEN*2+10]; uint32_t i; vector<string> encvec; for(i=0;i<clrtxt.size();i++){ if(NO_CONTENC == contsecenc){ nodec(primencarr, clrtxt[i]); }else if(AES_128 == contsecenc){ AESencs(primencarr, clrtxt[i], keystr); }else{ cout << "This secondary encoding is not supported yet." << endl; throw contsecenc; } if(NO_PRIMENC == contprimenc){ encvec.push_back(nocrypt(primencarr)); }else if(BASE64 == contprimenc){ encvec.push_back(base64enc(primencarr, CIPHERLEN)); }else if(BASE32 == contprimenc){ encvec.push_back(base32enc(primencarr, CIPHERLEN)); }else if(BASE16 == contprimenc){ encvec.push_back(base16enc(primencarr, CIPHERLEN)); }else{ cout << "This primary encoding is not supported yet." << endl; throw contprimenc; } } return encvec; }