Bouncy castle

5 respostas
D

Senhores,

Após ter criado um par de chaves RSA no bouncy castle eu poderia separalo eg chave publica a chave privada (RSAKeyParameters)

Porém necessito salvar estas chaves no meu sistema, ou seja transformalas em um array de bytes ou algo do tipo.

Como fazer isso?

Abraços

5 Respostas

T

Não sei que classes você está usando, mas tipicamente um KeyPair tem dois métodos (getPublicKey e getPrivateKey). Uma vez você pegando as chaves (Key), você pode serializá-las com getEncoded, ou então encapsulá-las com SealedObject.

D

Key pair não existe na versao ME do BC… e a Chave não tem o getEncoded

T

Ah, olhando na documentação:

você tem uma classe chamada AsymmetricCipherKeyPair, que tem os métodos getPrivateKey e getPublicKey, que retornam um objeto que implementa a interface KeyParameters. Provavelmente esse objeto é da classe RSAKeyParameters, e essa classe tem os métodos getExponent e getModulus (no caso de uma chave pública) e além disso, se ainda por cima for uma chave privada, é da classe RSAPrivateCrtKeyParameters
(veja os métodos na documentação).

Como você vai serializar o BigInteger aí fica por sua conta. Talvez você tenha de usar alguma das classes de ASN.1 também.

D

trudo isso eu ja sabia… eh exatamente a serialização o problema…

T

Hum… o BouncyCastle (versão JavaME) disponibiliza o java.math.BigInteger?

Se ele fizer isso, então deve disponibilizar um método que converte esse BigInteger em bytes, que é o toByteArray.
Para você criar então um BigInteger a partir de um array de bytes, você então pode usar o construtor que recebe um array de bytes.

Outra forma, se você prefere formatos padronizados (ASN.1), é então dar uma lidinha na especificação PKCS#9 e usar as classes de ASN.1 do BouncyCastle para gerar arrays de bytes em formato PKCS#9, a partir dos BigIntegers que o BouncyCastle retorna.

Criado 22 de julho de 2009
Ultima resposta 22 de jul. de 2009
Respostas 5
Participantes 2