Получить ключ ECDSA по идентификатору для функции openssl_verify

Мне нужна небольшая помощь.
У меня есть текстовый файл с открытыми ключами ECDSA:

KEY_ID: 1
STATUS: VALID
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+Y5mYZL/EEY9zGji+hrgGkeoyccK
D0/oBoSDALHc9+LXHKsxXiEV7/h6d6+fKRDb6Wtx5cMzXT9HyY+TjPeuTg==
-----END PUBLIC KEY-----

KEY_ID: 2
STATUS: VALID
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaq6djyzkpHdX7kt8DsSt6IuSoXjp
WVlLfnZPoLaGKc/2BSfYQuFIO2hfgueQINJN3ZdujYXfUJ7Who+XkcJqHQ==
-----END PUBLIC KEY-----

KEY_ID: 3
STATUS: VALID
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkvgJ6sc2MM0AAFUJbVOD/i34YJJ8
ineqTN+DMjpI5q7fQNPEv9y2z/ecPl8qPus8flS4iLOOxdwGoF1mU9lwfA==
-----END PUBLIC KEY-----

Теперь мне нужно использовать ключ по идентификатору в openssl_verify функция.

Мой код:

$ecdsa_url_string = 'ECDSA_URL_STRING';
$stringToVerify = 'MY_STRING';
$ecdsa_keys = openssl_pkey_get_public(file_get_contents(PATH . '/ecdsa_keys.txt'));

$verified = openssl_verify($stringToVerify,pack("H*",$ecdsa_url_string ),$ecdsa_keys,"sha256");

if($verified === 1){
.....
}

Теперь мой вопрос / проблема:
У меня также есть параметр KEY_ID в обратном URL. Когда ID равен 1, все в порядке, потому что openssl_pkey_get_public Функция всегда возвращает только ключ ID 1.

Q1: я не могу получить другие ключи.
Q2: Как мне указать, какой идентификатор я хочу использовать для openssl_pkey_get_public?

Мне стыдно за свое невежество и мою глупость.
Может кто-нибудь, пожалуйста, помогите мне с этим?
Спасибо

1

Решение

@ Лавренс Чероне ответь для меня.
Разобрать открытые ключи из .txt файла по php

мой код:

$ecdsa_keys = file_get_contents(PATH . '/ecdsa_keys.txt');
$ecdsa_key_id = 'KEY_FROM_URL';

function getKeyById($id, $ecdsa_keys){
if(preg_match("~KEY_ID: $id\s+STATUS: VALID\s+(-{5}BEGIN PUBLIC KEY-{5}.+?-{5}END PUBLIC KEY-{5})~s", $ecdsa_keys, $match)){
$result = $match[1];
return $result;
}
return null;
}

if(($ecdsa_key = getKeyById($ecdsa_key_id, $ecdsa_keys)) !== null){
echo "<pre>".$ecdsa_key."</pre>";
} else {
echo "not found";
}

спасибо за помощь

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]