How do I feed OpenSSL random data for use in ECDSA signing?

前端 未结 5 2090
无人共我
无人共我 2021-01-06 02:34

I want to feed OpenSSL specific data for use as random seed during the signing of data with an EC key. I\'m doing this to compare my application with another reference one (

5条回答
  •  隐瞒了意图╮
    2021-01-06 02:45

    This is how you should go about loading that public key:

      EC_KEY    *key = NULL;
      EC_POINT *pub_key;
      const EC_GROUP *group;
    
      SSL_library_init();
      SSL_load_error_strings();
    
      key = EC_KEY_new_by_curve_name(NID_sect163k1);
      group = EC_KEY_get0_group(key);
      pub_key = EC_POINT_new(group);
    
      EC_POINT_hex2point(group,
        "369368AF243193D001E39CE76BB1D5DA08A9BC0A63307AB352338E5EA5C0E05A0C2531866F3E3C2702", pub_key, NULL);
    
      EC_KEY_set_public_key(key, pub_key);
    
      if (!EC_KEY_check_key(key)) {
        printf("EC_KEY_check_key failed:\n");
        printf("%s\n",ERR_error_string(ERR_get_error(),NULL));
      } else {
        printf("Public key verified OK\n");
      }
    

    It seems to verify OK, so it should work for checking a signature.

    I think your bug might have just been passing a NULL (in ecgroup) to EC_POINT_new().

提交回复
热议问题