blob: ec4a65f7580f90a7d54a02e18854eef928e6cbdc [file] [log] [blame]
bigbiff bigbiffcdcfee42013-02-27 21:11:26 -05001/*
Ethan Yonker472f5062016-02-25 13:47:30 -06002 Copyright 2012 to 2016 bigbiff/Dees_Troy TeamWin
bigbiff bigbiffcdcfee42013-02-27 21:11:26 -05003 This file is part of TWRP/TeamWin Recovery Project.
4
5 TWRP is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 TWRP is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with TWRP. If not, see <http://www.gnu.org/licenses/>.
17*/
Dees Troy3be70a82013-10-22 14:25:12 +000018
bigbiff bigbiffcdcfee42013-02-27 21:11:26 -050019extern "C" {
20 #include "digest/md5.h"
21}
Vojtech Bocekfafb0c52013-07-25 22:53:02 +020022
James Christopher Adduono79ae0932016-10-25 02:18:32 -040023/* verify_md5digest return codes */
24enum {
25 MD5_MATCH_FAIL = -2, // -2: md5 did not match
26 MD5_NOT_FOUND, // -1: no md5 file found
27 MD5_OK, // 0: md5 matches
28 MD5_FILE_UNREADABLE // 1: md5 file unreadable
29};
30
bigbiff bigbiffcdcfee42013-02-27 21:11:26 -050031using namespace std;
32
Vojtech Bocekfafb0c52013-07-25 22:53:02 +020033class twrpDigest
34{
35public:
Ethan Yonker472f5062016-02-25 13:47:30 -060036 void setfn(const string& fn);
Vojtech Bocekfafb0c52013-07-25 22:53:02 +020037 int computeMD5(void);
38 int verify_md5digest(void);
39 int write_md5digest(void);
bigbiffce8f83c2015-12-12 18:30:21 -050040 int updateMD5stream(unsigned char* stream, int len);
41 void finalizeMD5stream(void);
42 string createMD5string(void);
43 void initMD5(void);
Vojtech Bocekfafb0c52013-07-25 22:53:02 +020044
45private:
46 int read_md5digest(void);
bigbiffce8f83c2015-12-12 18:30:21 -050047 struct MD5Context md5c;
Vojtech Bocekfafb0c52013-07-25 22:53:02 +020048 string md5fn;
49 string line;
50 unsigned char md5sum[MD5LENGTH];
bigbiffce8f83c2015-12-12 18:30:21 -050051 string md5string;
bigbiff bigbiffcdcfee42013-02-27 21:11:26 -050052};