KeiSeiKit-1.0/_primitives/_rust/kei-buddy/src
Parfii-bot c844524f68 fix(kei-buddy): close 3 HIGH audit findings from session multi-critic swarm
1. OID-check в parse_x25519_pkcs8_pem
   До: брался последний 32-байтный slice любого PKCS#8 DER, OID не
   проверялся. RSA/EC/Ed25519 ключ молча давал 32 неправильных байта
   → decrypt падал с generic "wrong key" без объяснения.
   После: строгая проверка длины (48 байт) + OID 1.3.101.110 (X25519,
   byte slice 9..12 = 0x2b,0x65,0x6e). Внешний openssl ключ другого
   алгоритма теперь даёт явную ошибку с указанием реального OID.
   Константы X25519_OID + X25519_PKCS8_DER_LEN.
   RFC 8410 §3 + §7 ссылка в doc-комментарии.

2. x25519-dalek feature `zeroize`
   До: features=["static_secrets"] — StaticSecret хранил priv-ключ
   в куче без затирания при Drop. Локальный priv_raw.zeroize() стирал
   только стек-копию, оригинал в куче оставался до GC.
   После: features=["static_secrets","zeroize"] — StaticSecret сам
   реализует ZeroizeOnDrop, ключ затирается при выходе из scope.

3. Два новых теста:
   - parse_rejects_wrong_length_der — 32-байтный DER (вместо 48)
     отклоняется с сообщением про "48 bytes"
   - parse_rejects_wrong_oid — DER с OID Ed25519 (0x2b,0x65,0x70)
     отклоняется с сообщением про "X25519"

   8/8 тестов модуля проходят, cargo check workspace чисто.

Старая 0.14.5 mcp-server (с source maps содержавшими /Users/
denisparfionovich/...) удалена с keigit.com отдельной операцией
через Forgejo DELETE API.
2026-05-17 13:41:18 +08:00
..
bin feat(kei-buddy): provision_decrypt — VPS-side blob decryption 2026-05-15 17:49:59 +08:00
chat_log.rs feat(kei-buddy): wire kei-chat-store — log every user/bot message with FTS5 2026-05-12 15:51:24 +08:00
command_exec.rs feat(contacts): glue sync + Google pagination + Apple discovery & folding 2026-05-12 17:04:15 +08:00
commands.rs feat(contacts): glue sync + Google pagination + Apple discovery & folding 2026-05-12 17:04:15 +08:00
contacts.rs feat(kei-buddy): wire kei-social-store + kei-sage — contacts + topics + FTS5 2026-05-12 16:05:32 +08:00
contacts_sync.rs feat(contacts): glue sync + Google pagination + Apple discovery & folding 2026-05-12 17:04:15 +08:00
conversational.rs feat(kei-buddy): conversational LLM-driven flow + kei-sage retrieval (graph-RAG) 2026-05-12 19:00:27 +08:00
error.rs feat(kei-buddy): functional MVP — store + state-machine port + serve binary 2026-05-12 14:21:33 +08:00
extractor.rs feat(kei-buddy): wire OpenAiExtractor + chat_id whitelist + env-configurable LLM 2026-05-12 14:49:43 +08:00
lib.rs feat(kei-buddy): provision_decrypt — VPS-side blob decryption 2026-05-15 17:49:59 +08:00
machine.rs feat(kei-buddy): AskLanguage i18n + real proposeTopicSources + voice handling 2026-05-12 17:49:06 +08:00
machine_helpers.rs feat(kei-buddy): AskLanguage i18n + real proposeTopicSources + voice handling 2026-05-12 17:49:06 +08:00
machine_lang.rs feat(kei-buddy): AskLanguage i18n + real proposeTopicSources + voice handling 2026-05-12 17:49:06 +08:00
machine_tests.rs feat(kei-buddy): AskLanguage i18n + real proposeTopicSources + voice handling 2026-05-12 17:49:06 +08:00
machine_tests_topic_research.rs feat(kei-buddy): AskLanguage i18n + real proposeTopicSources + voice handling 2026-05-12 17:49:06 +08:00
persona_merge.rs feat(kei-buddy): functional MVP — store + state-machine port + serve binary 2026-05-12 14:21:33 +08:00
provision_decrypt.rs fix(kei-buddy): close 3 HIGH audit findings from session multi-critic swarm 2026-05-17 13:41:18 +08:00
retrieval.rs feat(kei-buddy): conversational LLM-driven flow + kei-sage retrieval (graph-RAG) 2026-05-12 19:00:27 +08:00
schema.rs feat(kei-buddy): functional MVP — store + state-machine port + serve binary 2026-05-12 14:21:33 +08:00
serve.rs feat(kei-buddy): conversational LLM-driven flow + kei-sage retrieval (graph-RAG) 2026-05-12 19:00:27 +08:00
serve_runner.rs feat(kei-buddy): AskLanguage i18n + real proposeTopicSources + voice handling 2026-05-12 17:49:06 +08:00
serve_telegram.rs feat(kei-buddy): functional MVP — store + state-machine port + serve binary 2026-05-12 14:21:33 +08:00
state.rs feat(kei-buddy): AskLanguage i18n + real proposeTopicSources + voice handling 2026-05-12 17:49:06 +08:00
store.rs feat(kei-buddy fleet): 5 atomics — google/apple contacts + classifier + tick + slash-commands 2026-05-12 16:33:58 +08:00
store_ops.rs feat(kei-buddy): functional MVP — store + state-machine port + serve binary 2026-05-12 14:21:33 +08:00
strings.rs feat(kei-buddy): AskLanguage i18n + real proposeTopicSources + voice handling 2026-05-12 17:49:06 +08:00
tick.rs feat(kei-buddy fleet): 5 atomics — google/apple contacts + classifier + tick + slash-commands 2026-05-12 16:33:58 +08:00
topic_classify.rs feat(kei-buddy fleet): 5 atomics — google/apple contacts + classifier + tick + slash-commands 2026-05-12 16:33:58 +08:00
topics.rs feat(kei-buddy): wire kei-social-store + kei-sage — contacts + topics + FTS5 2026-05-12 16:05:32 +08:00
transition.rs feat(kei-buddy): functional MVP — store + state-machine port + serve binary 2026-05-12 14:21:33 +08:00
voice.rs feat(kei-buddy): AskLanguage i18n + real proposeTopicSources + voice handling 2026-05-12 17:49:06 +08:00