J'ai une application C, dans cette application que je produis une paire de clés RSA avec le code suivant (vérification d'erreurs gauche en raison de la lisibilité):Comment générer une clé RSA dans Android semblable à une clé générée OpenSSL PEM_write_PUBKEY
void generateKeyPair(char* pass) {
EVP_PKEY *pkey = NULL;
RSA* r;
OpenSSL_add_all_algorithms();
RAND_load_file("/dev/urandom", 1024);
r = RSA_generate_key(KEY_LENGTH, RSA_F4, NULL, NULL);
pkey = EVP_PKEY_new();
EVP_PKEY_assign_RSA(pkey, r);
FILE* fp = fopen("private.key", "w");
PEM_write_PrivateKey(fp, pkey, EVP_aes_256_cbc(), NULL, 0, NULL, pass);
fclose(fp);
fp = fopen("public.key", "w");
PEM_write_PUBKEY(fp, pkey);
fclose(fp);
}
Je synchronise les clés publiques PEM via un serveur entre les périphériques. Maintenant, je dois écrire une application Android compatible mais je dois générer la clé publique dans le même format que PEM_write_PUBKEY.
Je sais que j'aurais dû faire la synchronisation au format DER ou quelque chose mais maintenant je ne peux plus changer de design. Il n'y a aucun moyen de générer les clés dans le format similaire.
Je suppose que c'est une clé encodée # PCKS1 base64 mais je ne suis pas sûr et je ne sais pas comment générer un similaire dans Android - Androids standard est # PCKS8. Cependant, je préférerais ne pas inclure le château spongieux dans mon projet s'il y a un moyen de contourner le problème.
PKCS # 8 est pour les clés privées. –