void runSuccess3() { struct crypt_data data; data.initialized = 0; char buf[64]; encrypt_r(buf, 1, &data); encrypt_r(buf, 0, &data); data.initialized = 0; encrypt_r(buf, 1, &data); }
void testValues() { f = 2; struct crypt_data data; data.initialized = 0; char buf[64]; encrypt_r(buf, 0, &data); //@ assert f == 2; //@ assert vacuous: \false; }
int DES_crypt::des_decrypt(ObString &user_name, int64_t ×tamp, const int64_t skey, char *buffer, int64_t buffer_length) { int err = OB_SUCCESS; if(buffer == NULL || buffer_length != OB_MAX_TOKEN_BUFFER_LENGTH) { err = OB_INVALID_ARGUMENT; TBSYS_LOG(WARN, "invalid argument.err=%d, buffer=%p,buffer_length =%ld", err, buffer, buffer_length); } if(OB_SUCCESS == err) { data_.initialized = 0; err = stringTobyte(keybyte_, OB_ENRYPT_KEY_BYTE, reinterpret_cast<const char*>(&skey), sizeof(int64_t)); if(err != OB_SUCCESS) { TBSYS_LOG(WARN, "fail to stringTobyte. err=%d", err); } else { setkey_r(keybyte_, &data_); } } if(OB_SUCCESS == err) { err = stringTobyte(txtbyte_, OB_ENCRYPT_TXT_BYTE, buffer, buffer_length); if(err != OB_SUCCESS) { TBSYS_LOG(WARN, "fail to tranlate to byte. err=%d", err); } } char *ptr = txtbyte_; if(OB_SUCCESS == err) { for(int64_t i = 0; i < buffer_length * OB_BYTE_NUM; i += OB_CRYPT_UNIT) { ptr = &txtbyte_[i]; encrypt_r(ptr, DECODE_FLAG, &data_); } } if(OB_SUCCESS == err) { err = byteTostring(buffer, buffer_length, txtbyte_, buffer_length * 8); if(err != OB_SUCCESS) { TBSYS_LOG(WARN, "fail to tranlate to string. err=%d", err); } } if(OB_SUCCESS == err) { int64_t pos = 0; int32_t magic_number = *(reinterpret_cast<const int32_t*>(buffer + pos)); if(magic_number != OB_CRYPT_MAGIC_NUM) { err = OB_DECRYPT_FAILED; TBSYS_LOG(WARN, "magic number not legal.maybe the wrong skey,or the wrong data, err = %d", err); } else { pos += sizeof(int32_t); int32_t user_name_length = *(reinterpret_cast<const int32_t*>(buffer + pos)); pos += sizeof(int32_t); user_name.assign_ptr(buffer + pos, user_name_length); pos += user_name_length; timestamp = *(reinterpret_cast<const int64_t*>(buffer + pos)); } } return err; }
int DES_crypt::des_encrypt(const ObString &user_name, const int64_t timestamp, const int64_t skey, char *buffer, int64_t &buffer_length) { int err = OB_SUCCESS; if(buffer_length <= (int64_t)(sizeof(int64_t) + 2 * sizeof(int32_t) + user_name.length()) || buffer_length % 8 != 0) { err = OB_INVALID_ARGUMENT; TBSYS_LOG(WARN, "invalid argument. buffer_length = %ld, should be 80", buffer_length); } if(OB_SUCCESS == err) { if(user_name.length() == 0) { err = OB_INVALID_ARGUMENT; TBSYS_LOG(WARN, "user_name should not be null. user_name.length=%d", user_name.length()); } } if(OB_SUCCESS == err) { data_.initialized = 0; err = stringTobyte(keybyte_, OB_ENRYPT_KEY_BYTE, reinterpret_cast<const char*>(&skey), sizeof(int64_t)); if(err != OB_SUCCESS) { TBSYS_LOG(WARN, "fail to stringTobyte. err=%d", err); } else { setkey_r(keybyte_, &data_); } } int64_t length = 0; if(OB_SUCCESS == err) { length = 2 * sizeof(int32_t) + sizeof(int64_t) + user_name.length(); original_txt_length_ = static_cast<int32_t>(length); err = pad(txtptr_, OB_MAX_TOKEN_BUFFER_LENGTH, length); if(OB_SUCCESS != err) { TBSYS_LOG(WARN, "fail to pad array. err=%d", err); } } int64_t pos = 0; if(OB_SUCCESS == err) { *(reinterpret_cast<int32_t*>(txtptr_ + pos)) = OB_CRYPT_MAGIC_NUM; pos += sizeof(int32_t); *(reinterpret_cast<int32_t*>(txtptr_ + pos)) = user_name.length(); pos += sizeof(int32_t); memcpy(txtptr_ + pos, user_name.ptr(), user_name.length()); pos += user_name.length(); *(reinterpret_cast<int64_t*>(txtptr_ + pos)) = timestamp; pos += sizeof(int64_t); } if(OB_SUCCESS == err) { err = stringTobyte(txtbyte_, OB_ENCRYPT_TXT_BYTE, txtptr_, length); if(err != OB_SUCCESS) { TBSYS_LOG(WARN, "fail to translate string to byte.err=%d", err); } } if(OB_SUCCESS == err) { length = length * OB_BYTE_NUM; char *ptr = txtbyte_; for(int64_t i = 0; i < length; i += OB_CRYPT_UNIT) { ptr = &txtbyte_[i]; encrypt_r(ptr, ENCODE_FLAG, &data_); } } if(OB_SUCCESS == err) { err = byteTostring(buffer, buffer_length, txtbyte_, length); if(err != OB_SUCCESS) { TBSYS_LOG(WARN, "fail to translate to string.err=%d", err); } else { buffer_length = length / OB_BYTE_NUM; } } return err; }
void runFailure4() { struct crypt_data data; data.initialized = 0; char buf[64]; encrypt_r(buf, anyint(), &data); }
void runFailure3() { struct crypt_data data; char buf[64]; encrypt_r(buf, 1, &data); }
void runFailure2() { struct crypt_data data; data.initialized = 0; char buf[63]; encrypt_r(buf, 0, &data); }
void runFailure1() { struct crypt_data data; data.initialized = 0; char buf[64]; encrypt_r(buf, 1, NULL); }
void runFailure() { struct crypt_data data; data.initialized = 0; char buf[64]; encrypt_r(NULL, 0, &data); }
void runSuccess2() { struct crypt_data data; data.initialized = 0; char buf[100]; encrypt_r(buf, 0, &data); }