Pergunta

Ok, primeiro, sim, pesquisei o Google e o Stackoverflow e fiz algumas leituras (mais de 4 horas apenas nesta sessão) não encontrei o que preciso por esses motivos:

  • Muitos deles sugerem apenas lançar um exe como gpg.exe (http://stackoverflow.com/questions/1020320)

  • Alguns sugeriram usar pycrypto ou outras bibliotecas e olhá-las, seja a) Não consigo encontrar como usar nenhuma das suas API, b) Não consigo descobrir como importar uma chave de prv/pub pré-existente ou c) Eles Use o inseguro Randompool (e eu tentando atualizar, está apenas pedindo problemas)

  • Alguns mencionam isso de passagem, mas eu não consegui encontrar o que eles vinculavam (ou não havia nenhum link.

Então, eu sei, pergunto a vocês, colegas usuários do StackOverflow, como posso fazer isso, pegue uma sequência de uma chave pública (ou caminho (eu poderia apenas escrevê -la em um arquivo temp (eu pretendo apenas tê -lo como uma string pub_key = ".. . "))) e use -o para assinar e proteger uma string (que será publicada em um fórum (JSON para atualizar meu aplicativo)?

Além disso, essas são as chaves RSA (Putty Gen 4096 BITS SSH-2-RSA) que são geradas usando Puttygen (pode estar em qualquer formato (OpenSsh, SSH.com, PPK)

É assim que a chave pública se parece

---- Comece a chave pública ssh2 ----

Comentário: "RSA-key-20101003"

AAAAB3NzaC1yc2EAAAABJQAAAgEAi+91fFsxZ7k1UuudSe5gZoavwARUyZScCtdf WQ0ROoJC+XIqW5vVJfgmr+A1jLS5m4wNsrCqeyoX2B22T6iEwqVXrXt3QcbccKMu WkLKFK1h67q6Coc+3eOTmKrOuZbWc19YQgybdkR/GxF7XAbq4NCGNaCDtMOqX8Q2 L/a9fAYqVdTwg9trpcz3whNmdLk/B0edOABKuVX51UdLV+ZggK503+uAb1JiIIj0 mARwR/HNo4oRLMLf2PjuZsGVYYjJDdVJBU6AN4PUQSRRRPL4+YmsrLJb/TpfJeXA vj4KZMNJv15YXz7/iMZMKznDtr2RJX5wbSpuTUBNZveA7YiIHxvvvis38b/lX9SJ SYPfZ9CeQY6MvQgG2zwDTOOvKgOIB4sTGMXfcoxB8AF/QXOcxWFJkZoj36rvMd9n Po6szLjHXwcEUOUvvQfG4VvdQA0H5gGLHqYL1EehRsgi5qcCoFPaZW2K09ErKcS0 MbrLFjBkQ9KmqAM38bvM8UhCWAMA9VXOGHMxUHBV4Bir9alGS4VX0B8Y0b3dZ+7I MKkHMCwdEUJf7QVdGxGuSQtVsq8RZbIpk3g7wtv8f6I/iEC58ekdrH35tq5+1ilW dkk9+rrhUy4qrZ+ Hfi7aeemybpiMbsnebvnkmaipaoo23v8c9bq0iuxx4gizf10 o+tpsk8 =

---- END SSH2 Public Key ----

Não é isso -> o formato -chave parece ser PKCS1 para que o M2Crypto não funcione (sua função de chave de carga espera PEM)

Última leitura, acho que é formato de arquivo de chave pública ssh (RFC: http://www.ietf.org/rfc/rfc4716.txt )

Eu também acho que abaixo está errado, acho que não lida com o formato de arquivo de chave pública do SSH :(

Também parece que Twisted pode estar onde eu deveria olhar

http://www.java2s.com/open-source/python/network/twisted/twisted-1.0.3/twisted-1.0.3/twisted/conch/ssh/keys.py.htm

Além disso, por que não me permite publicar uma recompensa imediatamente?

Foi útil?

Solução

Ok, eu descobri como carregá -lo

from twisted.conch.ssh import keys as Keys
import base64

public_key = """\
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20101003"
AAAAB3NzaC1yc2EAAAABJQAAAgEAi+91fFsxZ7k1UuudSe5gZoavwARUyZScCtdf
WQ0ROoJC+XIqW5vVJfgmr+A1jLS5m4wNsrCqeyoX2B22T6iEwqVXrXt3QcbccKMu
WkLKFK1h67q6Coc+3eOTmKrOuZbWc19YQgybdkR/GxF7XAbq4NCGNaCDtMOqX8Q2
L/a9fAYqVdTwg9trpcz3whNmdLk/B0edOABKuVX51UdLV+ZggK503+uAb1JiIIj0
mARwR/HNo4oRLMLf2PjuZsGVYYjJDdVJBU6AN4PUQSRRRPL4+YmsrLJb/TpfJeXA
vj4KZMNJv15YXz7/iMZMKznDtr2RJX5wbSpuTUBNZveA7YiIHxvvvis38b/lX9SJ
SYPfZ9CeQY6MvQgG2zwDTOOvKgOIB4sTGMXfcoxB8AF/QXOcxWFJkZoj36rvMd9n
Po6szLjHXwcEUOUvvQfG4VvdQA0H5gGLHqYL1EehRsgi5qcCoFPaZW2K09ErKcS0
MbrLFjBkQ9KmqAM38bvM8UhCWAMA9VXOGHMxUHBV4Bir9alGS4VX0B8Y0b3dZ+7I
MKkHMCwdEUJf7QVdGxGuSQtVsq8RZbIpk3g7wtv8f6I/iEC58ekdrH35tq5+1ilW
dkk9+rrhUy4qrZ+HFi7AeemybpiumbSnebvnkMaIPAOo23V8C9BQ0iuxx4gIZf10
o+TPSK8=
---- END SSH2 PUBLIC KEY ----"""

key_data = ''.join(public_key.splitlines()[2:-1])# remove begin, end tags and comment
blob = base64.decodestring(key_data)
key = Keys.Key._fromString_BLOB(blob)

Outras dicas

Eu posso pensar em pelo menos duas opções relativamente simples

  1. Use OpenSSL (ou PyoPenssl) para converter o BER em PEM
  2. Use Paramiko, Twisted ou qualquer outra implementação do Python SSH para trabalhar diretamente com as chaves
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top