MCPcopy Create free account
hub / github.com/PurpleI2P/i2pd / BlindPublicKey

Method BlindPublicKey

libi2pd/Ed25519.cpp:470–483  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

468 }
469
470 void Ed25519::BlindPublicKey (const uint8_t * pub, const uint8_t * seed, uint8_t * blinded)
471 {
472 BN_CTX * ctx = BN_CTX_new ();
473 // calculate alpha = seed mod l
474 BIGNUM * alpha = DecodeBN<64> (seed); // seed is in Little Endian
475 BN_mod (alpha, alpha, l, ctx); // % l
476 uint8_t priv[32];
477 EncodeBN (alpha, priv, 32); // back to Little Endian
478 BN_free (alpha);
479 // A' = BLIND_PUBKEY(A, alpha) = A + DERIVE_PUBLIC(alpha)
480 auto A1 = Sum (DecodePublicKey (pub, ctx), MulB (priv, ctx), ctx); // pub + B*alpha
481 EncodePublicKey (A1, blinded, ctx);
482 BN_CTX_free (ctx);
483 }
484
485 void Ed25519::BlindPrivateKey (const uint8_t * priv, const uint8_t * seed, uint8_t * blindedPriv, uint8_t * blindedPub)
486 {

Callers 1

GetBlindedKeyMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected