Signer/DataSigner.php
public function signData($data, PrivateKey $privateKey, $algorithm = OPENSSL_ALGO_SHA256, $format = self::FORMAT_DER)
    {
        Assert::oneOf($format, [self::FORMAT_ECDSA, self::FORMAT_DER], 'The format %s to sign request does not exists. Available format: %s');

        $resource = $privateKey->getResource();
        if (!openssl_sign($data, $signature, $resource, $algorithm)) {
            throw new DataSigningException(
                sprintf('OpenSSL data signing failed with error: %s', openssl_error_string())
            );
        }

        openssl_free_key($resource);

        switch ($format) {
            case self::FORMAT_DER:
                return $signature;
            case self::FORMAT_ECDSA:
                switch ($algorithm) {
                    case OPENSSL_ALGO_SHA256:
                        return $this->DERtoECDSA($signature, 64);
                    case OPENSSL_ALGO_SHA384:
                        return $this->DERtoECDSA($signature, 96);
                    case OPENSSL_ALGO_SHA512:
                        return $this->DERtoECDSA($signature, 132);
                }
                throw new DataSigningException('Unable to generate a ECDSA signature with the given algorithm');
            default:
                throw new DataSigningException('The given format does exists');
        }
    }
public function signData($data, PrivateKey $privateKey, $algorithm = OPENSSL_ALGO_SHA256, $format = self::FORMAT_DER)
    {
        Assert::oneOf($format, [self::FORMAT_ECDSA, self::FORMAT_DER], 'The format %s to sign request does not exists. Available format: %s');

        $resource = $privateKey->getResource();
        if (!openssl_sign($data, $signature, $resource, $algorithm)) {
            throw new DataSigningException(
                sprintf('OpenSSL data signing failed with error: %s', openssl_error_string())
            );
        }

        openssl_free_key($resource);

        switch ($format) {
            case self::FORMAT_DER:
                return $signature;
            case self::FORMAT_ECDSA:
                switch ($algorithm) {
                    case OPENSSL_ALGO_SHA256:
                        return $this->DERtoECDSA($signature, 64);
                    case OPENSSL_ALGO_SHA384:
                        return $this->DERtoECDSA($signature, 96);
                    case OPENSSL_ALGO_SHA512:
                        return $this->DERtoECDSA($signature, 132);
                }
                throw new DataSigningException('Unable to generate a ECDSA signature with the given algorithm');
            default:
                throw new DataSigningException('The given format does exists');
        }
    }
public function signData ( $ data , PrivateKey $ privateKey , $ algorithm = OPENSSL_ALGO_SHA256 , $ format = self :: FORMAT_DER ) { Assert :: oneOf ( $ format , [ self :: FORMAT_ECDSA , self :: FORMAT_DER ] , 'The format %s to sign request does not exists. Available format: %s' ) ; $ resource = $ privateKey -> getResource ( ) ; if ( ! openssl_sign ( $ data , $ signature , $ resource , $ algorithm ) ) { throw new DataSigningException ( sprintf ( 'OpenSSL data signing failed with error: %s' , openssl_error_string ( ) ) ) ; } openssl_free_key ( $ resource ) ; switch ( $ format ) { case self :: FORMAT_DER : return $ signature ; case self :: FORMAT_ECDSA : switch ( $ algorithm ) { case OPENSSL_ALGO_SHA256 : return $ this -> DERtoECDSA ( $ signature , 64 ) ; case OPENSSL_ALGO_SHA384 : return $ this -> DERtoECDSA ( $ signature , 96 ) ; case OPENSSL_ALGO_SHA512 : return $ this -> DERtoECDSA ( $ signature , 132 ) ; } throw new DataSigningException ( 'Unable to generate a ECDSA signature with the given algorithm' ) ; default : throw new DataSigningException ( 'The given format does exists' ) ; } }
Generate a signature of the given data using a private key and an algorithm.

@param string     $data       Data to sign
@param PrivateKey $privateKey Key used to sign
@param int        $algorithm  Signature algorithm defined by constants OPENSSL_ALGO_*
@param string     $format     Format of the output

@return string
Generate a signature of the given data using a private key and an algorithm .