17727c6843
All the signature algorithm logic depends on X509_ALGOR. This also removes the X509_ALGOR-based EVP functions which are no longer used externally. I think those APIs were a mistake on my part. The use in Chromium was unnecessary (and has since been removed anyway). The new X.509 stack will want to process the signatureAlgorithm itself to be able to enforce policies on it. This also moves the RSA_PSS_PARAMS bits to crypto/x509 from crypto/rsa. That struct is also tied to crypto/x509. Any new RSA-PSS code would have to use something else anyway. BUG=499653 Change-Id: I6c4b4573b2800a2e0f863d35df94d048864b7c41 Reviewed-on: https://boringssl-review.googlesource.com/7025 Reviewed-by: Adam Langley <agl@google.com>
67 lines
2.6 KiB
C
67 lines
2.6 KiB
C
/* Copyright (c) 2016, Google Inc.
|
|
*
|
|
* Permission to use, copy, modify, and/or distribute this software for any
|
|
* purpose with or without fee is hereby granted, provided that the above
|
|
* copyright notice and this permission notice appear in all copies.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
|
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
|
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
|
|
|
|
#ifndef OPENSSL_HEADER_X509_INTERNAL_H
|
|
#define OPENSSL_HEADER_X509_INTERNAL_H
|
|
|
|
#include <openssl/base.h>
|
|
#include <openssl/evp.h>
|
|
#include <openssl/x509.h>
|
|
|
|
#if defined(__cplusplus)
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
/* RSA-PSS functions. */
|
|
|
|
/* x509_rsa_pss_to_ctx configures |ctx| for an RSA-PSS operation based on
|
|
* signature algorithm parameters in |sigalg| (which must have type
|
|
* |NID_rsassaPss|) and key |pkey|. It returns one on success and zero on
|
|
* error. */
|
|
int x509_rsa_pss_to_ctx(EVP_MD_CTX *ctx, X509_ALGOR *sigalg, EVP_PKEY *pkey);
|
|
|
|
/* x509_rsa_pss_to_ctx sets |algor| to the signature algorithm parameters for
|
|
* |ctx|, which must have been configured for an RSA-PSS signing operation. It
|
|
* returns one on success and zero on error. */
|
|
int x509_rsa_ctx_to_pss(EVP_MD_CTX *ctx, X509_ALGOR *algor);
|
|
|
|
/* x509_print_rsa_pss_params prints a human-readable representation of RSA-PSS
|
|
* parameters in |sigalg| to |bp|. It returns one on success and zero on
|
|
* error. */
|
|
int x509_print_rsa_pss_params(BIO *bp, const X509_ALGOR *sigalg, int indent,
|
|
ASN1_PCTX *pctx);
|
|
|
|
|
|
/* Signature algorithm functions. */
|
|
|
|
/* x509_digest_sign_algorithm encodes the signing parameters of |ctx| as an
|
|
* AlgorithmIdentifer and saves the result in |algor|. It returns one on
|
|
* success, or zero on error. */
|
|
int x509_digest_sign_algorithm(EVP_MD_CTX *ctx, X509_ALGOR *algor);
|
|
|
|
/* x509_digest_verify_init sets up |ctx| for a signature verification operation
|
|
* with public key |pkey| and parameters from |algor|. The |ctx| argument must
|
|
* have been initialised with |EVP_MD_CTX_init|. It returns one on success, or
|
|
* zero on error. */
|
|
int x509_digest_verify_init(EVP_MD_CTX *ctx, X509_ALGOR *sigalg,
|
|
EVP_PKEY *pkey);
|
|
|
|
|
|
#if defined(__cplusplus)
|
|
} /* extern C */
|
|
#endif
|
|
|
|
#endif /* OPENSSL_HEADER_X509_INTERNAL_H */
|