react-native-bspatch 1.1.1 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +120 -22
- package/android/src/main/java/vn/reactnativebspatch/BsPatchModule.kt +117 -17
- package/cpp/CMakeLists.txt +9 -1
- package/cpp/bsdiff/bspatch.c +14 -3
- package/cpp/bsdiff/bspatch_wrapper.c +124 -40
- package/ios/RNBsPatch.mm +142 -1
- package/lib/commonjs/NativeBsPatch.js.map +1 -1
- package/lib/commonjs/ota/OtaProvider.js +61 -12
- package/lib/commonjs/ota/OtaProvider.js.map +1 -1
- package/lib/commonjs/ota/otaCore.js +43 -20
- package/lib/commonjs/ota/otaCore.js.map +1 -1
- package/lib/commonjs/ota/otaMetadata.js +41 -5
- package/lib/commonjs/ota/otaMetadata.js.map +1 -1
- package/lib/commonjs/ota/storage/CustomStorage.js +23 -3
- package/lib/commonjs/ota/storage/CustomStorage.js.map +1 -1
- package/lib/commonjs/ota/storage/GitHubRawStorage.js +12 -2
- package/lib/commonjs/ota/storage/GitHubRawStorage.js.map +1 -1
- package/lib/commonjs/ota/storage/GitHubReleaseStorage.js +3 -0
- package/lib/commonjs/ota/storage/GitHubReleaseStorage.js.map +1 -1
- package/lib/module/NativeBsPatch.js.map +1 -1
- package/lib/module/ota/OtaProvider.js +61 -12
- package/lib/module/ota/OtaProvider.js.map +1 -1
- package/lib/module/ota/otaCore.js +43 -20
- package/lib/module/ota/otaCore.js.map +1 -1
- package/lib/module/ota/otaMetadata.js +38 -3
- package/lib/module/ota/otaMetadata.js.map +1 -1
- package/lib/module/ota/storage/CustomStorage.js +23 -3
- package/lib/module/ota/storage/CustomStorage.js.map +1 -1
- package/lib/module/ota/storage/GitHubRawStorage.js +12 -2
- package/lib/module/ota/storage/GitHubRawStorage.js.map +1 -1
- package/lib/module/ota/storage/GitHubReleaseStorage.js +3 -0
- package/lib/module/ota/storage/GitHubReleaseStorage.js.map +1 -1
- package/lib/typescript/NativeBsPatch.d.ts +11 -0
- package/lib/typescript/NativeBsPatch.d.ts.map +1 -1
- package/lib/typescript/ota/OtaProvider.d.ts.map +1 -1
- package/lib/typescript/ota/otaCore.d.ts +3 -1
- package/lib/typescript/ota/otaCore.d.ts.map +1 -1
- package/lib/typescript/ota/otaMetadata.d.ts +6 -0
- package/lib/typescript/ota/otaMetadata.d.ts.map +1 -1
- package/lib/typescript/ota/storage/CustomStorage.d.ts.map +1 -1
- package/lib/typescript/ota/storage/GitHubRawStorage.d.ts.map +1 -1
- package/lib/typescript/ota/storage/GitHubReleaseStorage.d.ts.map +1 -1
- package/lib/typescript/ota/types.d.ts +6 -2
- package/lib/typescript/ota/types.d.ts.map +1 -1
- package/package.json +3 -1
- package/react-native-bspatch.podspec +6 -1
- package/src/NativeBsPatch.ts +17 -0
- package/src/ota/OtaProvider.tsx +80 -23
- package/src/ota/otaCore.ts +54 -24
- package/src/ota/otaMetadata.ts +46 -4
- package/src/ota/storage/CustomStorage.ts +26 -3
- package/src/ota/storage/GitHubRawStorage.ts +15 -4
- package/src/ota/storage/GitHubReleaseStorage.ts +5 -0
- package/src/ota/types.ts +6 -2
- package/tools/build_ota.sh +103 -7
- package/tools/bump_version.js +133 -0
- package/tools/generate_keys.js +75 -0
- package/tools/update_registry.js +51 -1
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
#include <string.h>
|
|
6
6
|
#include <sys/types.h>
|
|
7
7
|
#include <sys/stat.h>
|
|
8
|
+
#include <sys/mman.h>
|
|
8
9
|
#include <unistd.h>
|
|
9
10
|
#include <fcntl.h>
|
|
10
11
|
#include "bspatch.h"
|
|
@@ -52,69 +53,135 @@ static int bz2_read(const struct bspatch_stream* stream, void* buffer, int lengt
|
|
|
52
53
|
int apply_bspatch(const char *oldfile, const char *newfile, const char *patchfile)
|
|
53
54
|
{
|
|
54
55
|
FILE * f;
|
|
55
|
-
int
|
|
56
|
+
int fd_old = -1;
|
|
57
|
+
int fd_new = -1;
|
|
56
58
|
int bz2err;
|
|
57
59
|
uint8_t header[24];
|
|
58
|
-
uint8_t *old = NULL
|
|
59
|
-
|
|
60
|
+
uint8_t *old = NULL;
|
|
61
|
+
uint8_t *new_buf = NULL;
|
|
62
|
+
int64_t oldsize = 0, newsize = 0;
|
|
63
|
+
int old_mmapped = 0, new_mmapped = 0;
|
|
60
64
|
BZFILE* bz2 = NULL;
|
|
61
65
|
struct bspatch_stream stream;
|
|
62
|
-
struct stat
|
|
66
|
+
struct stat sb_old;
|
|
63
67
|
|
|
64
68
|
/* Open patch file */
|
|
65
|
-
if ((f = fopen(patchfile, "
|
|
66
|
-
|
|
69
|
+
if ((f = fopen(patchfile, "rb")) == NULL) {
|
|
70
|
+
LOGE("Failed to open patch file: %s", patchfile);
|
|
67
71
|
return -1;
|
|
68
72
|
}
|
|
69
73
|
|
|
70
74
|
/* Read header */
|
|
71
75
|
if (fread(header, 1, 24, f) != 24) {
|
|
72
|
-
|
|
76
|
+
LOGE("Failed to read header from patch file");
|
|
73
77
|
fclose(f);
|
|
74
78
|
return -1;
|
|
75
79
|
}
|
|
76
80
|
|
|
77
81
|
/* Check for appropriate magic */
|
|
78
82
|
if (memcmp(header, "ENDSLEY/BSDIFF43", 16) != 0) {
|
|
79
|
-
|
|
83
|
+
LOGE("Invalid magic in patch header");
|
|
80
84
|
fclose(f);
|
|
81
85
|
return -1;
|
|
82
86
|
}
|
|
83
87
|
|
|
84
88
|
/* Read lengths from header */
|
|
85
89
|
newsize = wrapper_offtin(header + 16);
|
|
86
|
-
if(newsize < 0) {
|
|
87
|
-
|
|
90
|
+
if (newsize < 0) {
|
|
91
|
+
LOGE("Invalid newsize in patch header: %lld", (long long)newsize);
|
|
88
92
|
fclose(f);
|
|
89
93
|
return -1;
|
|
90
94
|
}
|
|
91
95
|
|
|
92
|
-
/*
|
|
93
|
-
if((
|
|
94
|
-
(
|
|
95
|
-
((old=malloc(oldsize+1))==NULL) ||
|
|
96
|
-
(lseek(fd,0,SEEK_SET)!=0) ||
|
|
97
|
-
(read(fd,old,oldsize)!=oldsize) ||
|
|
98
|
-
(fstat(fd, &sb)) ||
|
|
99
|
-
(close(fd)==-1)) {
|
|
100
|
-
LOGE("Failed reading oldfile (fd=%d, oldsize=%lld)", fd, (long long)oldsize);
|
|
101
|
-
if (fd >= 0) close(fd);
|
|
102
|
-
if (old) free(old);
|
|
96
|
+
/* Open and map old file */
|
|
97
|
+
if ((fd_old = open(oldfile, O_RDONLY, 0)) < 0) {
|
|
98
|
+
LOGE("Failed to open oldfile: %s", oldfile);
|
|
103
99
|
fclose(f);
|
|
104
100
|
return -1;
|
|
105
101
|
}
|
|
106
102
|
|
|
107
|
-
if((
|
|
108
|
-
|
|
109
|
-
|
|
103
|
+
if (fstat(fd_old, &sb_old) != 0) {
|
|
104
|
+
LOGE("Failed to stat oldfile: %s", oldfile);
|
|
105
|
+
close(fd_old);
|
|
110
106
|
fclose(f);
|
|
111
107
|
return -1;
|
|
112
108
|
}
|
|
109
|
+
oldsize = sb_old.st_size;
|
|
110
|
+
|
|
111
|
+
if (oldsize > 0) {
|
|
112
|
+
old = (uint8_t *)mmap(NULL, (size_t)oldsize, PROT_READ, MAP_SHARED, fd_old, 0);
|
|
113
|
+
if (old != MAP_FAILED) {
|
|
114
|
+
old_mmapped = 1;
|
|
115
|
+
#if defined(MADV_SEQUENTIAL)
|
|
116
|
+
madvise(old, (size_t)oldsize, MADV_SEQUENTIAL);
|
|
117
|
+
#endif
|
|
118
|
+
} else {
|
|
119
|
+
/* Fallback to malloc if mmap fails */
|
|
120
|
+
old = (uint8_t *)malloc((size_t)oldsize + 1);
|
|
121
|
+
if (old == NULL || read(fd_old, old, (size_t)oldsize) != oldsize) {
|
|
122
|
+
LOGE("Failed to read oldfile into memory");
|
|
123
|
+
if (old) free(old);
|
|
124
|
+
close(fd_old);
|
|
125
|
+
fclose(f);
|
|
126
|
+
return -1;
|
|
127
|
+
}
|
|
128
|
+
old_mmapped = 0;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/* Open and map new file */
|
|
133
|
+
mode_t mode = sb_old.st_mode ? sb_old.st_mode : 0644;
|
|
134
|
+
if ((fd_new = open(newfile, O_RDWR | O_CREAT | O_TRUNC, mode)) < 0) {
|
|
135
|
+
LOGE("Failed to open/create newfile: %s", newfile);
|
|
136
|
+
if (old_mmapped) munmap(old, (size_t)oldsize);
|
|
137
|
+
else if (old) free(old);
|
|
138
|
+
close(fd_old);
|
|
139
|
+
fclose(f);
|
|
140
|
+
return -1;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if (newsize > 0) {
|
|
144
|
+
if (ftruncate(fd_new, (off_t)newsize) != 0) {
|
|
145
|
+
LOGE("Failed to ftruncate newfile to size %lld", (long long)newsize);
|
|
146
|
+
if (old_mmapped) munmap(old, (size_t)oldsize);
|
|
147
|
+
else if (old) free(old);
|
|
148
|
+
close(fd_old);
|
|
149
|
+
close(fd_new);
|
|
150
|
+
fclose(f);
|
|
151
|
+
return -1;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
new_buf = (uint8_t *)mmap(NULL, (size_t)newsize, PROT_READ | PROT_WRITE, MAP_SHARED, fd_new, 0);
|
|
155
|
+
if (new_buf != MAP_FAILED) {
|
|
156
|
+
new_mmapped = 1;
|
|
157
|
+
#if defined(MADV_SEQUENTIAL)
|
|
158
|
+
madvise(new_buf, (size_t)newsize, MADV_SEQUENTIAL);
|
|
159
|
+
#endif
|
|
160
|
+
} else {
|
|
161
|
+
/* Fallback to malloc if mmap fails */
|
|
162
|
+
new_buf = (uint8_t *)malloc((size_t)newsize + 1);
|
|
163
|
+
if (new_buf == NULL) {
|
|
164
|
+
LOGE("Failed to allocate memory for new_buf (%lld)", (long long)newsize);
|
|
165
|
+
if (old_mmapped) munmap(old, (size_t)oldsize);
|
|
166
|
+
else if (old) free(old);
|
|
167
|
+
close(fd_old);
|
|
168
|
+
close(fd_new);
|
|
169
|
+
fclose(f);
|
|
170
|
+
return -1;
|
|
171
|
+
}
|
|
172
|
+
new_mmapped = 0;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
113
175
|
|
|
176
|
+
/* Initialize bzip2 stream */
|
|
114
177
|
if (NULL == (bz2 = BZ2_bzReadOpen(&bz2err, f, 0, 0, NULL, 0))) {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
free(
|
|
178
|
+
LOGE("BZ2_bzReadOpen failed: err=%d", bz2err);
|
|
179
|
+
if (new_mmapped) munmap(new_buf, (size_t)newsize);
|
|
180
|
+
else if (new_buf) free(new_buf);
|
|
181
|
+
if (old_mmapped) munmap(old, (size_t)oldsize);
|
|
182
|
+
else if (old) free(old);
|
|
183
|
+
close(fd_old);
|
|
184
|
+
close(fd_new);
|
|
118
185
|
fclose(f);
|
|
119
186
|
return -1;
|
|
120
187
|
}
|
|
@@ -122,29 +189,46 @@ int apply_bspatch(const char *oldfile, const char *newfile, const char *patchfil
|
|
|
122
189
|
stream.read = bz2_read;
|
|
123
190
|
stream.opaque = bz2;
|
|
124
191
|
if (bspatch(old, oldsize, new_buf, newsize, &stream)) {
|
|
125
|
-
|
|
192
|
+
LOGE("bspatch core logic failed");
|
|
126
193
|
BZ2_bzReadClose(&bz2err, bz2);
|
|
127
|
-
|
|
128
|
-
free(
|
|
194
|
+
if (new_mmapped) munmap(new_buf, (size_t)newsize);
|
|
195
|
+
else if (new_buf) free(new_buf);
|
|
196
|
+
if (old_mmapped) munmap(old, (size_t)oldsize);
|
|
197
|
+
else if (old) free(old);
|
|
198
|
+
close(fd_old);
|
|
199
|
+
close(fd_new);
|
|
129
200
|
fclose(f);
|
|
130
201
|
return -1;
|
|
131
202
|
}
|
|
132
203
|
|
|
133
|
-
/* Clean up
|
|
204
|
+
/* Clean up bzip2 and patch file */
|
|
134
205
|
BZ2_bzReadClose(&bz2err, bz2);
|
|
135
206
|
fclose(f);
|
|
136
207
|
|
|
137
|
-
/*
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
if (
|
|
208
|
+
/* Finalize new file */
|
|
209
|
+
int ret = 0;
|
|
210
|
+
if (new_mmapped) {
|
|
211
|
+
if (msync(new_buf, (size_t)newsize, MS_SYNC) != 0) {
|
|
212
|
+
LOGE("msync failed on newfile");
|
|
213
|
+
ret = -1;
|
|
214
|
+
}
|
|
215
|
+
munmap(new_buf, (size_t)newsize);
|
|
216
|
+
} else if (new_buf) {
|
|
217
|
+
if (write(fd_new, new_buf, (size_t)newsize) != newsize) {
|
|
218
|
+
LOGE("Failed writing newfile");
|
|
219
|
+
ret = -1;
|
|
220
|
+
}
|
|
141
221
|
free(new_buf);
|
|
142
|
-
free(old);
|
|
143
|
-
return -1;
|
|
144
222
|
}
|
|
145
223
|
|
|
146
|
-
|
|
147
|
-
|
|
224
|
+
/* Clean up old file and descriptors */
|
|
225
|
+
if (old_mmapped) {
|
|
226
|
+
munmap(old, (size_t)oldsize);
|
|
227
|
+
} else if (old) {
|
|
228
|
+
free(old);
|
|
229
|
+
}
|
|
230
|
+
close(fd_old);
|
|
231
|
+
close(fd_new);
|
|
148
232
|
|
|
149
|
-
return
|
|
233
|
+
return ret;
|
|
150
234
|
}
|
package/ios/RNBsPatch.mm
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
#import <Foundation/Foundation.h>
|
|
3
3
|
#import <UIKit/UIKit.h>
|
|
4
4
|
#import <zlib.h>
|
|
5
|
+
#import <CommonCrypto/CommonHMAC.h>
|
|
6
|
+
#import <CommonCrypto/CommonDigest.h>
|
|
7
|
+
#import <Security/Security.h>
|
|
5
8
|
#import <React/RCTLog.h>
|
|
6
9
|
#import <React/RCTReloadCommand.h>
|
|
7
10
|
#import <SSZipArchive/SSZipArchive.h>
|
|
@@ -151,10 +154,148 @@ RCT_EXPORT_METHOD(decompressGzip:(NSString *)sourcePath
|
|
|
151
154
|
});
|
|
152
155
|
}
|
|
153
156
|
|
|
157
|
+
RCT_EXPORT_METHOD(verifySignature:(NSString *)filePath
|
|
158
|
+
signature:(NSString *)signature
|
|
159
|
+
publicKey:(NSString *)publicKey
|
|
160
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
161
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
162
|
+
{
|
|
163
|
+
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
|
|
164
|
+
NSString *cleanKey = [publicKey stringByReplacingOccurrencesOfString:@"-----BEGIN PUBLIC KEY-----" withString:@""];
|
|
165
|
+
cleanKey = [cleanKey stringByReplacingOccurrencesOfString:@"-----END PUBLIC KEY-----" withString:@""];
|
|
166
|
+
cleanKey = [cleanKey stringByReplacingOccurrencesOfString:@"-----BEGIN RSA PUBLIC KEY-----" withString:@""];
|
|
167
|
+
cleanKey = [cleanKey stringByReplacingOccurrencesOfString:@"-----END RSA PUBLIC KEY-----" withString:@""];
|
|
168
|
+
cleanKey = [cleanKey stringByReplacingOccurrencesOfString:@"\n" withString:@""];
|
|
169
|
+
cleanKey = [cleanKey stringByReplacingOccurrencesOfString:@"\r" withString:@""];
|
|
170
|
+
cleanKey = [cleanKey stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
|
|
171
|
+
|
|
172
|
+
NSData *keyData = [[NSData alloc] initWithBase64EncodedString:cleanKey options:NSDataBase64DecodingIgnoreUnknownCharacters];
|
|
173
|
+
NSData *expectedSig = [[NSData alloc] initWithBase64EncodedString:signature options:NSDataBase64DecodingIgnoreUnknownCharacters];
|
|
174
|
+
|
|
175
|
+
if (!keyData || !expectedSig) {
|
|
176
|
+
resolve(@(NO));
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// Calculate SHA256 of file stream
|
|
181
|
+
NSInputStream *stream = [NSInputStream inputStreamWithFileAtPath:filePath];
|
|
182
|
+
if (!stream) {
|
|
183
|
+
resolve(@(NO));
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
[stream open];
|
|
187
|
+
|
|
188
|
+
CC_SHA256_CTX shaCtx;
|
|
189
|
+
CC_SHA256_Init(&shaCtx);
|
|
190
|
+
uint8_t buffer[65536];
|
|
191
|
+
while ([stream hasBytesAvailable]) {
|
|
192
|
+
NSInteger bytesRead = [stream read:buffer maxLength:sizeof(buffer)];
|
|
193
|
+
if (bytesRead > 0) {
|
|
194
|
+
CC_SHA256_Update(&shaCtx, buffer, (CC_LONG)bytesRead);
|
|
195
|
+
} else if (bytesRead < 0) {
|
|
196
|
+
[stream close];
|
|
197
|
+
resolve(@(NO));
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
[stream close];
|
|
202
|
+
|
|
203
|
+
unsigned char sha256[CC_SHA256_DIGEST_LENGTH];
|
|
204
|
+
CC_SHA256_Final(sha256, &shaCtx);
|
|
205
|
+
NSData *sha256Data = [NSData dataWithBytes:sha256 length:CC_SHA256_DIGEST_LENGTH];
|
|
206
|
+
|
|
207
|
+
// 1. Try RSA Public Key
|
|
208
|
+
NSDictionary *rsaParams = @{
|
|
209
|
+
(id)kSecAttrKeyType: (id)kSecAttrKeyTypeRSA,
|
|
210
|
+
(id)kSecAttrKeyClass: (id)kSecAttrKeyClassPublic,
|
|
211
|
+
};
|
|
212
|
+
CFErrorRef rsaErr = NULL;
|
|
213
|
+
SecKeyRef rsaKey = SecKeyCreateWithData((__bridge CFDataRef)keyData, (__bridge CFDictionaryRef)rsaParams, &rsaErr);
|
|
214
|
+
if (rsaKey) {
|
|
215
|
+
CFErrorRef verifyErr = NULL;
|
|
216
|
+
Boolean isValid = SecKeyVerifySignature(
|
|
217
|
+
rsaKey,
|
|
218
|
+
kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA256,
|
|
219
|
+
(__bridge CFDataRef)sha256Data,
|
|
220
|
+
(__bridge CFDataRef)expectedSig,
|
|
221
|
+
&verifyErr
|
|
222
|
+
);
|
|
223
|
+
CFRelease(rsaKey);
|
|
224
|
+
if (!verifyErr) {
|
|
225
|
+
resolve(@(isValid ? YES : NO));
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// 2. Try ECDSA Public Key
|
|
231
|
+
NSDictionary *ecParams = @{
|
|
232
|
+
(id)kSecAttrKeyType: (id)kSecAttrKeyTypeECSECPrimeRandom,
|
|
233
|
+
(id)kSecAttrKeyClass: (id)kSecAttrKeyClassPublic,
|
|
234
|
+
};
|
|
235
|
+
CFErrorRef ecErr = NULL;
|
|
236
|
+
SecKeyRef ecKey = SecKeyCreateWithData((__bridge CFDataRef)keyData, (__bridge CFDictionaryRef)ecParams, &ecErr);
|
|
237
|
+
if (ecKey) {
|
|
238
|
+
CFErrorRef verifyErr = NULL;
|
|
239
|
+
Boolean isValid = SecKeyVerifySignature(
|
|
240
|
+
ecKey,
|
|
241
|
+
kSecKeyAlgorithmECDSASignatureDigestX962SHA256,
|
|
242
|
+
(__bridge CFDataRef)sha256Data,
|
|
243
|
+
(__bridge CFDataRef)expectedSig,
|
|
244
|
+
&verifyErr
|
|
245
|
+
);
|
|
246
|
+
CFRelease(ecKey);
|
|
247
|
+
if (!verifyErr) {
|
|
248
|
+
resolve(@(isValid ? YES : NO));
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// 3. Fallback: HMAC-SHA256
|
|
254
|
+
NSInputStream *hmacStream = [NSInputStream inputStreamWithFileAtPath:filePath];
|
|
255
|
+
if (!hmacStream) {
|
|
256
|
+
resolve(@(NO));
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
[hmacStream open];
|
|
260
|
+
|
|
261
|
+
CCHmacContext ctx;
|
|
262
|
+
CCHmacInit(&ctx, kCCHmacAlgSHA256, keyData.bytes, keyData.length);
|
|
263
|
+
while ([hmacStream hasBytesAvailable]) {
|
|
264
|
+
NSInteger bytesRead = [hmacStream read:buffer maxLength:sizeof(buffer)];
|
|
265
|
+
if (bytesRead > 0) {
|
|
266
|
+
CCHmacUpdate(&ctx, buffer, (CC_LONG)bytesRead);
|
|
267
|
+
} else if (bytesRead < 0) {
|
|
268
|
+
[hmacStream close];
|
|
269
|
+
resolve(@(NO));
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
[hmacStream close];
|
|
274
|
+
|
|
275
|
+
unsigned char hmac[CC_SHA256_DIGEST_LENGTH];
|
|
276
|
+
CCHmacFinal(&ctx, hmac);
|
|
277
|
+
|
|
278
|
+
BOOL isValid = (expectedSig.length == CC_SHA256_DIGEST_LENGTH) &&
|
|
279
|
+
(memcmp(expectedSig.bytes, hmac, CC_SHA256_DIGEST_LENGTH) == 0);
|
|
280
|
+
resolve(@(isValid));
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
RCT_EXPORT_METHOD(getAppVersion:(RCTPromiseResolveBlock)resolve
|
|
285
|
+
reject:(RCTPromiseRejectBlock)reject)
|
|
286
|
+
{
|
|
287
|
+
NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
|
|
288
|
+
if (!version || version.length == 0) {
|
|
289
|
+
reject(@"ERR_NO_VERSION", @"CFBundleShortVersionString is missing in iOS Info.plist", nil);
|
|
290
|
+
} else {
|
|
291
|
+
resolve(version);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
|
|
154
295
|
- (NSData *)decompressGzipData:(NSData *)compressed {
|
|
155
296
|
// Decompress gzip using zlib directly
|
|
156
297
|
// gzip adds a 10-byte header + 8-byte footer over the raw zlib stream
|
|
157
|
-
const size_t chunkSize =
|
|
298
|
+
const size_t chunkSize = 65536;
|
|
158
299
|
z_stream strm;
|
|
159
300
|
memset(&strm, 0, sizeof(strm));
|
|
160
301
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeBsPatch.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeBsPatch.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAmEpCC,gCAAmB,CAACC,YAAY,CAAO,SAAS,CAAC","ignoreList":[]}
|
|
@@ -34,8 +34,10 @@ function OtaProvider({
|
|
|
34
34
|
const [metrics, setMetrics] = (0, _react.useState)(null);
|
|
35
35
|
const [patches, setPatches] = (0, _react.useState)([]);
|
|
36
36
|
const [isInitialized, setIsInitialized] = (0, _react.useState)(false);
|
|
37
|
+
const [isUpdateReady, setIsUpdateReady] = (0, _react.useState)(false);
|
|
37
38
|
const appState = (0, _react.useRef)(_reactNative.AppState.currentState);
|
|
38
39
|
const isCheckingRef = (0, _react.useRef)(false);
|
|
40
|
+
const pendingReloadRef = (0, _react.useRef)(false);
|
|
39
41
|
const bootstrapDone = (0, _react.useRef)(false);
|
|
40
42
|
const progressRef = (0, _react.useRef)(0);
|
|
41
43
|
const isDebugUpdateEnabled = !__DEV__ || config.allowDebugUpdates === true;
|
|
@@ -46,6 +48,21 @@ function OtaProvider({
|
|
|
46
48
|
progressRef.current = nextProgress;
|
|
47
49
|
setProgress(nextProgress);
|
|
48
50
|
}, []);
|
|
51
|
+
const getEffectiveConfig = (0, _react.useCallback)(async () => {
|
|
52
|
+
if (config.appVersion) return config;
|
|
53
|
+
try {
|
|
54
|
+
const nativeVer = await _NativeBsPatch.default.getAppVersion();
|
|
55
|
+
if (!nativeVer) {
|
|
56
|
+
throw new Error('Native appVersion is empty');
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
...config,
|
|
60
|
+
appVersion: nativeVer
|
|
61
|
+
};
|
|
62
|
+
} catch (e) {
|
|
63
|
+
throw new Error(`[OtaProvider] Failed to auto-detect appVersion from native: ${e.message}. ` + `Please set versionName (Android) / CFBundleShortVersionString (iOS), or provide config.appVersion explicitly.`);
|
|
64
|
+
}
|
|
65
|
+
}, [config]);
|
|
49
66
|
|
|
50
67
|
/**
|
|
51
68
|
* Core apply update logic — separated so it can be mapped to button clicks
|
|
@@ -61,10 +78,11 @@ function OtaProvider({
|
|
|
61
78
|
return;
|
|
62
79
|
}
|
|
63
80
|
try {
|
|
81
|
+
const effectiveConfig = await getEffectiveConfig();
|
|
64
82
|
setStatus(_types.OtaStatus.DOWNLOADING);
|
|
65
83
|
progressRef.current = 0;
|
|
66
84
|
setProgress(0);
|
|
67
|
-
await (0, _otaCore.applyOtaPatchInternal)(directPatch,
|
|
85
|
+
await (0, _otaCore.applyOtaPatchInternal)(directPatch, effectiveConfig, (s, msg, m) => {
|
|
68
86
|
setMessage(msg);
|
|
69
87
|
setStatus(s);
|
|
70
88
|
if (m) {
|
|
@@ -80,7 +98,7 @@ function OtaProvider({
|
|
|
80
98
|
setStatus(_types.OtaStatus.ERROR);
|
|
81
99
|
setMessage(`Update failed: ${error.message}`);
|
|
82
100
|
}
|
|
83
|
-
}, [
|
|
101
|
+
}, [getEffectiveConfig, setProgressIfChanged]);
|
|
84
102
|
|
|
85
103
|
/**
|
|
86
104
|
* Exposed method for manual trigger
|
|
@@ -94,6 +112,34 @@ function OtaProvider({
|
|
|
94
112
|
}
|
|
95
113
|
await executeApplyUpdate(patches, currentVersion, latestVersion);
|
|
96
114
|
}, [currentVersion, executeApplyUpdate, isDebugUpdateEnabled, latestVersion, patches]);
|
|
115
|
+
const downloadBackgroundUpdate = (0, _react.useCallback)(async (patchList, localV, targetV) => {
|
|
116
|
+
const directPatch = patchList.find(p => p.fromVersion === localV && p.toVersion === targetV && p.platform === _reactNative.Platform.OS);
|
|
117
|
+
if (!directPatch) return;
|
|
118
|
+
try {
|
|
119
|
+
const effectiveConfig = await getEffectiveConfig();
|
|
120
|
+
await (0, _otaCore.applyOtaPatchInternal)(directPatch, effectiveConfig, (s, msg, m) => {
|
|
121
|
+
if (s === _types.OtaStatus.SUCCESS) {
|
|
122
|
+
setIsUpdateReady(true);
|
|
123
|
+
pendingReloadRef.current = true;
|
|
124
|
+
setStatus(_types.OtaStatus.UP_TO_DATE);
|
|
125
|
+
setMessage(`Update V${targetV} ready for next launch`);
|
|
126
|
+
if (m) {
|
|
127
|
+
setMetrics(m);
|
|
128
|
+
(0, _otaAssetResolver.initOtaAssetResolver)(targetV);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}, () => {},
|
|
132
|
+
// silent: background doesn't spam progress
|
|
133
|
+
{
|
|
134
|
+
autoReload: false
|
|
135
|
+
} // Do NOT reload immediately
|
|
136
|
+
);
|
|
137
|
+
} catch (e) {
|
|
138
|
+
if (__DEV__) {
|
|
139
|
+
console.warn('[OtaProvider] Silent background update failed:', e);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}, [getEffectiveConfig]);
|
|
97
143
|
|
|
98
144
|
/**
|
|
99
145
|
* Check for updates from the manifest.
|
|
@@ -112,10 +158,11 @@ function OtaProvider({
|
|
|
112
158
|
setIsChecking(true);
|
|
113
159
|
setStatus(_types.OtaStatus.CHECKING);
|
|
114
160
|
setMessage('Checking for updates...');
|
|
115
|
-
const
|
|
161
|
+
const effectiveConfig = await getEffectiveConfig();
|
|
162
|
+
const log = (0, _otaLogger.createOtaLogger)(effectiveConfig.onEvent);
|
|
116
163
|
log.emit(_otaLogger.OtaEvent.CHECK_UPDATE);
|
|
117
164
|
try {
|
|
118
|
-
const remotePatches = await (0, _otaCore.fetchOtaManifest)(
|
|
165
|
+
const remotePatches = await (0, _otaCore.fetchOtaManifest)(effectiveConfig);
|
|
119
166
|
const metadata = await (0, _otaMetadata.loadMetadata)(config.baseAppVersion);
|
|
120
167
|
const localV = metadata.currentVersion;
|
|
121
168
|
console.log('[OtaProvider] checkUpdates | localV:', localV, 'remotePatches count:', remotePatches.length);
|
|
@@ -150,12 +197,7 @@ function OtaProvider({
|
|
|
150
197
|
isCheckingRef.current = false;
|
|
151
198
|
setIsChecking(false);
|
|
152
199
|
}
|
|
153
|
-
}, [config, executeApplyUpdate, isDebugUpdateEnabled]);
|
|
154
|
-
const downloadBackgroundUpdate = async (patchList, localV, targetV) => {
|
|
155
|
-
const directPatch = patchList.find(p => p.fromVersion === localV && p.toVersion === targetV);
|
|
156
|
-
if (!directPatch) return;
|
|
157
|
-
console.warn('[OtaProvider] BACKGROUND_DOWNLOAD mode is not yet implemented. ' + 'Patches were found but no download occurred. ' + 'Use MANUAL or ON_APP_START mode for now.');
|
|
158
|
-
};
|
|
200
|
+
}, [config, executeApplyUpdate, isDebugUpdateEnabled, downloadBackgroundUpdate, getEffectiveConfig]);
|
|
159
201
|
|
|
160
202
|
/**
|
|
161
203
|
* Bootstrap: runs once on mount.
|
|
@@ -224,10 +266,15 @@ function OtaProvider({
|
|
|
224
266
|
}, []);
|
|
225
267
|
|
|
226
268
|
/**
|
|
227
|
-
* AppState listener for ON_APP_FOREGROUND mode
|
|
269
|
+
* AppState listener for ON_APP_FOREGROUND mode and silent background reload
|
|
228
270
|
*/
|
|
229
271
|
(0, _react.useEffect)(() => {
|
|
230
272
|
const subscription = _reactNative.AppState.addEventListener('change', nextAppState => {
|
|
273
|
+
// When going into background: if update is downloaded and ready, reload bundle silently
|
|
274
|
+
if (appState.current === 'active' && nextAppState.match(/inactive|background/) && pendingReloadRef.current) {
|
|
275
|
+
pendingReloadRef.current = false;
|
|
276
|
+
_NativeBsPatch.default.reloadBundle();
|
|
277
|
+
}
|
|
231
278
|
if (appState.current.match(/inactive|background/) && nextAppState === 'active' && bootstrapDone.current) {
|
|
232
279
|
const mode = config.updateMode ?? _types.OtaUpdateMode.MANUAL;
|
|
233
280
|
if (mode === _types.OtaUpdateMode.ON_APP_FOREGROUND) {
|
|
@@ -275,10 +322,12 @@ function OtaProvider({
|
|
|
275
322
|
pendingCount,
|
|
276
323
|
isChecking,
|
|
277
324
|
metrics,
|
|
325
|
+
isUpdateReady,
|
|
278
326
|
applyUpdate,
|
|
279
327
|
resetToFactory,
|
|
280
328
|
markAsHealthy,
|
|
281
|
-
checkUpdate: checkUpdates
|
|
329
|
+
checkUpdate: checkUpdates,
|
|
330
|
+
reloadBundle: () => _NativeBsPatch.default.reloadBundle()
|
|
282
331
|
};
|
|
283
332
|
|
|
284
333
|
// Logic to determine if we should block the UI
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeBlobUtil","_interopRequireDefault","_NativeBsPatch","_otaAssetResolver","_otaCore","_otaLogger","_otaMetadata","_types","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","OtaContext","createContext","undefined","OtaProvider","children","config","loadingView","useLoadingView","status","setStatus","useState","OtaStatus","IDLE","message","setMessage","progress","setProgress","currentVersion","setCurrentVersion","baseAppVersion","latestVersion","setLatestVersion","pendingCount","setPendingCount","isChecking","setIsChecking","metrics","setMetrics","patches","setPatches","isInitialized","setIsInitialized","appState","useRef","AppState","currentState","isCheckingRef","bootstrapDone","progressRef","isDebugUpdateEnabled","__DEV__","allowDebugUpdates","setProgressIfChanged","useCallback","nextProgress","current","executeApplyUpdate","patchList","currentVer","targetVer","console","log","directPatch","find","p","fromVersion","toVersion","platform","Platform","OS","warn","ERROR","DOWNLOADING","applyOtaPatchInternal","s","msg","m","initOtaAssetResolver","percent","error","applyUpdate","UP_TO_DATE","checkUpdates","CHECKING","createOtaLogger","onEvent","emit","OtaEvent","CHECK_UPDATE","remotePatches","fetchOtaManifest","metadata","loadMetadata","localV","length","platformPatches","filter","maxV","Math","max","map","UPDATE_AVAILABLE","updateMode","OtaUpdateMode","BACKGROUND_DOWNLOAD","downloadBackgroundUpdate","ON_APP_START","ON_APP_FOREGROUND","targetV","useEffect","bootstrap","ReactNativeBlobUtil","fs","ls","dirs","DocumentDir","then","dir","startsWith","unlink","catch","markAsHealthy","mode","MANUAL","subscription","addEventListener","nextAppState","match","remove","MARK_HEALTHY","markHealthy","NativeBsPatch","resetToFactory","APPLYING","RESET_FACTORY","otaDir","exists","trashDir","Date","now","mv","reloadBundle","value","checkUpdate","isBlocking","useMemo","jsx","Provider","View","style","styles","loadingContainer","jsxs","loadingCard","ActivityIndicator","size","color","Text","loadingTitle","loadingText","progressText","toFixed","useOta","context","useContext","Error","StyleSheet","create","flex","justifyContent","alignItems","backgroundColor","paddingHorizontal","width","maxWidth","borderRadius","paddingVertical","borderWidth","borderColor","marginTop","fontSize","fontWeight","lineHeight","textAlign"],"sourceRoot":"../../../src","sources":["ota/OtaProvider.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeBlobUtil","_interopRequireDefault","_NativeBsPatch","_otaAssetResolver","_otaCore","_otaLogger","_otaMetadata","_types","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","OtaContext","createContext","undefined","OtaProvider","children","config","loadingView","useLoadingView","status","setStatus","useState","OtaStatus","IDLE","message","setMessage","progress","setProgress","currentVersion","setCurrentVersion","baseAppVersion","latestVersion","setLatestVersion","pendingCount","setPendingCount","isChecking","setIsChecking","metrics","setMetrics","patches","setPatches","isInitialized","setIsInitialized","isUpdateReady","setIsUpdateReady","appState","useRef","AppState","currentState","isCheckingRef","pendingReloadRef","bootstrapDone","progressRef","isDebugUpdateEnabled","__DEV__","allowDebugUpdates","setProgressIfChanged","useCallback","nextProgress","current","getEffectiveConfig","appVersion","nativeVer","NativeBsPatch","getAppVersion","Error","executeApplyUpdate","patchList","currentVer","targetVer","console","log","directPatch","find","p","fromVersion","toVersion","platform","Platform","OS","warn","ERROR","effectiveConfig","DOWNLOADING","applyOtaPatchInternal","s","msg","m","initOtaAssetResolver","percent","error","applyUpdate","UP_TO_DATE","downloadBackgroundUpdate","localV","targetV","SUCCESS","autoReload","checkUpdates","CHECKING","createOtaLogger","onEvent","emit","OtaEvent","CHECK_UPDATE","remotePatches","fetchOtaManifest","metadata","loadMetadata","length","platformPatches","filter","maxV","Math","max","map","UPDATE_AVAILABLE","updateMode","OtaUpdateMode","BACKGROUND_DOWNLOAD","ON_APP_START","ON_APP_FOREGROUND","useEffect","bootstrap","ReactNativeBlobUtil","fs","ls","dirs","DocumentDir","then","dir","startsWith","unlink","catch","markAsHealthy","mode","MANUAL","subscription","addEventListener","nextAppState","match","reloadBundle","remove","MARK_HEALTHY","markHealthy","resetToFactory","APPLYING","RESET_FACTORY","otaDir","exists","trashDir","Date","now","mv","value","checkUpdate","isBlocking","useMemo","jsx","Provider","View","style","styles","loadingContainer","jsxs","loadingCard","ActivityIndicator","size","color","Text","loadingTitle","loadingText","progressText","toFixed","useOta","context","useContext","StyleSheet","create","flex","justifyContent","alignItems","backgroundColor","paddingHorizontal","width","maxWidth","borderRadius","paddingVertical","borderWidth","borderColor","marginTop","fontSize","fontWeight","lineHeight","textAlign"],"sourceRoot":"../../../src","sources":["ota/OtaProvider.tsx"],"mappings":"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","ignoreList":[]}
|