コード例 #1
0
 /**
  * {@inheritDoc}
  * @see \Mdanter\Ecc\Serializer\PrivateKeySerializerInterface::serialize()
  */
 public function serialize(PrivateKeyInterface $key)
 {
     $privateKeyInfo = $this->derSerializer->serialize($key);
     $content = '-----BEGIN EC PRIVATE KEY-----' . PHP_EOL;
     $content .= trim(chunk_split(base64_encode($privateKeyInfo), 64, PHP_EOL)) . PHP_EOL;
     $content .= '-----END EC PRIVATE KEY-----';
     return $content;
 }
コード例 #2
0
 /**
  * @param EncryptedPrivateKey $key
  * @param string $password
  * @return string
  */
 public function serialize(EncryptedPrivateKey $key, $password)
 {
     $privateKey = $key->getKey();
     $iv = $key->getIv();
     $method = $key->getMethod();
     $plaintext = $this->derSerializer->serialize($privateKey);
     $key = md5($password . substr($iv, 0, 8), true);
     $ciphertext = openssl_encrypt($plaintext, $method, $key, OPENSSL_RAW_DATA, $iv);
     if (false === $ciphertext) {
         throw new \RuntimeException('Failed to encrypt key');
     }
     return "-----BEGIN EC PRIVATE KEY-----" . "\n" . "Proc-Type: 4,ENCRYPTED" . "\n" . "DEK-Info: " . strtoupper($method) . "," . strtoupper(unpack("H*", $iv)[1]) . "\n\n" . implode("\n", str_split(base64_encode($ciphertext), 64)) . "\n" . "-----END EC PRIVATE KEY-----";
 }
コード例 #3
0
ファイル: EccAlgorithm.php プロジェクト: groupcash/php
 /**
  * @return Binary
  */
 public function generateKey()
 {
     $generator = EccFactory::getNistCurves()->generator256();
     $key = $generator->createPrivateKey();
     $serializer = new DerPrivateKeySerializer();
     $serialized = $serializer->serialize($key);
     return new Binary($serialized);
 }
コード例 #4
0
ファイル: Pkcs8Serializer.php プロジェクト: afk11/ecssh
 /**
  * {@inheritDoc}
  * @see \Mdanter\Ecc\Serializer\PrivateKeySerializerInterface::serialize()
  */
 public function getPrivateKeyInfo(PrivateKeyInterface $key)
 {
     $keyData = $this->serializer->serialize($key);
     $privateKeyInfo = new Sequence(new Integer(self::VERSION), new Sequence(new ObjectIdentifier(DerPublicKeySerializer::X509_ECDSA_OID), CurveOidMapper::getCurveOid($key->getPoint()->getCurve())), new OctetString(bin2hex($keyData)));
     return $privateKeyInfo;
 }