Created
December 15, 2020 11:13
-
-
Save askaaqib/8dc58d575d552b96c30c46f4496b6225 to your computer and use it in GitHub Desktop.
BIP32 - Complete Implementation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
declare(strict_types=1); | |
require "../vendor/autoload.php"; | |
echo "<pre>"; | |
$seed = "000102030405060708090a0b0c0d0e0f"; | |
/** @var $mskobj */ | |
$mskobj = \FurqanSiddiqui\BIP32\BIP32::MasterKey($seed, "256"); | |
echo "<h2>Master Key </h2>"; | |
/** @var $mskBinary */ | |
$mskBinary = $mskobj->raw(); | |
echo "<h4>Binary Object</h4>"; | |
print_r($mskBinary); | |
/** @var $prvb16 */ | |
$prvb16 = $mskobj->privateKey()->base16(); | |
echo "<h4>Private Key Base16</h4>"; | |
print_r($prvb16); | |
/** @var $masterCurves */ | |
$masterCurves = $mskobj->curves(); | |
echo "<h4>Curves Object</h4>"; | |
print_r($masterCurves); | |
/** @var $curveID */ | |
$mskobj->set("curve", 8); | |
$curveID = $mskobj->privateKey()->getEllipticCurveId(); | |
echo "<h4>Curve ID</h4>"; | |
print_r($curveID); | |
/** @var $masterDepth */ | |
$masterDepth = $mskobj->depth(); | |
echo "<h4>Depth</h4>"; | |
print_r($masterDepth); | |
/** @var $derive */ | |
$derive = $mskobj->derive(0x80000000); | |
echo "<h4>Derive</h4>"; | |
print_r($derive); | |
/** @var $privateEkd */ | |
echo "<h4>PrivateKey EKD</h4>"; | |
$privateEkd = $mskobj->privateKey()->ekd(); | |
print_r($privateEkd->privateKey()->publicKey()); | |
// DERIVE KEY 1 | |
/** @var $derivedKey1 */ | |
$derivedKey1 = $mskobj->derivePath("m"); | |
echo "<h4>Serialized Public Key (m)</h4>"; | |
print_r($derivedKey1->serializePublicKey(1565)); | |
$srl = $mskobj->serializePrivateKey(0x0488B21E)->base64(); | |
echo "<h4>First Serialize Private Key (m)</h4>"; | |
print_r($srl); | |
/** @var $serializedPrivateKey1 */ | |
$serializedPrivateKey1 = $derivedKey1->serializePrivateKey(0x0488B21E)->base16(); | |
echo "<h4>Serialized Private Key (m)</h4>"; | |
print_r($serializedPrivateKey1); | |
/** @var $srlzdPrvtKey1 */ | |
$srlzdPrvtKey1 = $derivedKey1->serializePrivateKey(1); | |
echo "<h4>Serialized Private Key (m)</h4>"; | |
print_r($srlzdPrvtKey1); | |
/** @var $chainCode1 */ | |
$chainCode1 = $derivedKey1->chainCode(); | |
echo "<h4>Chain Code (m)</h4>"; | |
print_r($chainCode1); | |
/** @var $drv1 */ | |
$drv1 = $derivedKey1->derive(1); | |
echo "<h4>Drive1 (m)</h4>"; | |
print_r($drv1->privateKey()->base16()); | |
/** @var $drv1Parent */ | |
$drv1Parent = $drv1->parent(); | |
echo "<h4>Drive Parent1 (m)</h4>"; | |
print_r($drv1Parent->privateKey()->base16()); | |
die(); | |
// DERIVE KEY 2 | |
/** @var $derivedKey2 */ | |
$derivedKey2 = $mskobj->derivePath("m/0"); | |
echo "<h4>Serialized Public Key2 (m/0)</h4>"; | |
print_r($derivedKey2->serializePublicKey(1565)); | |
/** @var $derivePrivateKey2 */ | |
$derivePrivateKey2 = $derivedKey2->privateKey()->base16(); | |
echo "<h4>Derive Private Key2 (m/0)</h4>"; | |
print_r($derivePrivateKey2); | |
/** @var $srlzdPrvtKey2 */ | |
$srlzdPrvtKey2 = $derivedKey2->serializePrivateKey(1); | |
echo "<h4>Serialized Private Key2 (m/0)</h4>"; | |
print_r($srlzdPrvtKey2); | |
/** @var $chainCode2 */ | |
$chainCode2 = $derivedKey2->chainCode(); | |
echo "<h4>Chain Code2 (m/0)</h4>"; | |
print_r($chainCode2); | |
/** @var $drv2 */ | |
$drv2 = $derivedKey2->derive(2); | |
echo "<h4>Drive2 (m/0)</h4>"; | |
print_r($drv2->privateKey()->base16()); | |
/** @var $drv2Parent */ | |
$drv2Parent = $drv2->parent(); | |
echo "<h4>Drive Parent2 (m/0)</h4>"; | |
print_r($drv2Parent->privateKey()->base16()); | |
/** @var $drv2Depth */ | |
$drv2Depth = $drv2->depth(); | |
echo "<h4>Depth Derive2</h4>"; | |
print_r($drv2Depth); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment