Saltar a contenido

Баримт ба гарын үсэг

Хоёр рэйл, нэг баримтын сан. internal/workspace/signing ба pkg/nexus-ийн кодоос уншиж бичигдсэн.

Баримтын төв · Модуль бичих


Хоёр рэйл

HSM eID
Юу вэ Gerege eSign тоног төхөөрөмж Gerege ID алсын гарын үсэг
Хувийн түлхүүр хаана Сервер тал Иргэний өөрийн төхөөрөмж
Иргэн юу хийх вэ Утас + регистрээр гэрчилгээгээ нотолж, гарын үсгээ зурна PIN2-оор зөвшөөрнө
Урсгал Синхрон Асинхрон: эхлүүлэх → код харуулах → poll → татах
Хуулийн хүч Энгийн Баталгаажсан (qualified)

Хоёр рэйл нь хуулийн хувьд солигдож болохгүй. Зөвхөн eID нь баталгаажсан цахим гарын үсэг үүсгэдэг — тиймээс тэр нь анхдагч, мөн тиймээс байгууллага HSM-ийг гарын үсгийн бодлогоосоо бүрмөсөн унтрааж чадна.

Энэ нь апп биш

signing нь модуль бүртгүүлдэггүй: ID(), Menus(), Permissions() гэж хариулдаггүй, каталогт ч манифестэд ч байхгүй. Аппын дүр төрх өгч байсан гурван зүйл — internal/apps доорх хавтас, Module нэртэй төрөл, RegisterRoutes нэртэй метод — нь хэрэгжүүлээгүй гэрээний гурван дуураймал байсан.

Энэ нь documents аппын хэсэг. Эрхийн нэр нь ч тийм:

documents.read    documents.sign    documents.manage

Хоёр эрхийн орон зайтай апп нь администраторыг гарын үсэг зурах эрхийг хоёр өөр газар, хоёр удаа олгохыг шаардана — тэгээд өмнөх нь дэлгэц дээрх товч аль нэгийг нь дагаж байгааг ялгах арга байхгүй.

Платформын нэгдсэн аппын хаалт эдгээрийг илэрхийлж чадахгүй — гарын үсэг зурах нь байршуулахтай ижил эрх биш — тиймээс handler бүр өөрийн эрхээ шууд шаардана.

Модульд хэрхэн харагдах вэ

nexus.Signer   // Enabled() bool; SignDigest(...); SignDocument(...)

eID бүртгэлгүй суулгац ч рэйл авна: тэр нь Enabled() false гэж хариулна — энэ бол үнэн байдал, мөн модулийн асуух ёстой асуулт.

Обёртка байгаагийн шалтгаан: eidsign-ийн төрлүүд энд зогсоно. Өөр репод nexus.Signer-ийн эсрэг модуль бичиж байгаа хүн энэ суулгац яг хэрхэн гарын үсэг зурдгаас хамаарах ёсгүй.

PDF-д гарын үсэг (SignDocument)

eID PDF-д гарын үсэг суулгадаггүй болсон (/signature/stamp 2026-10 сард хасагдсан). PDF eID-д очихгүй; internal/kernel/eidsign нь eID-ийн SDK-ийн pades багцаар баримтыг өөрөө угсарна, eID зөвхөн 32 байт DTBS зурна:

  1. SignDocument — иргэний утсанд гарын үсгийн гэрчилгээ сонгуулах хүсэлт (certificate choice, PIN-гүй). Буцах VerificationCode нь энэ алхмынх.
  2. Сонголт ирэхэд — тэр гэрчилгээгээр pades.Prepare, DTBS-ийг ЯГ тэр төхөөрөмж рүү PIN2-оор. Утсан дээр PIN2-ын алхам өөрийн шинэ кодтой.
  3. PIN2-ын дараа — гарын үсэг digest-ийн рэйлтэй ижил шалгалтаар (eidrp.VerifySignedDigest, DTBS-ийн эсрэг), гэрчилгээ нь сонгосонтой ижил байх.
  4. SignedDocument — pades.Complete (TSA + OCSP/CRL → PAdES-BASELINE-LT) ба eID-д бүртгэл (/verify). TSA/OCSP түр унавал алдаа; дахин дуудахад ижил гарын үсгийг PIN2-гүйгээр дуусгана.

Дуудагчид нэг session: PollSignature хоёр алхмын турш running, session id өөрчлөгдөхгүй. Хүлээлтийн хугацааг eID-ийн session-ий expiresAt тогтооно. Байгууллагын нэрийн өмнөөс бол eID-ийн тооцоолсон claimedRole гарын үсэгт, onBehalfOf PIN2-ын session-д орно.

Байгууллагын нэрийн өмнөөс

nexus.OrganisationSigner // SignForOrganisation(...); OrganisationSignature(...)

Signer-т арга нэмээгүй, тусдаа чадвар — Signer-ийг өөрөө хэрэгжүүлсэн distribution эвдрэхгүй. Түлхүүр нь хэвээр иргэнийх (өөрийн PIN2, хувийн гэрчилгээ); eID ceremony эхлэхэд төлөөлөх эрхийг шалгаж, байгууллагын нэрийг гарын үсэгт бичнэ. Энэ нь төлөөллийн бичлэг, байгууллагын тамга биш.

eID-ээс юу ч асуухаас өмнө, дарааллаар:

  1. Дуудагч WorkspaceID-д идэвхтэй байна, impersonate биш, модулийн Permission-ийг эзэмшинэ → эс бөгөөс nexus.ErrForbidden (403).
  2. Бүртгэлд холбогдсон eID байна → nexus.ErrNoSignerIdentity.
  3. Байгууллагын профайлд улсын бүртгэлийн дугаар байна (tenant_profiles.registration_number) → nexus.ErrNoOrganisationRegister.
  4. eID-ийн representations жагсаалтад NTRMN-<регистр> одоо хүчинтэй байна → nexus.ErrNotRepresentative (403). eID өөрөө 403 өгвөл мөн энэ алдаа.

Дараа нь esign.org_sign_requested audit мөр, дараа нь onBehalfOf-тэй ceremony. Буцсан session нь энгийн session: Signer.PollSignature, SignedDocument, VerifiedDigest-д SignerRegNumber-ийг эзэн болгон өгнө. Дууссаны дараа OrganisationSignature нь eID баталсан байгууллагын нэр, регистр, зурсан хүн, цаг, гэрчилгээг буцаана.

documents аппын Policy.AllowOnBehalfOf энд хамаарахгүй: модулийн зам өөрийн эрхээр (<app>.sign) хаалгатай.

Төлөвүүд

Баримт   PENDING → SIGNED
Session  pending → completed | failed | expired | rejected
Багц     DRAFT → RUNNING → COMPLETED | FAILED | CANCELLED

Session-ий төлөв нь жижиг үсгээр — браузерын poll хийдэг үгсийн сан яг тийм байдаг.