static int eiCheckFiletype(FILE *eifp) { char rectype[EIF_MAX_RECTYPE_LEN+1]; char value[EIF_MAX_VALUE_LEN+1]; int r; if((r = eiGetRecord(eifp, rectype, value)) != 0) goto done; if(strcmp(rectype, "FILETYPE") || strcmp(value, RSGCRY_FILETYPE_NAME)) { fprintf(stderr, "invalid filetype \"cookie\" in encryption " "info file\n"); fprintf(stderr, "\trectype: '%s', value: '%s'\n", rectype, value); r = 1; goto done; } r = 0; done: return r; }
static int eiGetEND(FILE *eifp, off64_t *offs) { char rectype[EIF_MAX_RECTYPE_LEN+1]; char value[EIF_MAX_VALUE_LEN+1]; int r; if((r = eiGetRecord(eifp, rectype, value)) != 0) goto done; if(strcmp(rectype, "END")) { fprintf(stderr, "no END record found when expected, record type " "seen is '%s'\n", rectype); r = 1; goto done; } *offs = atoll(value); r = 0; done: return r; }
static rsRetVal eiGetEND(gcryfile gf, off64_t *offs) { char rectype[EIF_MAX_RECTYPE_LEN+1]; char value[EIF_MAX_VALUE_LEN+1]; DEFiRet; CHKiRet(eiGetRecord(gf, rectype, value)); if(strcmp(rectype, "END")) { DBGPRINTF("no END record found when expected, record type " "seen is '%s'\n", rectype); ABORT_FINALIZE(RS_RET_ERR); } *offs = atoll(value); finalize_it: RETiRet; }
static int eiGetIV(FILE *eifp, char *iv, size_t leniv) { char rectype[EIF_MAX_RECTYPE_LEN+1]; char value[EIF_MAX_VALUE_LEN+1]; size_t valueLen; unsigned short i, j; int r; unsigned char nibble; if((r = eiGetRecord(eifp, rectype, value)) != 0) goto done; if(strcmp(rectype, "IV")) { fprintf(stderr, "no IV record found when expected, record type " "seen is '%s'\n", rectype); r = 1; goto done; } valueLen = strlen(value); if(valueLen/2 != leniv) { fprintf(stderr, "length of IV is %d, expected %d\n", valueLen/2, leniv); r = 1; goto done; } for(i = j = 0 ; i < valueLen ; ++i) { if(value[i] >= '0' && value[i] <= '9') nibble = value[i] - '0'; else if(value[i] >= 'a' && value[i] <= 'f') nibble = value[i] - 'a' + 10; else { fprintf(stderr, "invalid IV '%s'\n", value); r = 1; goto done; } if(i % 2 == 0) iv[j] = nibble << 4; else iv[j++] |= nibble; } r = 0; done: return r; }
static rsRetVal eiGetIV(gcryfile gf, uchar *iv, size_t leniv) { char rectype[EIF_MAX_RECTYPE_LEN+1]; char value[EIF_MAX_VALUE_LEN+1]; size_t valueLen; unsigned short i, j; unsigned char nibble; DEFiRet; CHKiRet(eiGetRecord(gf, rectype, value)); if(strcmp(rectype, "IV")) { DBGPRINTF("no IV record found when expected, record type " "seen is '%s'\n", rectype); ABORT_FINALIZE(RS_RET_ERR); } valueLen = strlen(value); if(valueLen/2 != leniv) { DBGPRINTF("length of IV is %zd, expected %zd\n", valueLen/2, leniv); ABORT_FINALIZE(RS_RET_ERR); } for(i = j = 0 ; i < valueLen ; ++i) { if(value[i] >= '0' && value[i] <= '9') nibble = value[i] - '0'; else if(value[i] >= 'a' && value[i] <= 'f') nibble = value[i] - 'a' + 10; else { DBGPRINTF("invalid IV '%s'\n", value); ABORT_FINALIZE(RS_RET_ERR); } if(i % 2 == 0) iv[j] = nibble << 4; else iv[j++] |= nibble; } finalize_it: RETiRet; }