- if(RSA_private_decrypt(len, buffer, c->inkey, myself->connection->rsa_key, RSA_NO_PADDING) != len) { /* See challenge() */
- logger(LOG_ERR, _("Error during encryption of meta key for %s (%s)"),
- c->name, c->hostname);
+ return send_challenge(c);
+}
+
+bool metakey_h(connection_t *c, char *request) {
+ if(c->protocol_minor >= 2)
+ return metakey_ec_h(c, request);
+
+ char hexkey[MAX_STRING_SIZE];
+ int cipher, digest, maclength, compression;
+ size_t len = rsa_size(&myself->connection->rsa);
+ char enckey[len];
+ char key[len];
+
+ if(sscanf(request, "%*d %d %d %d %d " MAX_STRING, &cipher, &digest, &maclength, &compression, hexkey) != 5) {
+ logger(LOG_ERR, "Got bad %s from %s (%s)", "METAKEY", c->name, c->hostname);