Go to the documentation of this file.
70 #include "../../internal.h"
73 #define RSA_PKCS1_PADDING_SIZE 11
91 to[to_len - from_len - 1] = 0;
125 if (
pad == from_len) {
138 if (from_len -
pad > max_out) {
144 *out_len = from_len -
pad;
153 for (
size_t i = 0;
i <
len;
i++) {
154 while (
out[
i] == 0) {
180 size_t padding_len = to_len - 3 - from_len;
185 to[2 + padding_len] = 0;
211 for (
size_t i = 2;
i < from_len;
i++) {
219 crypto_word_t valid_index = first_byte_is_zero;
220 valid_index &= second_byte_is_two;
223 valid_index &= ~looking_for_index;
244 const size_t msg_len = from_len - zero_index;
245 if (msg_len > max_out) {
259 if (from_len > to_len) {
264 if (from_len < to_len) {
274 size_t seed_len,
const EVP_MD *
md) {
318 const uint8_t *param,
size_t param_len,
323 if (mgf1md == NULL) {
329 if (to_len < 2 * mdlen + 2) {
334 size_t emlen = to_len - 1;
335 if (from_len > emlen - 2 * mdlen - 1) {
340 if (emlen < 2 * mdlen + 1) {
349 if (!
EVP_Digest(param, param_len, db, NULL,
md, NULL)) {
353 db[emlen - from_len - mdlen - 1] = 0x01;
360 if (dbmask == NULL) {
369 for (
size_t i = 0;
i < emlen - mdlen;
i++) {
374 if (!
PKCS1_MGF1(seedmask, mdlen, db, emlen - mdlen, mgf1md)) {
377 for (
size_t i = 0;
i < mdlen;
i++) {
389 size_t from_len,
const uint8_t *param,
397 if (mgf1md == NULL) {
406 if (from_len < 1 + 2*mdlen + 1) {
412 size_t dblen = from_len - mdlen - 1;
426 for (
size_t i = 0;
i < mdlen;
i++) {
433 for (
size_t i = 0;
i < dblen;
i++) {
434 db[
i] ^= maskeddb[
i];
438 if (!
EVP_Digest(param, param_len, phash, NULL,
md, NULL)) {
446 size_t one_index = 0;
447 for (
size_t i = mdlen;
i < dblen;
i++) {
452 looking_for_one_byte =
454 bad |= looking_for_one_byte & ~equals0;
457 bad |= looking_for_one_byte;
464 size_t mlen = dblen - one_index;
465 if (max_out < mlen) {
491 int maskedDBLen, MSBits, emLen;
499 if (mgf1Hash == NULL) {
511 }
else if (sLen == -2) {
513 }
else if (sLen < -2) {
520 if (EM[0] & (0xFF << MSBits)) {
528 if (emLen < (
int)hLen + 2 || emLen < ((
int)hLen + sLen + 2)) {
533 if (EM[emLen - 1] != 0xbc) {
537 maskedDBLen = emLen - hLen - 1;
538 H = EM + maskedDBLen;
544 if (!
PKCS1_MGF1(DB, maskedDBLen,
H, hLen, mgf1Hash)) {
547 for (
i = 0;
i < maskedDBLen;
i++) {
551 DB[0] &= 0xFF >> (8 - MSBits);
553 for (
i = 0; DB[
i] == 0 &&
i < (maskedDBLen - 1);
i++) {
556 if (DB[
i++] != 0x1) {
560 if (sLen >= 0 && (maskedDBLen -
i) != sLen) {
586 const unsigned char *mHash,
590 size_t maskedDBLen, MSBits, emLen;
592 unsigned char *
H, *salt = NULL, *
p;
594 if (mgf1Hash == NULL) {
613 if (emLen < hLen + 2) {
623 if (sLenRequested == -1) {
625 }
else if (sLenRequested == -2) {
626 sLen = emLen - hLen - 2;
627 }
else if (sLenRequested < 0) {
631 sLen = (size_t)sLenRequested;
634 if (emLen - hLen - 2 < sLen) {
649 maskedDBLen = emLen - hLen - 1;
650 H = EM + maskedDBLen;
665 if (!
PKCS1_MGF1(EM, maskedDBLen,
H, hLen, mgf1Hash)) {
674 p += emLen - sLen - hLen - 2;
677 for (
size_t i = 0;
i < sLen;
i++) {
682 EM[0] &= 0xFF >> (8 - MSBits);
687 EM[emLen - 1] = 0xbc;
#define RSA_R_NULL_BEFORE_BLOCK_MISSING
int RSA_verify_PKCS1_PSS_mgf1(const RSA *rsa, const uint8_t *mHash, const EVP_MD *Hash, const EVP_MD *mgf1Hash, const uint8_t *EM, int sLen)
static int OPENSSL_memcmp(const void *s1, const void *s2, size_t n)
#define RSA_R_OAEP_DECODING_ERROR
#define RSA_R_SLEN_CHECK_FAILED
#define OPENSSL_PUT_ERROR(library, reason)
static const uint8_t seed[20]
#define RSA_R_EMPTY_PUBLIC_KEY
static int PKCS1_MGF1(uint8_t *out, size_t len, const uint8_t *seed, size_t seed_len, const EVP_MD *md)
static struct test_ctx ctx
int RSA_padding_add_PKCS1_type_2(uint8_t *to, size_t to_len, const uint8_t *from, size_t from_len)
#define CONSTTIME_DECLASSIFY(x, y)
#define EVP_DigestInit_ex
static void * OPENSSL_memset(void *dst, int c, size_t n)
static crypto_word_t constant_time_is_zero_w(crypto_word_t a)
#define RSA_R_SLEN_RECOVERY_FAILED
static crypto_word_t constant_time_ge_w(crypto_word_t a, crypto_word_t b)
#define RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE
#define RSA_R_BAD_FIXED_HEADER_DECRYPT
#define RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY
int RSA_padding_check_PKCS1_type_1(uint8_t *out, size_t *out_len, size_t max_out, const uint8_t *from, size_t from_len)
#define RSA_R_KEY_SIZE_TOO_SMALL
static void * OPENSSL_memcpy(void *dst, const void *src, size_t n)
#define RSA_R_PKCS_DECODING_ERROR
static const uint8_t kPSSZeroes[]
int RSA_padding_add_none(uint8_t *to, size_t to_len, const uint8_t *from, size_t from_len)
int RSA_padding_check_PKCS1_type_2(uint8_t *out, size_t *out_len, size_t max_out, const uint8_t *from, size_t from_len)
int RSA_padding_add_PKCS1_type_1(uint8_t *to, size_t to_len, const uint8_t *from, size_t from_len)
static int rand_nonzero(uint8_t *out, size_t len)
int RSA_padding_check_PKCS1_OAEP_mgf1(uint8_t *out, size_t *out_len, size_t max_out, const uint8_t *from, size_t from_len, const uint8_t *param, size_t param_len, const EVP_MD *md, const EVP_MD *mgf1md)
#define EVP_DigestFinal_ex
#define RSA_R_BAD_SIGNATURE
int RSA_padding_add_PKCS1_OAEP_mgf1(uint8_t *to, size_t to_len, const uint8_t *from, size_t from_len, const uint8_t *param, size_t param_len, const EVP_MD *md, const EVP_MD *mgf1md)
#define RSA_R_BAD_PAD_BYTE_COUNT
#define RSA_PKCS1_PADDING_SIZE
int RSA_padding_add_PKCS1_PSS_mgf1(const RSA *rsa, unsigned char *EM, const unsigned char *mHash, const EVP_MD *Hash, const EVP_MD *mgf1Hash, int sLenRequested)
UniquePtr< SSL_SESSION > ret
#define RSA_R_FIRST_OCTET_INVALID
const OPENSSL_EXPORT EVP_MD * EVP_sha1(void)
static crypto_word_t constant_time_select_w(crypto_word_t mask, crypto_word_t a, crypto_word_t b)
#define RSA_R_DATA_TOO_LARGE
#define RSA_R_BLOCK_TYPE_IS_NOT_01
#define RSA_R_LAST_OCTET_INVALID
static crypto_word_t constant_time_eq_w(crypto_word_t a, crypto_word_t b)
#define RSA_R_DATA_TOO_SMALL
#define EVP_MD_CTX_cleanup
#define ERR_R_MALLOC_FAILURE
grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:00:49