View Issue Details

IDProjectCategoryView StatusLast Update
0003765Talerwallet (WebExtension)public2019-12-26 21:37
ReporterChristian Grothoff Assigned ToMarcello Stanisci  
PriorityurgentSeverityfeatureReproducibilityN/A
Status closedResolutionfixed 
Platformi7OSDebian GNU/LinuxOS Versionsqueeze
Product Versiongit (master) 
Target Version0.0Fixed in Version0.0 
Summary0003765: wallet needs to support RSA blind signature operations
DescriptionWhile we don't (technically) need the signing, the wallet must have unblinding and verification of the signatures. Naturally, signing would still be good to have for testing.
TagsNo tags attached.

Relationships

related to 0003766 closedChristian Grothoff Should offer crypto-compatibility /test API 
child of 0003761 closedMarcello Stanisci wallet needs to support /keys to obtain mint denomination and signing keys 

Activities

Christian Grothoff

2015-06-30 21:14

manager   ~0009384

Marcello, why did you mark this one as resolved? Wasn't this the issue we said you should re-assign to me, because the RSA public key needs to be known to the client and is not?

Christian Grothoff

2015-06-30 21:30

manager   ~0009385

I've now updated the /test/rsa API to allow you to fetch the RSA public key separately. So now you need to

1) HTTP GET /test/rsa/get to fetch the public key,
2) blind the value to sign using the RSA public key and blinding factor
   (you create the value and blinding factor)
3) HTTP POST /test/rsa/sign the blinded value, receiving a blind signature
4) extract the RSA signature and verify it against the public key from (1).

Marcello Stanisci

2015-07-01 21:04

reporter   ~0009390

Hi Christian,

I marked that as resolved because I wrote some tests to blind-sign-unblind-verify locally in the extension.
I am having some issue in decoding the public key the mint sends back. Something must be broken with the base32 decoding function.

In any case,

there is a declaration like:

static struct GNUNET_CRYPTO_rsa_PrivateKey *rsa_pk;

in top of the taler-mint-httpd_test.c file.

And then in the handler something like

if(rsa_pk == NULL) /* create keys and send the public one back */

Maybe the mint is compiled with some flag that sets to NULL uninitialized variables (though from a quick
look to .am's and .ac's that doesn't seem the case).

Anyway, running a mint with that variable explicitly set to NULL didn't solved.

Can you confirm that this is not a problem such that the extension gets a public key that is, in some way, broken?

Sorry for the delay and for the misunderstanding.

Christian Grothoff

2015-07-01 22:01

manager   ~0009391

If you resolve a bug, always put into the final bugnote as to *why* you think it is resolved (possibly just the revision in which you fixed it, but some note is needed).

And yes, we need to then now figure out why the public key doesn't decode -- easier to test in this testcase than in the "big" /keys fetch.

The rsa_pk will be initialized to NULL per default, so it is OK to not set it non-NULL explicitly. So that's not the issue. However, it is of course still possible that the mint returns a malformed string for *other* reasons. One thing to do for sure is to add encode/decode printf's to the mint's test/ handlers and to your JavaScript so that we can compare.

Marcello Stanisci

2015-07-02 10:08

reporter   ~0009392

The problem is unlikely to be in the mint.
I am experiencing the following situation:

let b be a binary value and b' = base32(b).
if I decode b' getting c = dec(b') and then
I encode c getting c' = base32(c), then c' != b'.

Marcello Stanisci

2015-07-02 14:47

reporter   ~0009393

Solved. The problem was that I gave the rsa public key to the verifying routine as it was after base32 decoding.

So calling GNUNET_CRYPTO_rsa_public_key_decode() on the decoded key, and then using that further decoded key to verify
the signature worked out.

That was not immediately suspicable just by reading the comments regarding the functions on gnunetutil_crypto library
because functions such as GNUNET_CRYPTO_rsa_public_key_encode() are described to be suitable for storing the key in
a file.

So as of now any testcase runs fine.

Christian Grothoff

2015-07-06 22:20

manager   ~0009397

Please 'resolve' bugs if they are fixed...

Marcello Stanisci

2015-07-07 13:57

reporter   ~0009398

fixed in 58ccf8d2afd0243363345922467459c1e7a03ac1

Issue History

Date Modified Username Field Change
2015-04-11 17:10 Christian Grothoff New Issue
2015-04-11 17:10 Christian Grothoff Status new => assigned
2015-04-11 17:10 Christian Grothoff Assigned To => Marcello Stanisci
2015-04-11 17:10 Christian Grothoff Relationship added child of 0003761
2015-04-11 17:39 Christian Grothoff Relationship added related to 0003766
2015-06-30 10:13 Marcello Stanisci Status assigned => resolved
2015-06-30 10:13 Marcello Stanisci Resolution open => fixed
2015-06-30 10:16 Christian Grothoff Fixed in Version => 0.0
2015-06-30 21:14 Christian Grothoff Note Added: 0009384
2015-06-30 21:30 Christian Grothoff Note Added: 0009385
2015-06-30 21:30 Christian Grothoff Status resolved => assigned
2015-07-01 21:04 Marcello Stanisci Note Added: 0009390
2015-07-01 22:01 Christian Grothoff Note Added: 0009391
2015-07-02 10:08 Marcello Stanisci Note Added: 0009392
2015-07-02 14:47 Marcello Stanisci Note Added: 0009393
2015-07-06 22:20 Christian Grothoff Note Added: 0009397
2015-07-07 13:57 Marcello Stanisci Note Added: 0009398
2015-07-07 13:57 Marcello Stanisci Status assigned => resolved
2015-07-07 22:07 Christian Grothoff Status resolved => closed
2019-12-26 21:37 Florian Dold Category wallet (browser-based) => wallet (WebExtensions)
2023-04-13 20:37 Florian Dold Category wallet (WebExtensions) => wallet (WebExtension)