Lines Matching refs:skey

89 static void public (gcry_mpi_t output, gcry_mpi_t input, RSA_public_key *skey);
90 static void secret (gcry_mpi_t output, gcry_mpi_t input, RSA_secret_key *skey);
615 stronger_key_check ( RSA_secret_key *skey )
623 mpi_mul( t, skey->p, skey->q);
624 if (mpi_cmp( t, skey->n) )
628 if( mpi_cmp( skey->p, skey->q ) > 0 )
631 _gcry_mpi_swap ( skey->p, skey->q);
635 mpi_sub_ui(t, skey->p, 1 );
636 mpi_fdiv_r(t, t, skey->e );
639 mpi_sub_ui(t, skey->q, 1 );
640 mpi_fdiv_r(t, t, skey->e );
645 mpi_sub_ui( t1, skey->p, 1 );
646 mpi_sub_ui( t2, skey->q, 1 );
650 mpi_invm(t, skey->e, t );
651 if ( mpi_cmp(t, skey->d ) )
654 mpi_set (skey->d, t);
655 _gcry_log_mpidump (" fixed d", skey->d);
659 mpi_invm(t, skey->p, skey->q );
660 if ( mpi_cmp(t, skey->u ) )
663 mpi_set (skey->u, t);
664 _gcry_log_mpidump (" fixed u", skey->u);
693 secret(gcry_mpi_t output, gcry_mpi_t input, RSA_secret_key *skey )
695 if (!skey->p || !skey->q || !skey->u)
697 mpi_powm (output, input, skey->d, skey->n);
701 gcry_mpi_t m1 = mpi_alloc_secure( mpi_get_nlimbs(skey->n)+1 );
702 gcry_mpi_t m2 = mpi_alloc_secure( mpi_get_nlimbs(skey->n)+1 );
703 gcry_mpi_t h = mpi_alloc_secure( mpi_get_nlimbs(skey->n)+1 );
706 mpi_sub_ui( h, skey->p, 1 );
707 mpi_fdiv_r( h, skey->d, h );
708 mpi_powm( m1, input, h, skey->p );
710 mpi_sub_ui( h, skey->q, 1 );
711 mpi_fdiv_r( h, skey->d, h );
712 mpi_powm( m2, input, h, skey->q );
716 mpi_add ( h, h, skey->q );
717 mpi_mulm( h, skey->u, h, skey->q );
719 mpi_mul ( h, h, skey->p );
778 gcry_mpi_t *skey, gcry_mpi_t **retfactors,
840 skey[0] = sk.n;
841 skey[1] = sk.e;
842 skey[2] = sk.d;
843 skey[3] = sk.p;
844 skey[4] = sk.q;
845 skey[5] = sk.u;
854 gcry_mpi_t *skey, gcry_mpi_t **retfactors)
856 return rsa_generate_ext (algo, nbits, evalue, NULL, skey, retfactors, NULL);
861 rsa_check_secret_key (int algo, gcry_mpi_t *skey)
868 sk.n = skey[0];
869 sk.e = skey[1];
870 sk.d = skey[2];
871 sk.p = skey[3];
872 sk.q = skey[4];
873 sk.u = skey[5];
905 gcry_mpi_t *skey, int flags)
917 sk.n = skey[0];
918 sk.e = skey[1];
919 sk.d = skey[2];
920 sk.p = skey[3]; /* Optional. */
921 sk.q = skey[4]; /* Optional. */
922 sk.u = skey[5]; /* Optional. */
986 rsa_sign (int algo, gcry_mpi_t *resarr, gcry_mpi_t data, gcry_mpi_t *skey)
992 sk.n = skey[0];
993 sk.e = skey[1];
994 sk.d = skey[2];
995 sk.p = skey[3];
996 sk.q = skey[4];
997 sk.u = skey[5];