MCPcopy Create free account
hub / github.com/Endermanch/XPKeygen / keyServer

Function keyServer

src/server.cpp:392–455  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

390}
391
392BOOL keyServer(
393 CHAR (&pKey)[PK_LENGTH + NULL_TERMINATOR],
394 BINKEYEX &pBINK,
395 DWORD nChannelID,
396 DWORD nAuthInfo,
397 BOOL bUpgrade
398) {
399 // If the Channel ID isn't valid, quit.
400 if (nChannelID >= 1'000)
401 return false;
402
403 if (pBINK.n == 0 ||
404 pBINK.k == 0) {
405#ifdef _DEBUG
406 printf("!! NOT IMPLEMENTED !!\n\n");
407#endif
408 return false;
409 }
410
411 BIGNUM *privateKey = BN_new();
412 BIGNUM *genOrder = BN_new();
413
414 BN_set_word(privateKey, pBINK.k);
415 BN_set_word(genOrder, pBINK.n);
416
417 EC_POINT *genPoint, *pubPoint;
418 EC_GROUP *eCurve = initializeEllipticCurve(
419 pBINK.binKey.data.p,
420 pBINK.binKey.data.a,
421 pBINK.binKey.data.b,
422 pBINK.binKey.data.G.x,
423 pBINK.binKey.data.G.y,
424 pBINK.binKey.data.K.x,
425 pBINK.binKey.data.K.y,
426 &genPoint,
427 &pubPoint
428 );
429
430 // Generate a stub 10-bit AuthInfo segment if none is specified.
431 if (nAuthInfo == 0) {
432 RAND_bytes((byte *)&nAuthInfo, 4);
433 nAuthInfo &= 0x3FF;
434 }
435
436#ifdef _DEBUG
437 printf(
438 "Created elliptic curve:\n\n E = EllipticCurve(\n GF(0x%s),\n [0, 0, 0, %d, %d]\n ) => y^2 = x^3 + %dx + %d;\n\n G(x; y) = {\n 0x%s,\n 0x%s\n }\n\n K(x; y) = {\n 0x%s,\n 0x%s\n }\n\n AuthInfo: 0x%03lX\n\n\n",
439 pBINK.binKey.data.p,
440 atoi(pBINK.binKey.data.a),
441 atoi(pBINK.binKey.data.b),
442 atoi(pBINK.binKey.data.a),
443 atoi(pBINK.binKey.data.b),
444 pBINK.binKey.data.G.x,
445 pBINK.binKey.data.G.y,
446 pBINK.binKey.data.K.x,
447 pBINK.binKey.data.K.y,
448 nAuthInfo
449 );

Callers 1

formatServerFunction · 0.85

Calls 3

initializeEllipticCurveFunction · 0.85
generateServerKeyFunction · 0.85
verifyServerKeyFunction · 0.85

Tested by

no test coverage detected