narvy-cli 1.2.0__tar.gz → 1.2.1__tar.gz

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.
Files changed (118) hide show
  1. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/CHANGELOG.md +24 -0
  2. {narvy_cli-1.2.0/narvy_cli.egg-info → narvy_cli-1.2.1}/PKG-INFO +6 -3
  3. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/README.md +5 -2
  4. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/__init__.py +1 -1
  5. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/__init__.py +1 -1
  6. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/android/checks.py +228 -110
  7. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/ios/checks.py +120 -60
  8. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/model.py +17 -4
  9. {narvy_cli-1.2.0 → narvy_cli-1.2.1/narvy_cli.egg-info}/PKG-INFO +6 -3
  10. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/LICENSE +0 -0
  11. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/MANIFEST.in +0 -0
  12. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/SECURITY.md +0 -0
  13. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/__main__.py +0 -0
  14. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/android/__init__.py +0 -0
  15. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/android/source_analyzer.py +0 -0
  16. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/android/split_bundle.py +0 -0
  17. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/android_rule_context.py +0 -0
  18. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/apk_memory_preflight.py +0 -0
  19. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/auth.py +0 -0
  20. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/ci_templates/bitbucket.yml +0 -0
  21. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/ci_templates/github.yml +0 -0
  22. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/ci_templates/gitlab.yml +0 -0
  23. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/cloud/__init__.py +0 -0
  24. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/cloud/aws_scan.py +0 -0
  25. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/comment_filter.py +0 -0
  26. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/crypto_taint_lite.py +0 -0
  27. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/decompiler.py +0 -0
  28. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/doctor.py +0 -0
  29. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/host/__init__.py +0 -0
  30. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/host/audit.py +0 -0
  31. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/host/host_knowledge.py +0 -0
  32. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/host/lynis_bootstrap.py +0 -0
  33. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/host/lynis_parser.py +0 -0
  34. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/host/narvy_checks.py +0 -0
  35. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/host/report.py +0 -0
  36. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/host/ssh_exec.py +0 -0
  37. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/ios/__init__.py +0 -0
  38. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/ios/binary_analyzer.py +0 -0
  39. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/ios/plist_checks.py +0 -0
  40. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/ios/source_analyzer.py +0 -0
  41. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/ios/third_party_filter.py +0 -0
  42. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/ios/trust_all_context.py +0 -0
  43. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/main.py +0 -0
  44. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/native_hardening.py +0 -0
  45. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/own_reports.py +0 -0
  46. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/pathhint.py +0 -0
  47. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/pathnorm.py +0 -0
  48. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/proc.py +0 -0
  49. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/reporter.py +0 -0
  50. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rule_engine.py +0 -0
  51. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/android/config.yml +0 -0
  52. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/android/crypto.yml +0 -0
  53. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/android/secrets.yml +0 -0
  54. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/android/storage.yml +0 -0
  55. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/android/webview.yml +0 -0
  56. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/android.yml +0 -0
  57. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/ios/objc/crypto.yml +0 -0
  58. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/ios/objc/network.yml +0 -0
  59. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/ios/objc/secrets.yml +0 -0
  60. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/ios/objc/storage.yml +0 -0
  61. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/ios/objc/webview.yml +0 -0
  62. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/ios_swift.yml +0 -0
  63. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/web/go.yml +0 -0
  64. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/web/java.yml +0 -0
  65. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/web/javascript.yml +0 -0
  66. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/web/kotlin.yml +0 -0
  67. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/web/php.yml +0 -0
  68. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/web/python.yml +0 -0
  69. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/web/ruby.yml +0 -0
  70. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/web/rust.yml +0 -0
  71. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/web/secrets.yml +0 -0
  72. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/rules/web/secrets_supplement.yml +0 -0
  73. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/sca/__init__.py +0 -0
  74. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/sca/android_deps.py +0 -0
  75. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/sca/ios_deps.py +0 -0
  76. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/sca/osv_client.py +0 -0
  77. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/sca/web_deps.py +0 -0
  78. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/scope_config.py +0 -0
  79. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/secret_output.py +0 -0
  80. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/secret_presentation.py +0 -0
  81. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/secret_value_grade.py +0 -0
  82. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/semgrep_engine.py +0 -0
  83. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/stack_protector_evidence.py +0 -0
  84. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/__main__.py +0 -0
  85. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/analyze.py +0 -0
  86. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/android/__init__.py +0 -0
  87. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/android/arsc.py +0 -0
  88. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/android/axml.py +0 -0
  89. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/android/elf.py +0 -0
  90. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/android/loader.py +0 -0
  91. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/android/protoxml.py +0 -0
  92. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/android/xmlmodel.py +0 -0
  93. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/archive.py +0 -0
  94. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/cli.py +0 -0
  95. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/data/__init__.py +0 -0
  96. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/data/apple.py +0 -0
  97. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/data/play.py +0 -0
  98. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/ios/__init__.py +0 -0
  99. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/ios/loader.py +0 -0
  100. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/store_check/ios/macho.py +0 -0
  101. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/telemetry.py +0 -0
  102. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/third_party_filter.py +0 -0
  103. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/uploader.py +0 -0
  104. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/weak_prng_context.py +0 -0
  105. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/web/__init__.py +0 -0
  106. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/web/nuclei_binary.py +0 -0
  107. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/web/scan_blocklist.py +0 -0
  108. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/web/scanner.py +0 -0
  109. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/web/source_analyzer.py +0 -0
  110. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy/web/ssrf_guard.py +0 -0
  111. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy_cli.egg-info/SOURCES.txt +0 -0
  112. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy_cli.egg-info/dependency_links.txt +0 -0
  113. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy_cli.egg-info/entry_points.txt +0 -0
  114. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy_cli.egg-info/requires.txt +0 -0
  115. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/narvy_cli.egg-info/top_level.txt +0 -0
  116. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/pyproject.toml +0 -0
  117. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/setup.cfg +0 -0
  118. {narvy_cli-1.2.0 → narvy_cli-1.2.1}/setup.py +0 -0
