Цифровые подписи в формате pdf

#node.js #pdf #digital-signature #pkcs#7 #google-cloud-kms

#node.js #PDF #цифровая подпись #pkcs#7 #google-облако-kms

Вопрос:

Я пытаюсь подписать PDF-файл цифровой подписью, используя подпись в формате PKCS # 7 в NodeJS.

Настройка:

Node-forge отлично справляется с созданием формата PKCS # 7. Я уже подтвердил, что конечный результат библиотеки соответствует моим потребностям. По умолчанию pkcs7 требует ввода:

  1. Сертификат, содержащий открытый ключ подписавшего
  2. Двоичное содержимое, подлежащее подписи
  3. Закрытый ключ подписывающего

Проблема:

Я хочу сгенерировать и сохранить ключи моего подписывающего (пользователя) в HSM, чтобы закрытый ключ не был доступен мне напрямую. Таким образом, вместо подписываемого содержимого (2.) и закрытого ключа подписывающего (3.) Я могу предоставить конечный результат — подписанный контент в качестве входных данных. Я не смог найти возможность сделать это в node-forge или любой другой библиотеке javascript.

Для справки, для команды openssl требуются те же 3 параметра.

Я нашел решение для java, используя библиотеку bouncycastle. Это дает возможность реализовать интерфейс ContentSigner. В принципе, вы можете сообщить библиотеке: «получайте подпись отсюда всякий раз, когда вы подписываете файл», поэтому теоретически должно быть возможно создать PKCS # 7 только с сертификатами и подписанным содержимым.

Вопрос:

Как я могу сгенерировать PKCS # 7 или любой другой допустимый формат подписи PDF, используя только сертификат и подписанное содержимое файла?

Комментарии:

1. Пожалуйста, предоставьте дополнительную информацию со ссылкой на ваш тег для Google-cloud-kms. Вы ищете решение для применения pkcs7 по умолчанию с GCP KMS / HSM для вашего PDF-файла?

2. Да, я использую клиентскую библиотеку nodejs-kms для создания подписи . Я хочу применить эту подпись к формату подписанных данных pkcs7, который позже будет встроен в мой PDF-файл.

3. Использовали ли вы поддерживаемый Google документ о цифровой подписи и создании и проверке подлинности цифровых подписей ? Наблюдали ли вы ошибку при применении этой подписи к формату подписанных данных pkcs7? Не могли бы вы, пожалуйста, предоставить мне дополнительную информацию и скриншоты любого сообщения об ошибке?

4. Да, я использую kms через клиентскую библиотеку для nodejs. Я создаю цифровую подпись с помощью знакосимметричной функции. Проблема в том, что я не могу поместить эти подписанные данные непосредственно в pdf. Согласно спецификации pdf, сначала мне нужно встроить его в формат PKCS # 7, и я не уверен точно, как это сделать.