003 File Manager
Current Path:
/usr/src/crypto/openssl/crypto/rsa
usr
/
src
/
crypto
/
openssl
/
crypto
/
rsa
/
📁
..
📄
build.info
(320 B)
📄
rsa_ameth.c
(30.14 KB)
📄
rsa_asn1.c
(3.82 KB)
📄
rsa_chk.c
(6.04 KB)
📄
rsa_crpt.c
(3.93 KB)
📄
rsa_depr.c
(1.46 KB)
📄
rsa_err.c
(12.26 KB)
📄
rsa_gen.c
(12.18 KB)
📄
rsa_lib.c
(11.16 KB)
📄
rsa_local.h
(4.9 KB)
📄
rsa_meth.c
(7.33 KB)
📄
rsa_mp.c
(2.63 KB)
📄
rsa_none.c
(1.16 KB)
📄
rsa_oaep.c
(10.32 KB)
📄
rsa_ossl.c
(29.31 KB)
📄
rsa_pk1.c
(7.46 KB)
📄
rsa_pmeth.c
(24.91 KB)
📄
rsa_prn.c
(1.02 KB)
📄
rsa_pss.c
(7.19 KB)
📄
rsa_saos.c
(2.68 KB)
📄
rsa_sign.c
(7.74 KB)
📄
rsa_ssl.c
(5.96 KB)
📄
rsa_x931.c
(2.55 KB)
📄
rsa_x931g.c
(4.67 KB)
Editing: rsa_mp.c
/* * Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. * Copyright 2017 BaishanCloud. All rights reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ #include <openssl/bn.h> #include <openssl/err.h> #include "rsa_local.h" void rsa_multip_info_free_ex(RSA_PRIME_INFO *pinfo) { /* free pp and pinfo only */ BN_clear_free(pinfo->pp); OPENSSL_free(pinfo); } void rsa_multip_info_free(RSA_PRIME_INFO *pinfo) { /* free a RSA_PRIME_INFO structure */ BN_clear_free(pinfo->r); BN_clear_free(pinfo->d); BN_clear_free(pinfo->t); rsa_multip_info_free_ex(pinfo); } RSA_PRIME_INFO *rsa_multip_info_new(void) { RSA_PRIME_INFO *pinfo; /* create a RSA_PRIME_INFO structure */ if ((pinfo = OPENSSL_zalloc(sizeof(RSA_PRIME_INFO))) == NULL) { RSAerr(RSA_F_RSA_MULTIP_INFO_NEW, ERR_R_MALLOC_FAILURE); return NULL; } if ((pinfo->r = BN_secure_new()) == NULL) goto err; if ((pinfo->d = BN_secure_new()) == NULL) goto err; if ((pinfo->t = BN_secure_new()) == NULL) goto err; if ((pinfo->pp = BN_secure_new()) == NULL) goto err; return pinfo; err: BN_free(pinfo->r); BN_free(pinfo->d); BN_free(pinfo->t); BN_free(pinfo->pp); OPENSSL_free(pinfo); return NULL; } /* Refill products of primes */ int rsa_multip_calc_product(RSA *rsa) { RSA_PRIME_INFO *pinfo; BIGNUM *p1 = NULL, *p2 = NULL; BN_CTX *ctx = NULL; int i, rv = 0, ex_primes; if ((ex_primes = sk_RSA_PRIME_INFO_num(rsa->prime_infos)) <= 0) { /* invalid */ goto err; } if ((ctx = BN_CTX_new()) == NULL) goto err; /* calculate pinfo->pp = p * q for first 'extra' prime */ p1 = rsa->p; p2 = rsa->q; for (i = 0; i < ex_primes; i++) { pinfo = sk_RSA_PRIME_INFO_value(rsa->prime_infos, i); if (pinfo->pp == NULL) { pinfo->pp = BN_secure_new(); if (pinfo->pp == NULL) goto err; } if (!BN_mul(pinfo->pp, p1, p2, ctx)) goto err; /* save previous one */ p1 = pinfo->pp; p2 = pinfo->r; } rv = 1; err: BN_CTX_free(ctx); return rv; } int rsa_multip_cap(int bits) { int cap = 5; if (bits < 1024) cap = 2; else if (bits < 4096) cap = 3; else if (bits < 8192) cap = 4; if (cap > RSA_MAX_PRIME_NUM) cap = RSA_MAX_PRIME_NUM; return cap; }
Upload File
Create Folder