@@ -5,6 +5,30 @@ All notable changes to this project are documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.2.1]
9
+
10
+ ### Fixed
11
+
12
+ - `narvy store-check`: a failed check was titled with the wording of the
13
+ rule it failed, so the terminal printed contradictions such as
14
+ `[BLOCKER] PLAY-TARGET-SDK: Target API level meets Google Play's current
15
+ requirement`. Every check now has a title per status, in English and
16
+ French, citing the value read when it helps: `Target API 33 is below
17
+ Google Play's requirement (API 36)` on a failure, `Target API 36 meets
18
+ Google Play's requirement (API 36)` on a pass, `Target API level not
19
+ determined (targetSdkVersion unresolved)` when the binary does not settle
20
+ it. Check ids, statuses, severities, messages and exit codes are
21
+ unchanged.
22
+
23
+ ### Changed
24
+
25
+ - `narvy store-check --json`: `title` keeps its shape (`{"en", "fr"}`) and
26
+ now describes the result for its status. The rule text that `title`
27
+ carried in 1.2.0 moves to a new `requirement` field (`{"en", "fr"}`), the
28
+ same for every status. `tool_version` of the store-check report is
29
+ `0.2.0`. A consumer that used `title` as a fixed label per check id
30
+ should read `requirement` instead.
31
+
8
32
  ## [1.2.0]
9
33
 
10
34
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: narvy-cli
3
- Version: 1.2.0
3
+ Version: 1.2.1
4
4
  Summary: Free, local SAST scanner for Android, iOS, and polyglot web/backend source - plus passive web, host-audit, and cloud-posture scanning.
5
5
  Author: Narvy
6
6
  License: Apache-2.0
@@ -269,8 +269,11 @@ narvy store-check MyApp.ipa --as-of 2027-02-01 # evaluate a future deadline
269
269
  Each check reports `fail` (severity `blocker`, `warning` or `info`),
270
270
  `pass`, `not_determined` (the binary does not settle the question) or
271
271
  `not_applicable`, with the evidence read from the file and the official
272
- page the rule comes from. Store values and their sources live in
273
- `narvy/store_check/data/`.
272
+ page the rule comes from. In `--json`, `title` describes the result for its
273
+ status and cites the value read ("Target API 33 is below Google Play's
274
+ requirement (API 36)"), and `requirement` holds the rule itself ("Target API
275
+ level meets Google Play's current requirement"), both in English and French.
276
+ Store values and their sources live in `narvy/store_check/data/`.
274
277
 
275
278
  It runs offline: no network call, no telemetry event, nothing written to
276
279
  disk (the archive is read in memory). It does not check store listing
@@ -236,8 +236,11 @@ narvy store-check MyApp.ipa --as-of 2027-02-01 # evaluate a future deadline
236
236
  Each check reports `fail` (severity `blocker`, `warning` or `info`),
237
237
  `pass`, `not_determined` (the binary does not settle the question) or
238
238
  `not_applicable`, with the evidence read from the file and the official
239
- page the rule comes from. Store values and their sources live in
240
- `narvy/store_check/data/`.
239
+ page the rule comes from. In `--json`, `title` describes the result for its
240
+ status and cites the value read ("Target API 33 is below Google Play's
241
+ requirement (API 36)"), and `requirement` holds the rule itself ("Target API
242
+ level meets Google Play's current requirement"), both in English and French.
243
+ Store values and their sources live in `narvy/store_check/data/`.
241
244
 
242
245
  It runs offline: no network call, no telemetry event, nothing written to
243
246
  disk (the archive is read in memory). It does not check store listing
@@ -1,3 +1,3 @@
1
1
  """Narvy CLI - free, local SAST for Android, iOS and polyglot source."""
2
2
 
3
- __version__ = "1.2.0"
3
+ __version__ = "1.2.1"
@@ -1,2 +1,2 @@
1
1
  """narvy-store-check: deterministic App Store / Google Play readiness checks."""
2
- __version__ = "0.1.0"
2
+ __version__ = "0.2.0"