@@ -285,7 +285,7 @@ + (BOOL)verifyFolderHash:(NSString *)finalUpdateFolder
285285 return [updateContentsManifestHash isEqualToString: expectedHash];
286286}
287287
288- + (NSString *)cleanPublicKey : (NSString *)publicKeyString
288+ + (NSString *)preparePublicKeyForDecoding : (NSString *)publicKeyString
289289{
290290 publicKeyString = [publicKeyString stringByReplacingOccurrencesOfString: @" -----BEGIN PUBLIC KEY-----\n "
291291 withString: @" " ];
@@ -303,14 +303,13 @@ + (NSString *)getSignatureFor:(NSString *)folderPath
303303 NSString *signatureFilePath = [NSString stringWithFormat: @" %@ /%@ /%@ " , folderPath, ManifestFolderPrefix, BundleJWTFile];
304304 if ([[NSFileManager defaultManager ] fileExistsAtPath: signatureFilePath]) {
305305 return [NSString stringWithContentsOfFile: signatureFilePath encoding: NSUTF8StringEncoding error: error];
306- }else {
306+ } else {
307307 *error = [CodePushErrorUtils errorWithMessage: [NSString stringWithFormat: @" Cannot find signature at %@ " , signatureFilePath]];
308308 return nil ;
309309 }
310- return nil ;
311310}
312311
313- + (NSDictionary *) verifyJWT : (NSString *) signature
312+ + (NSDictionary *) verifyAndDecodeJWT : (NSString *) jwt
314313 withPublicKey : (NSString *)publicKey
315314 error : (NSError **)error
316315{
@@ -333,22 +332,22 @@ + (BOOL)verifySignatureFor:(NSString *)folderPath
333332{
334333 NSLog (@" Verifying signature for folder path: %@ " , folderPath);
335334
336- NSString *publicKey = [self cleanPublicKey : publicKeyString];
335+ NSString *publicKey = [self preparePublicKeyForDecoding : publicKeyString];
337336
337+ NSError *signatureVerificationError;
338338 NSString *signature = [self getSignatureFor: folderPath
339- error: error];
340- if (signature == nil ) {
341- if (error && *error){
342- CPLog (@" The update could not be verified because no signature was found. %@ " , *error);
343- }else {
344- CPLog (@" The update could not be verified because no signature was found." );
345- }
339+ error: &signatureVerificationError];
340+ if (signatureVerificationError) {
341+ CPLog (@" The update could not be verified because no signature was found. %@ " , signatureVerificationError);
342+ *error = signatureVerificationError;
346343 return false ;
347344 }
348345
349- NSDictionary *envelopedPayload = [self verifyJWT: signature withPublicKey: publicKey error: error];
350- if (envelopedPayload == nil ){
351- CPLog (@" The update could not be verified because it was not signed by a trusted party. %@ " , *error);
346+ NSError *payloadDecodingError;
347+ NSDictionary *envelopedPayload = [self verifyAndDecodeJWT: signature withPublicKey: publicKey error: &payloadDecodingError];
348+ if (payloadDecodingError){
349+ CPLog (@" The update could not be verified because it was not signed by a trusted party. %@ " , payloadDecodingError);
350+ *error = payloadDecodingError;
352351 return false ;
353352 }
354353
0 commit comments