Подпись файла и проверка как на ezSigner

Салем!
Пытаюсь сделать подпись и проверку файла так же как и ezSigner, чтобы если что можно было бы потом проверить пользователям свою подпись и посмотреть сам оригинальный файл на этом же ezSigner портале, на случай если пользователь хотел удостовериться в двойне. Но никак не могу найти информацию как ezSigner подписывает файл.

У меня есть идея чтобы фронт перед подписью через NCALayer, этот файл для подписи превратил в base64 и подписывает эти огромные base64 данные. Потом эту PEM подпись отправляет мне на бекенд, я валидирую PEM подпись, сертификат на отозванность. После на бекенде формирую .cms файл с этой PEM подписью, так же еще формирую оригинальный файл вытащив signData из PEM подписи (не пробовал, но по форуму видел что вытащить данные из подписи возможно).

Но тут выходят всякие проблемы в этом System Design’e.

  1. Проблемно узнать расширение оригинального файла. (При генерации с base64 на file, на бекенде)
  2. На фронте злоумышленник может подменить либо файл, либо после конверта файла в base64 сам base64. В итоге подпишется вообще рандомный файл
  3. Начнется хаос если подписывать нужно нескольким пользователям один и тот же файл

Как мне лучше реализовать подписи файлов через SDK? Какой System design будет лучший по безопасности. Мне нравится как на ezSigner, но пока не нашел как они формируют .cms файл и в целом что именно подписывают, что в итоге потом получается вернуть аж оригинальный файл. Рахмет

У меня получилось это реализовать. Вышло вот так, если в кратце: саму PEM подпись полученную с фронта нужно с нее убрать header и footer PEM файла, и после сконвертировать в base64 затем этот base64 в .cms файл, и естественно куча проверок самой подписи на валидность и т.д. Есть вопрос, нормально ли такое решение, легитимное для использования?