Я использую forge на клиенте, где я создаю подпись следующим образом.
//Client Side
var md = forge.md.sha256.create();
md.update(encryptedVote, 'utf8');
var pss = forge.pss.create({
md: forge.md.sha256.create(),
mgf: forge.mgf.mgf1.create(forge.md.sha256.create()),
saltLength: 20
});
var signature = privateKey.sign(md, pss);
Затем на сервере я пытаюсь проверить подпись с помощью Библиотека криптографии выглядит следующим образом.
#server side
user_public_key_loaded.verify(
signature,
enc_encrypted_vote,
padding.PSS(
mgf=padding.MGF1(hashes.SHA256()),
salt_length=20
),
hashes.SHA256()
)
Я постоянно получаю ошибку недопустимой подписи.Я попытался изменить кодировку на клиенте на md.update(encryptedVote, 'latin1');
и теперь иногда работает, а некоторые другие - нет.
Есть идеи, что я делаю не так?