Ничего смешного и абсурдного в этом вопросе нет.
Российский стандарт ЭЦП «слегка» отличается от западных стандартов digital signature
. Стандарт описан в ГОСТ Р 34.10-2012
По идее все российские ЭЦП должны соответствовать указанному стандарту, но, как говорится — в жизни бывает всякое.
ЭЦП на уровне данных, это по сути 2 набора данных: публичный ключ и приватный ключ. Приватный ключ никому не передается и хранится у обладателя. Публичный ключ рассылается всем желающим, то есть в рамках вашего сценария — предприятие высылает вам свой публичный ключ, чтобы получить доступ к вашему бесценному приложению.
Теперь внимание, вы должны понять, что публичный ключ принадлежит тому кто вам его выдал. Для этого существуют сертификаты публичных ключей. Вся фишка именно в этом. Если бы дело касалось западных digital signature, то в любом легальном Android устройстве хранятся корневые сертификаты крупнейших удостоверяющих центров (типа VeriSign, Thawte и проч.), с помощью которых легко можно понять кому принадлежит полученный ЭЦП. Российские корневые (квалифицированные) сертификаты надо получать в соответствующем удостоверяющем центре, в котором получен ЭЦП. Этих центров у нас прямо скажем много… При этом большинство из них не идентифицируют друг друга. На всякий случай корневой сертификат налоговой здесь, а Сбербанковский здесь — в общем понятно надеюсь.
Ближе к программированию. Упомянутый выше ГОСТ реализован в Bouncy Castle — для тех кто в танке — это один самых известных публичных API реализующих почти все мыслимые и немыслимые криптографические алгоритмы. И что особенно приятно, Bouncy Castle реализует алгоритмы в качестве стандартного Java Cryptography Extension провайдера.
Для Андроида есть специальный порт Bouncy Castle — называется Spongy Castle
Проверка юзера должна сводиться к:
- Получить корневой сертификат удостоверяющего центра
- Получить сертификат публичного ключа юзера
- Сверить его на валидность с корневым сертификатом удостоверяющего центра
Все это можно сделать программно (хотя и не просто…)
Далее уж гуглите сами на тему validate+certificate+java
Источник