devendra-skill-package 1.0.2
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/.github/skills/boiler-project-generator/SKILL.md +103 -0
- package/.github/skills/boiler-project-generator/assets/templates/android/README.md +3 -0
- package/.github/skills/boiler-project-generator/assets/templates/angular/README.md +3 -0
- package/.github/skills/boiler-project-generator/assets/templates/flutter/README.md +3 -0
- package/.github/skills/boiler-project-generator/assets/templates/ios/README.md +3 -0
- package/.github/skills/boiler-project-generator/assets/templates/react/README.md +3 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/README.md +3 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/api-setup.ts +76 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/component-primary-button.tsx +29 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/env-config.env +4 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/feature-auth-screen.tsx +45 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/feature-dashboard-screen.tsx +45 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/feature-profile-screen.tsx +45 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/hook-use-app-boot.ts +11 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/navigation-setup.tsx +25 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/project-structure.md +24 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/redux-hooks.ts +5 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/redux-session-slice.ts +29 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/redux-store.ts +15 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/theme-index.ts +23 -0
- package/.github/skills/boiler-project-generator/assets/templates/react-native/utils-helpers.ts +7 -0
- package/.github/skills/boiler-project-generator/metadata.yaml +29 -0
- package/.github/skills/boiler-project-generator/references/android.md +19 -0
- package/.github/skills/boiler-project-generator/references/angular.md +14 -0
- package/.github/skills/boiler-project-generator/references/flutter.md +17 -0
- package/.github/skills/boiler-project-generator/references/ios.md +17 -0
- package/.github/skills/boiler-project-generator/references/react-native.md +103 -0
- package/.github/skills/boiler-project-generator/references/react.md +17 -0
- package/.github/skills/boiler-project-generator/scripts/angular.js +43 -0
- package/.github/skills/boiler-project-generator/scripts/generate-project.mjs +107 -0
- package/.github/skills/boiler-project-generator/scripts/init.js +105 -0
- package/.github/skills/boiler-project-generator/scripts/react-native.js +1041 -0
- package/.github/skills/boiler-project-generator/scripts/react.js +32 -0
- package/.github/skills/clean-architecture-generator/SKILL.md +235 -0
- package/.github/skills/clean-architecture-generator/references/architecture-core.md +126 -0
- package/.github/skills/clean-architecture-generator/references/platform-angular.md +374 -0
- package/.github/skills/clean-architecture-generator/references/platform-flutter.md +366 -0
- package/.github/skills/clean-architecture-generator/references/platform-react-native.md +590 -0
- package/.github/skills/clean-architecture-generator/references/platform-react.md +261 -0
- package/.github/skills/code-test-coverage-analyzer/SKILL.md +1358 -0
- package/.github/skills/code-test-coverage-analyzer/assets/config-questionnaire.md +118 -0
- package/.github/skills/code-test-coverage-analyzer/assets/conflict-resolution-protocol.md +99 -0
- package/.github/skills/code-test-coverage-analyzer/assets/coverage-calculation-rules.md +294 -0
- package/.github/skills/code-test-coverage-analyzer/assets/multi-strategy-search.md +145 -0
- package/.github/skills/code-test-coverage-analyzer/assets/output-file-contracts.md +651 -0
- package/.github/skills/code-test-coverage-analyzer/assets/status-definitions.md +273 -0
- package/.github/skills/code-test-coverage-analyzer/examples/example-invocation.md +208 -0
- package/.github/skills/code-test-coverage-analyzer/references/android-patterns.md +229 -0
- package/.github/skills/code-test-coverage-analyzer/references/angular-patterns.md +177 -0
- package/.github/skills/code-test-coverage-analyzer/references/backend-patterns.md +383 -0
- package/.github/skills/code-test-coverage-analyzer/references/flutter-patterns.md +254 -0
- package/.github/skills/code-test-coverage-analyzer/references/ios-patterns.md +228 -0
- package/.github/skills/code-test-coverage-analyzer/references/react-native-patterns.md +431 -0
- package/.github/skills/code-test-coverage-analyzer/references/react-patterns.md +206 -0
- package/.github/skills/code-test-coverage-analyzer/scripts/detect-platform.ps1 +261 -0
- package/.github/skills/code-test-coverage-analyzer/scripts/scan-repository.ps1 +242 -0
- package/.github/skills/code-test-coverage-analyzer/templates/brd-compliance-row.md +107 -0
- package/.github/skills/code-test-coverage-analyzer/templates/test-case-row.md +130 -0
- package/.github/skills/code-test-coverage-analyzer/templates/user-story-compliance-row.md +170 -0
- package/.github/skills/custom-font-integrator/SKILL.md +373 -0
- package/.github/skills/custom-font-integrator/assets/FontTestScreen.js +150 -0
- package/.github/skills/custom-font-integrator/references/example-info-plist.xml +21 -0
- package/.github/skills/custom-font-integrator/scripts/setup-fonts.sh +99 -0
- package/.github/skills/encryption-decryption-utility/Instructions.md +282 -0
- package/.github/skills/encryption-decryption-utility/README.md +222 -0
- package/.github/skills/encryption-decryption-utility/SKILL.md +645 -0
- package/.github/skills/encryption-decryption-utility/assets/encryption-config-template.json +13 -0
- package/.github/skills/encryption-decryption-utility/assets/platform-matrix.json +180 -0
- package/.github/skills/encryption-decryption-utility/metadata.yaml +51 -0
- package/.github/skills/encryption-decryption-utility/references/android-crypto.md +157 -0
- package/.github/skills/encryption-decryption-utility/references/angular-crypto.md +130 -0
- package/.github/skills/encryption-decryption-utility/references/approach-1-webcrypto.md +95 -0
- package/.github/skills/encryption-decryption-utility/references/approach-2-rsa-aes-cbc.md +111 -0
- package/.github/skills/encryption-decryption-utility/references/approach-3-aes-sharedkey.md +114 -0
- package/.github/skills/encryption-decryption-utility/references/architecture.md +233 -0
- package/.github/skills/encryption-decryption-utility/references/backend-alignment.md +506 -0
- package/.github/skills/encryption-decryption-utility/references/dependency-guidance.md +234 -0
- package/.github/skills/encryption-decryption-utility/references/ec-implementation.md +832 -0
- package/.github/skills/encryption-decryption-utility/references/error-handling-playbook.md +234 -0
- package/.github/skills/encryption-decryption-utility/references/flutter-crypto.md +105 -0
- package/.github/skills/encryption-decryption-utility/references/ios-crypto.md +338 -0
- package/.github/skills/encryption-decryption-utility/references/native-rsa-implementation.md +373 -0
- package/.github/skills/encryption-decryption-utility/references/node-crypto.md +86 -0
- package/.github/skills/encryption-decryption-utility/references/react-crypto.md +105 -0
- package/.github/skills/encryption-decryption-utility/references/react-native-crypto.md +1001 -0
- package/.github/skills/encryption-decryption-utility/references/react-web-crypto.md +668 -0
- package/.github/skills/encryption-decryption-utility/references/security-checklist.md +176 -0
- package/.github/skills/encryption-decryption-utility/references/web-crypto.md +74 -0
- package/.github/skills/encryption-decryption-utility/scripts/detect.js +128 -0
- package/.github/skills/encryption-decryption-utility/scripts/install.js +1713 -0
- package/.github/skills/encryption-decryption-utility/scripts/setup.js +800 -0
- package/.github/skills/encryption-decryption-utility/template.md +241 -0
- package/.github/skills/encryption-decryption-utility/templates/config-questionnaire.md +467 -0
- package/.github/skills/encryption-decryption-utility/templates/delivery-checklist.md +206 -0
- package/.github/skills/encryption-decryption-utility/templates/implementation-plan.md +304 -0
- package/.github/skills/feature-generator/SKILL.MD +2741 -0
- package/.github/skills/feature-generator/assets/fingerprint-schema.json +385 -0
- package/.github/skills/feature-generator/assets/spec-template.md +172 -0
- package/.github/skills/feature-generator/assets/transform-rules.json +82 -0
- package/.github/skills/feature-generator/references/api-envelope-patterns.md +327 -0
- package/.github/skills/feature-generator/references/screen-logic-patterns.md +399 -0
- package/.github/skills/feature-generator/references/state-library-patterns.md +464 -0
- package/.github/skills/figma-ui-mapper/README.md +34 -0
- package/.github/skills/figma-ui-mapper/SKILL.md +101 -0
- package/.github/skills/figma-ui-mapper/assets/templates/component-map-template.md +30 -0
- package/.github/skills/figma-ui-mapper/assets/templates/generation-report-template.md +49 -0
- package/.github/skills/figma-ui-mapper/metadata.yaml +22 -0
- package/.github/skills/figma-ui-mapper/references/android.md +11 -0
- package/.github/skills/figma-ui-mapper/references/angular.md +18 -0
- package/.github/skills/figma-ui-mapper/references/capacitor.md +18 -0
- package/.github/skills/figma-ui-mapper/references/common.md +23 -0
- package/.github/skills/figma-ui-mapper/references/expo.md +18 -0
- package/.github/skills/figma-ui-mapper/references/flutter.md +18 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/angular/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/capacitor/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/expo/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/flutter/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/ionic/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/kotlin-multiplatform/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/native-android/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/native-ios/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/next/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/nuxt/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/react/rules.md +19 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/react-native/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/svelte/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/frameworks/vue/rules.md +23 -0
- package/.github/skills/figma-ui-mapper/references/ionic.md +18 -0
- package/.github/skills/figma-ui-mapper/references/ios.md +11 -0
- package/.github/skills/figma-ui-mapper/references/kotlin-multiplatform.md +18 -0
- package/.github/skills/figma-ui-mapper/references/native-android.md +18 -0
- package/.github/skills/figma-ui-mapper/references/native-ios.md +18 -0
- package/.github/skills/figma-ui-mapper/references/next.md +18 -0
- package/.github/skills/figma-ui-mapper/references/nuxt.md +18 -0
- package/.github/skills/figma-ui-mapper/references/react-figma-guideline.md +21 -0
- package/.github/skills/figma-ui-mapper/references/react-native.md +18 -0
- package/.github/skills/figma-ui-mapper/references/react.md +18 -0
- package/.github/skills/figma-ui-mapper/references/script-usage.md +46 -0
- package/.github/skills/figma-ui-mapper/references/svelte.md +18 -0
- package/.github/skills/figma-ui-mapper/references/vue.md +18 -0
- package/.github/skills/figma-ui-mapper/references/workflow.md +74 -0
- package/.github/skills/figma-ui-mapper/scripts/generate-page-through-figma.js +635 -0
- package/.github/skills/figma-ui-mapper/scripts/generate-react-page-through-figma.js +4 -0
- package/.github/skills/frontend-task-breakdown/SKILL.md +734 -0
- package/.github/skills/md-file-converter/SKILL.md +291 -0
- package/.github/skills/md-file-converter/config/formats.json +114 -0
- package/.github/skills/md-file-converter/extractors/extract-docx.sh +120 -0
- package/.github/skills/md-file-converter/extractors/extract-eml.py +108 -0
- package/.github/skills/md-file-converter/extractors/extract-pdf.sh +97 -0
- package/.github/skills/md-file-converter/extractors/extract-pptx.py +143 -0
- package/.github/skills/md-file-converter/extractors/extract-xlsx.py +175 -0
- package/.github/skills/md-file-converter/scripts/check-tools.sh +47 -0
- package/.github/skills/md-file-converter/scripts/extract-archive.sh +83 -0
- package/.github/skills/md-file-converter/scripts/extract-ocr.sh +77 -0
- package/.github/skills/md-file-converter/scripts/get-metadata.sh +57 -0
- package/.github/skills/md-file-converter/templates/output.md +73 -0
- package/.github/skills/md-file-converter/templates/unsupported-object.md +6 -0
- package/.github/skills/mockAPI-contract-generator/SKILL.md +607 -0
- package/.github/skills/test-case-validator/CHANGELOG.md +155 -0
- package/.github/skills/test-case-validator/CONFIGURATION.md +130 -0
- package/.github/skills/test-case-validator/EXAMPLES.md +50 -0
- package/.github/skills/test-case-validator/QUALITY_SCORING.md +98 -0
- package/.github/skills/test-case-validator/README.md +111 -0
- package/.github/skills/test-case-validator/REPORT_TEMPLATE.md +116 -0
- package/.github/skills/test-case-validator/SKILL.md +209 -0
- package/.github/skills/test-case-validator/SYSTEM_PROMPT.md +127 -0
- package/.github/skills/test-case-validator/TRACEABILITY_ENGINE.md +152 -0
- package/.github/skills/test-case-validator/VALIDATION_RULES.md +411 -0
- package/.github/skills/test-case-validator/config/default.config.yaml +62 -0
- package/.github/skills/test-case-validator/docs/ARCHITECTURE.md +66 -0
- package/.github/skills/test-case-validator/docs/EXTENDING.md +85 -0
- package/.github/skills/test-case-validator/docs/FAQ.md +88 -0
- package/.github/skills/test-case-validator/docs/VERSIONING.md +55 -0
- package/.github/skills/test-case-validator/examples/example-1-manual-qa-ecommerce/input-brd.md +43 -0
- package/.github/skills/test-case-validator/examples/example-1-manual-qa-ecommerce/input-test-cases.csv +9 -0
- package/.github/skills/test-case-validator/examples/example-1-manual-qa-ecommerce/input-user-story.md +29 -0
- package/.github/skills/test-case-validator/examples/example-1-manual-qa-ecommerce/output-report.md +303 -0
- package/.github/skills/test-case-validator/examples/example-2-automated-frontend-suite/input-spec.md +43 -0
- package/.github/skills/test-case-validator/examples/example-2-automated-frontend-suite/input-test-files-index.md +56 -0
- package/.github/skills/test-case-validator/examples/example-2-automated-frontend-suite/output-report.md +274 -0
- package/.github/skills/test-case-validator/prompts/00-applicability-resolution.md +61 -0
- package/.github/skills/test-case-validator/prompts/01-extraction-user-story.md +58 -0
- package/.github/skills/test-case-validator/prompts/02-extraction-brd.md +64 -0
- package/.github/skills/test-case-validator/prompts/03-extraction-test-cases.md +92 -0
- package/.github/skills/test-case-validator/prompts/04-traceability-matrix.md +41 -0
- package/.github/skills/test-case-validator/prompts/05-coverage-analysis.md +46 -0
- package/.github/skills/test-case-validator/prompts/06-missing-scenario-detection.md +32 -0
- package/.github/skills/test-case-validator/prompts/07-duplicate-detection.md +36 -0
- package/.github/skills/test-case-validator/prompts/08-risk-analysis.md +39 -0
- package/.github/skills/test-case-validator/prompts/09-gated-wiring-validation.md +53 -0
- package/.github/skills/test-case-validator/prompts/10-observation-report.md +56 -0
- package/.github/skills/test-case-validator/prompts/11-final-report-assembly.md +57 -0
- package/.github/skills/test-case-validator/templates/coverage-table.md +25 -0
- package/.github/skills/test-case-validator/templates/executive-summary.md +38 -0
- package/.github/skills/test-case-validator/templates/final-summary-block.md +87 -0
- package/.github/skills/test-case-validator/templates/observation-entry.md +41 -0
- package/.github/skills/test-case-validator/templates/rtm-row.md +25 -0
- package/.github/skills/validation-engine-builder/README.md +50 -0
- package/.github/skills/validation-engine-builder/SKILL.md +241 -0
- package/.github/skills/validation-engine-builder/references/core.md +158 -0
- package/.github/skills/validation-engine-builder/references/platform-angular.md +166 -0
- package/.github/skills/validation-engine-builder/references/platform-flutter.md +118 -0
- package/.github/skills/validation-engine-builder/references/platform-react-native.md +170 -0
- package/.github/skills/validation-engine-builder/references/platform-react.md +94 -0
- package/.github/skills/validation-engine-builder/scripts/apply-to-project.js +80 -0
- package/.github/skills/validation-engine-builder/scripts/generate-angular.js +271 -0
- package/.github/skills/validation-engine-builder/scripts/generate-flutter.js +298 -0
- package/.github/skills/validation-engine-builder/scripts/generate-react-native.js +217 -0
- package/.github/skills/validation-engine-builder/scripts/generate-react.js +163 -0
- package/.github/skills/validation-engine-builder/scripts/install-deps.js +53 -0
- package/.github/skills/validation-engine-builder/scripts/shared/detect-platform.js +68 -0
- package/.github/skills/validation-engine-builder/scripts/shared/npm-deps.js +103 -0
- package/.github/skills/validation-engine-builder/scripts/shared/rhf-hook.js +43 -0
- package/.github/skills/validation-engine-builder/scripts/shared/ts-messages-regex.js +62 -0
- package/.github/skills/validation-engine-builder/scripts/shared/util.js +44 -0
- package/.github/skills/validation-engine-builder/scripts/shared/yup-schemas.js +80 -0
- package/.github/skills/validation-engine-builder/template.md +73 -0
- package/.github/skills/validation-engine-builder/templates/messages.json +22 -0
- package/.github/skills/validation-engine-builder/templates/regex.json +16 -0
- package/.github/skills/validation-engine-builder/templates/schemas.json +48 -0
- package/bin/index.js +145 -0
- package/package.json +22 -0
- package/readme.md +0 -0
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
# Skill Execution Template: Encryption-Decryption Generator
|
|
2
|
+
|
|
3
|
+
Use this template whenever this skill is invoked. Follow steps in order.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 0) Pre-Flight: Dependency Chain Check (React Native projects only)
|
|
8
|
+
|
|
9
|
+
Before asking any questions, verify the dependency chain will work:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
node -p "require('./package.json').dependencies['react-native']"
|
|
13
|
+
npm ls react-native-quick-crypto react-native-nitro-modules react-native-worklets buffer 2>&1
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
If React Native >= 0.76 and `react-native-quick-crypto` >= 1.0 will be used:
|
|
17
|
+
- `react-native-nitro-modules` MUST be installed (peer dep, not auto-installed reliably)
|
|
18
|
+
- `react-native-worklets` MUST be installed (peer dep)
|
|
19
|
+
- After install, Android `.cxx` cache MUST be cleaned before building
|
|
20
|
+
- See `references/dependency-guidance.md` → "CRITICAL: Transitive Dependencies" for version matrix
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 1) Platform and Approach Gate (Ask First)
|
|
25
|
+
|
|
26
|
+
Before any other question, confirm:
|
|
27
|
+
|
|
28
|
+
1. **Which platform?**
|
|
29
|
+
Options: `angular`, `web`, `node`, `android`, `ios`, `flutter`, `react`, `react-native`
|
|
30
|
+
Default for this workspace: `react-native`
|
|
31
|
+
|
|
32
|
+
2. **For React Native — which encryption layer?**
|
|
33
|
+
- **React Native (JS)** — JS-based crypto using `react-native-quick-crypto`. Default = approach 4.
|
|
34
|
+
- **Native** — Device OS-level crypto. Android `javax.crypto.Cipher` + iOS CryptoKit/CommonCrypto. Default = approach 5.
|
|
35
|
+
If omitted, apply default (React Native JS / approach 4) and continue.
|
|
36
|
+
|
|
37
|
+
3. **For React Native — which encryption model?**
|
|
38
|
+
- **RSA** (default) — RSA-OAEP key wrapping. Approach 4 (JS) or 5 (Native).
|
|
39
|
+
- **EC** — ECDH P-256 + HKDF-SHA256 + AES-256-GCM. Approach 6. Per-request or session-init contract.
|
|
40
|
+
If omitted, apply RSA default.
|
|
41
|
+
|
|
42
|
+
4. **Which approach?** (validate against `assets/platform-matrix.json`)
|
|
43
|
+
|
|
44
|
+
Collect all remaining configuration questions in one pass using `templates/config-questionnaire.md`.
|
|
45
|
+
Do not write any files until all answers are received and validated.
|
|
46
|
+
Apply documented defaults automatically for unanswered non-critical fields.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 2) Confirmed Configuration Snapshot
|
|
51
|
+
|
|
52
|
+
Record final selections before implementation (copy from `templates/config-questionnaire.md`):
|
|
53
|
+
|
|
54
|
+
- Platform:
|
|
55
|
+
- Approach:
|
|
56
|
+
- Encryption layer (RN only): React Native (JS) / Native
|
|
57
|
+
- RSA padding: Default = RSA-OAEP
|
|
58
|
+
- RSA key source: Default = API
|
|
59
|
+
- RSA key endpoint: Default = `<API_BASE_URL>/api/security/public-key`
|
|
60
|
+
- RSA key retries: Default = 3
|
|
61
|
+
- RSA key response format: Default = `{ public_key: string, key_id: string, expires_at?: string }`
|
|
62
|
+
- RSA key caching policy: Default = in-memory only (never persist to disk or storage)
|
|
63
|
+
- [EC model only] EC contract type: Default = per-request (**ask developer** for session-init; no default)
|
|
64
|
+
- [EC model only] EC key endpoint: Default = `<API_BASE_URL>/api/security/ec-public-key`
|
|
65
|
+
- [EC session-init only] `SESSION_INIT_ENDPOINT`: **REQUIRED — ask developer, no default**
|
|
66
|
+
- [EC session-init only] `CREATE_SESSION_ENDPOINT`: **REQUIRED — ask developer, no default**
|
|
67
|
+
- [EC session-init only] `HKDF_INFO` string: **REQUIRED — ask developer, no default** (never assume `'enc'`)
|
|
68
|
+
- [EC session-init only] `AAD_SHAPE` (canonical JSON field list): **REQUIRED — ask developer, no default**
|
|
69
|
+
- [EC session-init only] `NONCE_FORMAT` (length, charset, encoding): **REQUIRED — ask developer, no default**
|
|
70
|
+
- [EC session-init only] `RESPONSE_ENCODING` (standard-base64 / base64url): **REQUIRED — ask developer, no default**
|
|
71
|
+
- [EC session-init only] `DEVICE_ID_SOURCE`: **REQUIRED — ask developer, no default**
|
|
72
|
+
- [EC session-init only] `encrypted_shared_aes_key` handling: **REQUIRED — ask developer** (used / ignored)
|
|
73
|
+
- API client type: Default = Axios
|
|
74
|
+
- API layer path: Default = `src/services/api.ts`
|
|
75
|
+
- Encryption toggle: Default = env-flag
|
|
76
|
+
- HMAC signing: Default = No
|
|
77
|
+
- URL exclusions: Default = none
|
|
78
|
+
- [Native mode only] Min iOS version: Default = 13
|
|
79
|
+
- [Native mode only] Android Kotlin package: Default = `com.example.security`
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## 3) Project Analysis
|
|
84
|
+
|
|
85
|
+
Before writing any file, identify existing structure to avoid duplication:
|
|
86
|
+
|
|
87
|
+
- API client file location:
|
|
88
|
+
- Existing interceptor location (if any):
|
|
89
|
+
- Config / env module (react-native-config, dotenv, etc.):
|
|
90
|
+
- Token / storage service:
|
|
91
|
+
- App startup / init file (`index.js`, `main.ts`, `App.tsx`, etc.):
|
|
92
|
+
- [Native mode] Android native modules folder (`android/app/src/main/java/...`):
|
|
93
|
+
- [Native mode] iOS native modules folder (`ios/`):
|
|
94
|
+
- [Angular] NgModule or standalone (check for `src/app/app.module.ts`):
|
|
95
|
+
|
|
96
|
+
Do not create unnecessary folders or duplicate existing architecture.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 4) Dependency and Compatibility Check
|
|
101
|
+
|
|
102
|
+
1. Read React Native / framework version from `package.json` or project manifest.
|
|
103
|
+
2. Check existing crypto, keychain, and network dependencies.
|
|
104
|
+
3. Use `references/dependency-guidance.md` to select compatible package versions.
|
|
105
|
+
4. Identify which packages are already installed (skip those).
|
|
106
|
+
5. Propose install command for new packages only.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## 5) Run detect.js
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
node scripts/detect.js --project-path <projectPath>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
- Exit 0 (ENCRYPTION_NOT_FOUND): proceed normally.
|
|
117
|
+
- Exit 1 (ENCRYPTION_FOUND): display the reuse/replace/refactor/cancel menu and wait for user input before continuing.
|
|
118
|
+
- Exit 2 (input error): report and halt.
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## 6) Implementation Plan
|
|
123
|
+
|
|
124
|
+
Fill out `templates/implementation-plan.md` before writing any files:
|
|
125
|
+
|
|
126
|
+
React Native JS mode files to write:
|
|
127
|
+
- `src/services/security/types.ts`
|
|
128
|
+
- `src/services/security/encryption.service.ts`
|
|
129
|
+
- `src/services/security/decryption.service.ts`
|
|
130
|
+
- `src/services/security/rsa-key.service.ts`
|
|
131
|
+
- `src/services/security/keychain.service.ts`
|
|
132
|
+
- `src/services/security/hmac.service.ts`
|
|
133
|
+
- `src/services/security/encryption-config.ts`
|
|
134
|
+
- `src/services/security/encryption.interceptor.ts`
|
|
135
|
+
|
|
136
|
+
EC mode (approach 6) files to write:
|
|
137
|
+
- `src/services/security/types.ts` (add EC types alongside RSA types)
|
|
138
|
+
- `src/services/security/ec-key.service.ts`
|
|
139
|
+
- `src/services/security/ec-crypto.util.ts` (per-request: `ecEncryptPayload`/`ecDeriveKey`; session-init: `deriveSessionKey`/`sessionEncrypt`/`sessionDecrypt`)
|
|
140
|
+
- `src/services/security/keychain.service.ts`
|
|
141
|
+
- `src/services/security/hmac.service.ts` (if HMAC enabled)
|
|
142
|
+
- `src/services/security/encryption-config.ts`
|
|
143
|
+
- Patch `src/services/api.ts` with `ENCRYPTION_MODEL` routing
|
|
144
|
+
- `src/api/axiosInstance.ts` (create or patch)
|
|
145
|
+
- `index.js` (prepend polyfill)
|
|
146
|
+
|
|
147
|
+
Native mode additional files:
|
|
148
|
+
- `android/…/NativeCryptoModule.kt`
|
|
149
|
+
- `android/…/NativeCryptoPackage.kt`
|
|
150
|
+
- `ios/NativeCryptoModule.swift`
|
|
151
|
+
- `ios/NativeCryptoModule.m`
|
|
152
|
+
- `src/services/security/native-crypto.module.ts`
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## 7) Generate and Install Files
|
|
157
|
+
|
|
158
|
+
1. Build a resolved config from `assets/encryption-config-template.json` merged with collected inputs.
|
|
159
|
+
2. Write config to a temporary file (delete immediately after install regardless of exit code).
|
|
160
|
+
3. Run: `node scripts/install.js --config-json <tempFile> [--detection-mode <mode>]`
|
|
161
|
+
4. On exit 0: continue. On exit 1 or 2: report and halt.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## 8) Validation Checklist (Both Modes)
|
|
166
|
+
|
|
167
|
+
- POST/PUT/PATCH encrypted correctly.
|
|
168
|
+
- GET and FormData skipped.
|
|
169
|
+
- Nonce generated per request.
|
|
170
|
+
- Request map handles concurrency (unique `requestId` per request).
|
|
171
|
+
- Key unavailable path fails securely (blocks encrypted calls).
|
|
172
|
+
- Invalid auth tag path triggers secure logout/session reset.
|
|
173
|
+
- No sensitive logging.
|
|
174
|
+
- Auth tag verified on decryption.
|
|
175
|
+
|
|
176
|
+
React Native JS mode:
|
|
177
|
+
- AES-256-GCM and auth tag verified via `react-native-quick-crypto`.
|
|
178
|
+
|
|
179
|
+
Native mode:
|
|
180
|
+
- AES-256-GCM verified by native platform cipher (Android `javax.crypto.Cipher` / iOS CryptoKit).
|
|
181
|
+
- `NativeModules.NativeCryptoModule` accessible from JS at startup.
|
|
182
|
+
|
|
183
|
+
Run items from `references/security-checklist.md` (platform section) and `templates/delivery-checklist.md`.
|
|
184
|
+
|
|
185
|
+
### EC Mode (Approach 6) Additional Validation
|
|
186
|
+
|
|
187
|
+
- Server EC public key validated: 65 bytes, first byte `0x04`.
|
|
188
|
+
- ECDH shared secret computed correctly.
|
|
189
|
+
- Derived AES key never logged or transmitted — only `ephemeral_public_key` in envelope.
|
|
190
|
+
- Ephemeral EC key pair discarded after `computeSecret()`.
|
|
191
|
+
- `toBase64()` helper used everywhere — NOT `Buffer.toString('base64')` (broken on Hermes).
|
|
192
|
+
- `byteCopy()` used on sliced buffers before passing to quick-crypto native code.
|
|
193
|
+
- Dual Buffer imports compile without conflict (`Buffer from 'buffer'` + `Buffer as QCBuffer from 'react-native-quick-crypto'`).
|
|
194
|
+
|
|
195
|
+
### Session-Init EC Mode (Additional Validation)
|
|
196
|
+
|
|
197
|
+
- `deriveSessionKey()` uses backend's exact HKDF `info` string (not `'enc'`).
|
|
198
|
+
- `buildSessionAad()` produces canonical JSON with alphabetically sorted keys.
|
|
199
|
+
- `sessionEncrypt()` uses nonce-as-IV and correct AAD (confirmed from contract).
|
|
200
|
+
- `sessionDecrypt()` uses correct IV source (confirmed from contract).
|
|
201
|
+
- `urlSafeBase64ToStd()` applied to all base64url fields from server.
|
|
202
|
+
- `initEncryptionSession` sends real freshly-generated `client_ecdh_pub`.
|
|
203
|
+
- `createSession` runs only after `initEncryptionSession` succeeds.
|
|
204
|
+
- `encrypted_shared_aes_key` handling matches confirmed contract.
|
|
205
|
+
- `device_id` consistent across init, HKDF, AAD, and encrypted requests.
|
|
206
|
+
- Nonce format matches backend contract exactly.
|
|
207
|
+
- Nonce generator uses CSPRNG (`randomBytes`) — NOT `Math.random()` — nonce IS the AES-GCM IV.
|
|
208
|
+
- Token persistence is separate from session key lifetime.
|
|
209
|
+
- Dead debug code removed (unwrapSessionKey, tryAesGcmDecrypt, hkdfExpandOnly, hkdfSwapped).
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## 9) Backend Alignment
|
|
214
|
+
|
|
215
|
+
For approaches 4 and 5, print the full backend contract from `references/backend-alignment.md` so the user can share it with their server team.
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## 10) Build Verification
|
|
220
|
+
|
|
221
|
+
Read `buildCommand` from `assets/platform-matrix.json` for the selected platform and run it.
|
|
222
|
+
Retry up to 3 times on failure, then report exit code 4.
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## 11) Setup Report
|
|
227
|
+
|
|
228
|
+
Print the 6-field setup report:
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
=== SETUP REPORT ===
|
|
232
|
+
Platform : <platform>
|
|
233
|
+
Approach : <approach>
|
|
234
|
+
HMAC enabled : <true|false>
|
|
235
|
+
URL exclusions : <comma-separated or blank>
|
|
236
|
+
Files written/patched : <integer>
|
|
237
|
+
Build status : <PASS|FAIL>
|
|
238
|
+
====================
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Include packages installed, any manual steps required (pod install, MainApplication registration), and residual risks.
|