diff --git a/src/extract_v2.c b/src/extract_v2.c index 419f817..729cc17 100644 --- a/src/extract_v2.c +++ b/src/extract_v2.c @@ -107,20 +107,17 @@ static int check_signing_key_trust(struct apk_sign_ctx *sctx) static int apk_sign_ctx_process_file(struct apk_sign_ctx *ctx, const struct apk_file_info *fi, struct apk_istream *is) { - static struct { - char type[8]; - uint8_t alg; - } signature_type[] = { - {"RSA256", APK_SIGNATURE_RSA256}, - {"RSA512", APK_SIGNATURE_RSA512}, - {"CUTE", APK_SIGNATURE_CUTE}, - {"RSA", APK_SIGNATURE_RSA}, + static const char *signature_type[4] = { + [APK_SIGNATURE_RSA] = "RSA", + [APK_SIGNATURE_RSA512] = "RSA512", + [APK_SIGNATURE_RSA256] = "RSA256", + [APK_SIGNATURE_CUTE] = "CUTE", }; uint16_t signature_alg = APK_SIGNATURE_MAX; struct apk_public_key *public_key; const char *name = NULL; - int r, i; + int r; if (ctx->data_started) { return 1; @@ -166,10 +163,11 @@ static int apk_sign_ctx_process_file(struct apk_sign_ctx *ctx, const struct apk_ || ctx->signature.public_key != NULL) return 0; - for (i = 0; i < ARRAY_SIZE(signature_type); i++) { - size_t slen = strlen(signature_type[i].type); - if (strncmp(&fi->name[6], signature_type[i].type, slen) == 0 && fi->name[6 + slen] == '.') { - signature_alg = signature_type[i].alg; + for (uint16_t i = 0; i < ARRAY_SIZE(signature_type); i++) { + size_t slen = strlen(signature_type[i]); + + if (strncmp(&fi->name[6], signature_type[i], slen) == 0 && fi->name[6 + slen] == '.') { + signature_alg = i; name = &fi->name[6 + slen + 1]; break; }