Bonjour,
Je suis entrain d'essayer de me connecter en full socket, seulement je bloque dès le début avec le cryptage RSA malgré mes recherches qui m'amène sur des liens morts le plus souvent.
Dans le AuthentificationManager on a ça :
Si j'ai bien compris cette ligne
sert juste à avoir la clé public contenu dans les fichiers du jeu
Que j'ai traduit en :
Et cette ligne
sert à décrypter la clé que le HelloConnectMessage nous envoie pour la réutiliser plus tard.
Si j'ai tout compris jusqu'à là je bloque par la suite car la taille de la clé public est de 305 or il faut pour décrypter du RSA faut une taille de 256.
Je suis entrain d'essayer de me connecter en full socket, seulement je bloque dès le début avec le cryptage RSA malgré mes recherches qui m'amène sur des liens morts le plus souvent.
Dans le AuthentificationManager on a ça :
Code:
public function setPublicKey(param1:Vector.<int>) : void
{
var commonMod:Object = null;
var publicKey:Vector.<int> = param1;
var baSignedKey:ByteArray = new ByteArray();
var i:int = 0;
while(i < publicKey.length)
{
baSignedKey.writeByte(publicKey[i]);
i++;
}
baSignedKey.position = 0;
var key:ByteArray = new ByteArray();
var readKey:RSAKey = PEM.readRSAPublicKey((new this._verifyKey() as ByteArray).readUTFBytes((new this._verifyKey() as ByteArray).length));
try
{
readKey.verify(baSignedKey,key,baSignedKey.length);
}
catch(e:Error)
{
commonMod = UiModuleManager.getInstance().getModule("Ankama_Common").mainClass;
commonMod.openPopup(I18n.getUiText("ui.common.error"),I18n.getUiText("ui.server.authentificationImpossible"),[I18n.getUiText("ui.common.ok")]);
return;
}
this._publicKey = "-----BEGIN PUBLIC KEY-----\n" + Base64.encodeByteArray(key) + "-----END PUBLIC KEY-----";
}
Code:
var readKey:RSAKey = PEM.readRSAPublicKey((new this._verifyKey() as ByteArray).readUTFBytes((new this._verifyKey() as ByteArray).length));
Que j'ai traduit en :
Java:
String pKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9XpbSNEUoM6niz3XTESWJ/I3+h3J+YseUIdEShxyp0nMfX8xUHUktK/QFY+V4Q3fV/pdn1PxOaxKEA8SYGNAnc+uIal9ZGHqkbFcNF7CNp0MUFecQi5gGYpg4JPlC0onfmn6R2shSAl7M+UCVgFpICVrtXxocos/jg0OP/2gWFZU8AjKDo4JJP/apvubjUgufCGNXEWynRkOclMBXpAw2IBAO6KjRdGBllPmJfYcSQq+G+9tp5nK+dzkLgITSg8JtK2tp5w+fbt5tBlCLcvC/7CAp9t3J+ZImOO5kRw+Cn4Jd2RUMcPCd7s1JHqRXfOtuItz7xcOlqHtyLExvotfMwIDAQAB";
X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(Base64.decodeBase64(pKey));
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
RSAPublicKey pubKey = (RSAPublicKey) keyFactory.generatePublic(pubKeySpec);
Code:
readKey.verify(baSignedKey,key,baSignedKey.length);
Si j'ai tout compris jusqu'à là je bloque par la suite car la taille de la clé public est de 305 or il faut pour décrypter du RSA faut une taille de 256.