Beispiel #1
0
 bool verify_data( const char* key, uint32_t key_size, uint32_t pe, const sha1& digest, const char* sig )
 {
     RSA* pub = get_pub( key,key_size,pe);
     auto v = RSA_verify( NID_sha1, (const uint8_t*)digest.data(), 20, (uint8_t*)sig, key_size, pub );
     RSA_free(pub);
     return 0 != v;
 }
Beispiel #2
0
    signature  private_key::sign( const sha1& digest )const
    {
       if( !my ) FC_THROW_EXCEPTION( assert_exception, "!null" );
       signature sig;
       sig.resize( RSA_size(my->rsa) );

       uint32_t slen = 0;
       if( 1 != RSA_sign( NID_sha1, (uint8_t*)digest.data(),
                          20, (unsigned char*)sig.data(), &slen, my->rsa ) )
       {
           FC_THROW_EXCEPTION( exception, "rsa sign failed with ${message}", ("message",fc::string(ERR_error_string( ERR_get_error(),NULL))) );
       }
       return sig;
    }
Beispiel #3
0
    bool sign_data( const fc::vector<char>& key, uint32_t key_size, uint32_t pe, const sha1& digest, char* sig )
    {
        RSA* priv = get_priv( key,key_size,pe);
        if( !priv ) {
            generic_exception g(fc::generic_exception("Error loading private key:  " +  fc::string(ERR_error_string( ERR_get_error(),NULL))) );
		        FC_THROW(g);
        }
        uint32_t slen = 0;
        if( 1 != RSA_sign( NID_sha1, (uint8_t*)digest.data(), sizeof(digest), (unsigned char*)sig, &slen, priv ) )
        {
            RSA_free(priv);
            generic_exception g(fc::generic_exception("Error signing data: " +  fc::string(ERR_error_string( ERR_get_error(),NULL))) );
		        FC_THROW(g);
                                                
        }
        RSA_free(priv);
        return true;
    }
Beispiel #4
0
sha1 operator << ( const sha1& h1, uint32_t i ) {
  sha1 result;
  fc::detail::shift_l( h1.data(), result.data(), result.data_size(), i );
  return result;
}