Кодирование и декодирование подписи в сертификации, сгенерированной forge

#node.js #ssl #node-forge

#node.js #ssl #узел-forge

Вопрос:

Я использую node-forge для создания и проверки сертификатов

Я создаю и проверяю сертификаты, и, кажется, все работает отлично, но когда дело доходит до той части, где мне нужно предоставить подпись для сертификата, это не удается

Чтобы уточнить: мне нужно предоставить подпись для сертификата, где подпись хэшируется с использованием RSA, а подпись содержит данные о клиенте и его ролях

способ, которым я создаю подпись

 const createSignture = (privateKey, data) => {
  // The signature method takes the data we want to sign, the
  // hashing algorithm, and the padding scheme, and generates
  // a signature in the form of bytes
  const signature = crypto.sign("sha256", Buffer.from(data), {
    key: privateKey,
    padding: crypto.constants.RSA_PKCS1_PSS_PADDING,
  });

  return signature.toString("base64");
};
 

Когда я создаю сертификат с помощью forge, я делаю это так:

 const cert = forge.pki.createCertificate();
....
cert.signature = createSignture(privateKey, userUniqueId);
...
 

И когда я проверяю сертификат, я пытаюсь проверить подпись

 const verifySignture = (publicKey, signture, data) => {
  // To verify the data, we provide the same hashing algorithm and
  // padding scheme we provided to generate the signature, along
  // with the signature itself, the data that we want to
  // verify against the signature, and the public key
  return crypto.verify(
    "sha256",
    Buffer.from(data),
    {
      key: publicKey,
      padding: crypto.constants.RSA_PKCS1_PSS_PADDING,
    },
    signture
  );
};


const certSignture = cert.signature;
const decodedSignature = Buffer.from(forge.util.binary.raw.decode(certSignture)).toString("base64");


verifySignture(publicKey, decodedSignature, userUniqueId) // This always returns false

 

Я не очень уверен, что я должен указывать роли, идентификатор пользователя и т. Д. В подписи.

Я пробовал много часов, и ничего не работает, поэтому я был бы очень признателен за любую помощь