- 
                Notifications
    
You must be signed in to change notification settings  - Fork 484
 
Some improvements #699
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: minor-improvements
Are you sure you want to change the base?
Some improvements #699
Conversation
| 
           I have just quickly changed the libtomcrypt in my CryptX perl bindings for the branch "some-improvements" from this PR. It failed to build (which is probably expected) https://github.com/DCIT/perl-CryptX/actions/runs/18219248768/job/51875345151 I will try to adopt CryptX to the new changes (after that we will see whether CryptX test suite reveals something).  | 
    
24f8a2f    to
    787e5c1      
    Compare
  
    
          
 Cool, thanks! 
 If I'm not mistaken there are two errors [148] ff. is already caused by #524 [187] ff. is indeed caused by the API change of  Both are expected, so thanks already in advance for fixing this in CryptX and testing those changes  [148] https://github.com/DCIT/perl-CryptX/actions/runs/18219248768/job/51875345151#step:7:149  | 
    
| 
           I have updated my perl bindings and it seems to work fine. Just one minor suggestion: please add   | 
    
5b5fec8    to
    c760347      
    Compare
  
    e794721    to
    151a655      
    Compare
  
    | 
           I am not sure about having: type = LTC_ECCSIG_RFC5656 (as I understand the "type" is rather a format specification not a flag defining whether to use deterministic signing) e.g. one might want LTC_ECCSIG_RFC5656 + LTC_ECCSIG_ETH27 at the same time.  | 
    
| 
           ad   | 
    
151a655    to
    f49bec4      
    Compare
  
    
          
 Yeah, we could, but that would mean that it must be initialized to -1 if one is not interested in it (which is nearly always the case). With the current implementation via a pointer, it is disabled by default, so it'd be easier to use for the majority of users. But if you think it'd be better as  
 I guess you're confusing RFC5656 and RFC6979 :)  | 
    
f49bec4    to
    7ff585a      
    Compare
  
    
          
 Oh, yes. Sorry for the noise.  | 
    
| 
           FYI current branch   | 
    
3f05dbf    to
    747b9c1      
    Compare
  
    
          
 it is a segfault (memory corruption) related to   | 
    
          
 hmm At least the tests can't reproduce it for AARCH64 with Qemu ...  | 
    
| 
           on cywin it fails inside   | 
    
| 
           The fix DCIT/perl-CryptX@cccc52b now passes tests also on cygwin + arm  | 
    
b13a9ae    to
    e8d9a0c      
    Compare
  
    
          
 ugh, sorry! The tests seem to work fine for me. I've just pushed my WIP state with the updated macros etc.  | 
    
          
 It could absolutely be that the generic validity checks don't handle everything correctly, I've only tested against the built-in set of tests... 😬  | 
    
e8d9a0c    to
    96e49c1      
    Compare
  
    | 
           shouldn't the   | 
    
| 
           The simple example I am not able to implement in the new RSA API (sorry for just a code fragment extracted from my perl bindings):  | 
    
| 
           I'll have a look into it later, but please remove   | 
    
          
 It worked. But IMO a bit surprising to me (as the whole concept of key->params / check->params / ltc_rsa_op_parameters ...) Anyway, still bunch of other failures (will investigate later).  | 
    
It expects a pair of type `(unsigned char*,unsigned long)` and not `(unsigned char*,unsigned int)`. Fixes: 46fa363 ("Finish up RFC6979 ECDSA keygen") Reported-via: #699 (comment) ff. Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
To be able to do a bit more, add an optional handler callback function. Additional to that, also make it possible to mark elements as optional. Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
(and you should do that too) Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
Update PKCS#1-PSS and RSA APIs that allow passing a separate hash index for the MGF1 hash. Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
Slightly minimize both space and time when importing a
SubjectPublicKeyInfo. Time for ECC keys stays the same.
Those tests were done with X.509 support already available, but later these
commits were split up to be independent of the X.509 feature.
Running the entire set of pem files through `x509_verify` via [0]
resp. the timing app via [1] resulted in the following data:
Before this patch:
[0]
```
==1031519== HEAP SUMMARY:
==1031519==     in use at exit: 0 bytes in 0 blocks
==1031519==   total heap usage: 424,057 allocs, 424,057 frees, 73,527,730 bytes allocated
```
[1]
```
x509 cert-rsa-pss.pem    :     50021 cycles
x509 LTC_CA.pem          :     10335 cycles
x509 LTC_S0.pem          :     47284 cycles
x509 LTC_SS0.pem         :     36687 cycles
x509 secp384r1.pem       :   1985416 cycles
x509 secp521r1.pem       :   3287773 cycles
x509 LTC_SSS0.pem        :     25086 cycles
x509 secp224r1.pem       :    775807 cycles
```
After this patch:
[0]
```
==1043548== HEAP SUMMARY:
==1043548==     in use at exit: 0 bytes in 0 blocks
==1043548==   total heap usage: 337,244 allocs, 337,244 frees, 65,047,463 bytes allocated
```
[1]
```
x509 cert-rsa-pss.pem    :     32568 cycles
x509 LTC_CA.pem          :      5478 cycles
x509 LTC_S0.pem          :     36093 cycles
x509 LTC_SS0.pem         :     23351 cycles
x509 secp384r1.pem       :   1984030 cycles
x509 secp521r1.pem       :   3303396 cycles
x509 LTC_SSS0.pem        :     13220 cycles
x509 secp224r1.pem       :    781534 cycles
```
[0] find tests/x509 -name '*.pem' -exec valgrind --leak-check=full --show-leak-kinds=all './x509_verify' {} \+
[1] ./timing x509
Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
    Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
Fixes #700 Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
This also: a) deprecates the old RSA and PKCS#1 API. b) reverts the changes done to them in order to make them API compatible again with the last release. The fixes commit mentioned is the testcase for the Bleichenbacher attack, which works now again as expected. Fixes: 9d03c38 ("add flags to `der_decode_sequence()`") Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
          
 Yeah, a bit, but not really. The  Regular RSA keys can be used with all PKCS#1 versions. Restricted RSA keys ("PSS-keys") must only be used with PKCS#1 versions > 1.5, and come with a set of parameters. There's already   | 
    
96e49c1    to
    2b65b91      
    Compare
  
    
I've reordered and refactored some of the commits of #697 in order to limit its scope and simplify the merge and a potential faster release of 2.0
With these changes merged I currently don't see any planned ABI or API breakage (besides #515, but that's an entirely different discussion).
This should be the last PR with intentional changes before a v2.0.0-rc1, c.f. #568