View Issue Details

IDProjectCategoryView StatusLast Update
0003765Talerwallet (WebExtension)public2019-12-26 20:37
ReporterChristian Grothoff Assigned ToMarcello Stanisci Resolution deadline
ImplementerReviewer 
Release signed byDeployed by 
VerifierCommunicator 
Data protection authority notification requiredNo  
CSIRT notification requiredNo  
Estimated effort (hours)Actual effort (hours)0 
Fast-trackNo
Work packagenone
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.

Required notifications

Address or linkRemarkAdded byNotifiedActions

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 19: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 19: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 19: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 20: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 08: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 12: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 20:20

manager   ~0009397

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

Marcello Stanisci

2015-07-07 11:57

reporter   ~0009398

fixed in 58ccf8d2afd0243363345922467459c1e7a03ac1

Issue History

Date ModifiedUsernameFieldChange
2015-04-11 15:10Christian GrothoffNew Issue
2015-04-11 15:10Christian GrothoffStatusnew => assigned
2015-04-11 15:10Christian GrothoffAssigned To => Marcello Stanisci
2015-04-11 15:10Christian GrothoffRelationship addedchild of 0003761
2015-04-11 15:39Christian GrothoffRelationship addedrelated to 0003766
2015-06-30 08:13Marcello StanisciStatusassigned => informing
2015-06-30 08:13Marcello StanisciResolutionopen => fixed
2015-06-30 08:16Christian GrothoffFixed in Version => 0.0
2015-06-30 19:14Christian GrothoffNote Added: 0009384
2015-06-30 19:30Christian GrothoffNote Added: 0009385
2015-06-30 19:30Christian GrothoffStatusinforming => assigned
2015-07-01 19:04Marcello StanisciNote Added: 0009390
2015-07-01 20:01Christian GrothoffNote Added: 0009391
2015-07-02 08:08Marcello StanisciNote Added: 0009392
2015-07-02 12:47Marcello StanisciNote Added: 0009393
2015-07-06 20:20Christian GrothoffNote Added: 0009397
2015-07-07 11:57Marcello StanisciNote Added: 0009398
2015-07-07 11:57Marcello StanisciStatusassigned => informing
2015-07-07 20:07Christian GrothoffStatusinforming => closed
2019-12-26 20:37Florian DoldCategorywallet (browser-based) => wallet (WebExtensions)
2023-04-13 18:37Florian DoldCategorywallet (WebExtensions) => wallet (WebExtension)