В настоящее время я разрабатываю веб-приложение, в котором я использую цифровую подпись форм, используя карту гражданина Португалии и java-апплеты.
С обычными формами все шло гладко, пока я не столкнулся с проблемой ввода файлов типа. Приложение поддерживает вложения, поэтому я создал отдельный менеджер вложений, где пользователь может отправлять или просматривать вложения. При отправке необходимо иметь два способа сделать это: обычная закачка или подписать файл и потом залить.
Моя первая идея состояла в том, чтобы позволить пользователю выбрать файл в типе ввода = "файл", и если он / она нажмет "подписать и загрузить", он запустит java-апплет для создания подписи, которая будет помещена в скрытый ввод. Проблема заключается в ограничениях безопасности html, которые делают выбранное значение файла недоступным для javascript (который также запрещает доступ к java-аплету) в некоторых браузерах.
Я также подумал о том, чтобы вычислить хэш файла, который будет подписан на стороне сервера, а затем подписать его на стороне клиента, но это также не вариант. Определение хэша и его подписи должно быть на стороне клиента (юридические причины).
Другая идея состояла в том, чтобы использовать что-то вроде JUpload, но он не поддерживает некоторые случаи, когда соединение осуществляется через канал SSL с сертификатом клиента (что может произойти в зависимости от того, как был выполнен вход в веб-приложение).
Наконец, у меня даже возникла абсурдная идея открыть файл в апплете, подписать его, а затем сохранить на скрытом вводе в base64. Очевидно, что это создает огромные ограничения на размер файла.
Итак, мой вопрос: каков наилучший подход к этой проблеме? Какие-либо предложения?
Заранее спасибо ;)