/**
  * @param Parser $parser
  * @return PrivateKey
  */
 public function fromParser(Parser &$parser)
 {
     $bytes = $parser->readBytes(32);
     $multiplier = $bytes->getInt();
     $privateKey = PrivateKeyFactory::fromInt($multiplier, false, $this->ecAdapter);
     return $privateKey;
 }
 /**
  * @param string $wif
  * @return PrivateKeyInterface
  * @throws InvalidPrivateKey
  * @throws Base58ChecksumFailure
  */
 public function parse($wif)
 {
     $payload = Base58::decodeCheck($wif)->slice(1);
     $size = $payload->getSize();
     if (33 === $size) {
         $compressed = true;
         $payload = $payload->slice(0, 32);
     } else {
         if (32 === $size) {
             $compressed = false;
         } else {
             throw new InvalidPrivateKey("Private key should be always be 32 or 33 bytes (depending on if it's compressed)");
         }
     }
     return PrivateKeyFactory::fromInt($payload->getInt(), $compressed);
 }
 /**
  * Pass a secret exponent (integer)
  * @param integer|string $secret
  * @param EcAdapterInterface $ecAdapter
  * @return ElectrumKey
  */
 public static function fromSecretExponent($secret, EcAdapterInterface $ecAdapter = null)
 {
     $ecAdapter = $ecAdapter ?: Bitcoin::getEcAdapter();
     return new ElectrumKey($ecAdapter, PrivateKeyFactory::fromInt($secret, false, $ecAdapter));
 }