Как мне перейти к преобразованию шестнадцатеричного представления частного ключа в формат, поддерживаемый OpenSSL (PEM / DER /?) - PullRequest
1 голос
/ 01 августа 2010

Название в основном говорит обо всем.

У меня есть шестнадцатеричная строка, представляющая закрытый ключ, и для того, чтобы иметь возможность использовать его с OpenSSL, мне нужно иметь возможность преобразовать его в какой-либо формат, поддерживаемый OpenSSL, будь то PEM или любой другой.

Я знаю, что можно прочитать ключ в формате PEM и распечатать его в таком формате:

    Private-Key: (1024 bit)
modulus:
    01:02:03:04..
publicExponent: 65537 (0x10001)
privateExponent:
    01:02:03:04..
prime1:
    01:02:03:04..
prime2:
    01:02:03:04..
exponent1:
    01:02:03:04..
exponent2:
    01:02:03:04..
coefficient:
    01:02:03:04..

Но мне не удалось найти какую-либо информацию, которая преобразует ключ из этогоформат в формате PEM.Я действительно буду вынужден RFC воин и написать свой собственный конвертер?

Ответы [ 2 ]

0 голосов
/ 03 августа 2010

На самом деле, я сам нашел решение.

Чтобы сделать это, разделите формат, который я описал выше, на 8 шестнадцатеричных строк.

После этого единственное, что вам нужно сделать, это прочитать ключи с диска или чего-то еще, затемиспользуйте функцию BN_hex2bn () и заполните структуру RSA.Когда вы заполнили его, вы можете использовать PEM_write_RSAPrivateKey, чтобы записать его на диск.

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

0 голосов
/ 01 августа 2010

Я не пробовал таким образом, но вы можете взглянуть на API Bouncy Castle, начиная здесь:

http://www.bouncycastle.org/docs/docs1.6/index.html

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

У них есть API Java и .NET.

...