Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

openssl_sign() cannot sign a precomputed digest

Aberta
#23,422 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
5/5
Tempo estimado
Mais de uma semana
Facilidade para iniciantes
45/100
Tipo de issue
Funcionalidade
Clareza
Razoavelmente clara
Status de atividade
Ativa
Stack de tecnologia
c, php

Direção de pesquisa

Comece pelo ponto de entrada openssl_sign() em ext/openssl do PHP e compare seu comportamento atual de digestão com as APIs mencionadas EVP_PKEY_sign() e EVP_PKEY_verify(). Determine uma interface para entradas pré-calculadas que cubra tanto a assinatura quanto a verificação; considera-se concluído quando os chamadores puderem assinar e verificar um digest existente sem fazer o hash dele novamente.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Bug Extension: openssl Status: Verified
Description

Description

openssl_sign() currently always performs the digest operation internally before signing the data.

This causes a problem when the input is already a precomputed digest.

For example, when a SHA-256 digest is passed to openssl_sign() together with OPENSSL_ALGO_SHA256, the digest is hashed again:

signature = sign(SHA256(precomputed_sha256_digest))

instead of signing the existing digest directly:

signature = sign(precomputed_sha256_digest)

As a result, PHP currently has no straightforward way to sign an already computed digest using ext/openssl.

Expected behavior

It should be possible to pass a precomputed digest to the OpenSSL extension and sign it directly without applying another hashing operation.

The same should be possible for verification of a signature over a precomputed digest.

Actual behavior

openssl_sign() combines hashing and signing. Therefore, when the caller already has the digest, an additional hashing operation is performed.

Additional information

OpenSSL provides lower-level APIs such as EVP_PKEY_sign() and EVP_PKEY_verify() that can operate on already prepared input.

PHP's OpenSSL extension currently does not expose an equivalent way to perform this operation.

PHP Version
PHP 8.5
Operating System

all

Linguagem predominante
C
Estrelas
40.4k
Forks
8.2k
Merge médio
2d 15h
PRs com merge (30d)
113

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de php/php-src

Todas as issues de php/php-src

Issues semelhantes

Mais issues de C

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.