PKCS#11 и OpenSSL имеют разный формат представления объектов. Так, они по-разному представляют ECDSA ключи и подписи на них. Поэтому, когда мы хотим проверить в OpenSSL сырую ECDSA подпись полученную через PKCS#11, ее необходимо сконвертировать в OpenSSL формат. Для проверки подписи нужно также сконвертировать и открытый ключ.
...
- Создать SEQUENCE со значениями типа OBJECT IDENTIFIER. Первый элемент – OID типа открытого ключа на эллиптической кривой. Второй – OID параметра эл. кривой.
- Сконвертировать открытый ключ из структуры OCTET_STRING в структуру BIT_STRING.
- Конкатенировать результат и положить его в SEQUENCEПоложить результаты в SEQUENCE. Нужно проставить правильную длину выходной последовательности.
...
Info | |||||||
---|---|---|---|---|---|---|---|
| |||||||
Если записать в файл байты в том виде, в котором мы их получили. Мы , мы получим открытый ключ в байтовом DER формате. Если мы хотим представить его в виде печатных символов, его нужно перевести в PEM формат. Это можно сделать с помощью команды:
|
...
- Перевести R и S в TLV тип INTEGER
- Результат сконкатенировать и Результаты положить в SEQUENCE. Нужно проставить правильную длину выходной последовательности.
...