Подтвердите подпись PHP ECDSA, созданную с помощью API Web Crypto.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Подтвердите подпись PHP ECDSA, созданную с помощью API Web Crypto.

Сообщение Anonymous »

У меня есть следующая задача.
Мне нужно сгенерировать пару ключей ECDSA. Подпишите данные закрытым ключом и проверьте подпись на PHP. По неизвестной мне причине я не могу успешно проверить данные.
Вот пример моего javascript, который генерирует ключи и подписывает данные.

Код: Выделить всё

(async () => {

async function arrayBufferToBase64(arrayBuffer) {
var binary = '';
var bytes = new Uint8Array(arrayBuffer);
var len = bytes.byteLength;
for (var i = 0; i < len; i++) {
binary += String.fromCharCode(bytes[i]);
}
return window.btoa(binary);
}

let keyPair = await window.crypto.subtle.generateKey(
{
name: "ECDSA",
namedCurve: "P-256",
},
false,
["sign", "verify"]);

let data = 'text_value';

let signature = await window.crypto.subtle.sign({
name: "ECDSA",
hash: { name: "SHA-256" },
}, keyPair.privateKey, new TextEncoder().encode(data));

console.log('Data: ' + data);

console.log('Signature: ' + await arrayBufferToBase64(signature));

console.log('Public key: ' + await arrayBufferToBase64(await window.crypto.subtle.exportKey('spki', keyPair.publicKey)));

})();


Этот код дает аналогичный результат.

Код: Выделить всё

Data: text_value
Signature: TfsoDx8TyuAth7SzsoagHVykRU+eNWaGOWEulrSjZ57KKa2T/8zO/7+/8TvRXLvuXSbEloRFbigzUpIlOlGMcw==
Public key: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE01iwlSEr1pLOLu2Ks9gxMhH7C3NWQ95yKO2vvv7XYfRGKAVRaLVLJ6j3J6klnNez5kWeECdJ1OhoQULEyokEZQ==
Имея данные, подпись и открытый ключ, я отправляю их в PHP для проверки подписи.
У меня есть следующий код PHP (я использую php 8.1):

Код: Выделить всё


Подробнее здесь: [url]https://stackoverflow.com/questions/78496615/verify-with-php-ecdsa-signature-generated-with-web-crypto-api[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»