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
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.
Key pair não existe na versao ME do BC… e a Chave não tem o getEncoded
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.
trudo isso eu ja sabia… eh exatamente a serialização o problema…
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.