yodaos-project / ShadowNode

Use Node.js in your end devices(QQ: 796448809)
https://yodaos-project.github.io/ShadowNode/
Other
588 stars 46 forks source link

crypto: test mbedtls for sign and verify #500

Closed Txiaozhe closed 5 years ago

Txiaozhe commented 5 years ago

When I use this code to test sign by mbedtls lib., I got the err:

buf size: 1, return: -8576
version: 0

-8576 code means in mbedtls

The CRT/CRL/CSR format is invalid, e.g.
different type expected.

my source code:

#include <stdio.h>
#include <mbedtls/x509_crl.h>
#include "mbedtls/platform.h"

int main()
{
  unsigned char buf = "-----BEGIN X509 CRL-----\nMIIBqzCBlDANBgkqhkiG9w0BAQIFADA7MQswCQYDVQQGEwJOTDERMA8GA1UEChMI\nUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EXDTA5MDcxOTE5NTYz\nN1oXDTA5MDkxNzE5NTYzN1owKDASAgEBFw0wOTAyMDkyMTEyMzZaMBICAQMXDTA5\nMDIwOTIxMTIzNlowDQYJKoZIhvcNAQECBQADggEBAF8F5y82zgtxcwQ4aFvrkanT\nygyd5+RW/Y//vpck44V+CYx1d1r+QkauaXel9qUKBPsg2dUwQ+jwV/m+Sp2MHaX5\nNfW7XUb7Ji4yhwgh9/9vFPqqnKBf9esLJuJoQ4mLhcGB5J1yCcavLrynvB4PJEnG\ngraTbbyizelXBmk3ApvNYxczJZxt7EzpVbrFaev7myGmOffdDkIMc2WDpDkyLTlU\nkITjB7fMJhD/dgNskKZ4fgkKKKPCMJrJPO67Wzwqx/6vsrZcACB9X+143WZr4GVO\nFw2SaMnqfVLlUEndoOpbLCU4ugcc82kQQF3TsovXJYW7XqoWl2u/ENCwShl9rl4=\n-----END X509 CRL-----";

  mbedtls_x509_crl crl;
  mbedtls_x509_crl_init(&crl);
  int err = mbedtls_x509_crl_parse(&crl, &buf, strlen(&buf));
  if (err != 0) {
    mbedtls_printf("buf size: %lu, return: %d\n", sizeof(buf), err);
    mbedtls_x509_crl_free( &crl );
  }

  printf("version: %d\n", (&crl)->version);
  mbedtls_x509_crl_free (&crl);
}

In its demo program, it will use a default ca file: cert.crt, but I not found it, how can I get a right ca file?

yorkie commented 5 years ago

Where do u print the "error code"? I did not see any statement from your source.

Txiaozhe commented 5 years ago

I write a demo program to test it, my source code is:

#include <stdio.h>
#include <mbedtls/x509_crl.h>
#include "mbedtls/platform.h"

int main()
{
  unsigned char buf = "-----BEGIN X509 CRL-----\nMIIBqzCBlDANBgkqhkiG9w0BAQIFADA7MQswCQYDVQQGEwJOTDERMA8GA1UEChMI\nUG9sYXJTU0wxGTAXBgNVBAMTEFBvbGFyU1NMIFRlc3QgQ0EXDTA5MDcxOTE5NTYz\nN1oXDTA5MDkxNzE5NTYzN1owKDASAgEBFw0wOTAyMDkyMTEyMzZaMBICAQMXDTA5\nMDIwOTIxMTIzNlowDQYJKoZIhvcNAQECBQADggEBAF8F5y82zgtxcwQ4aFvrkanT\nygyd5+RW/Y//vpck44V+CYx1d1r+QkauaXel9qUKBPsg2dUwQ+jwV/m+Sp2MHaX5\nNfW7XUb7Ji4yhwgh9/9vFPqqnKBf9esLJuJoQ4mLhcGB5J1yCcavLrynvB4PJEnG\ngraTbbyizelXBmk3ApvNYxczJZxt7EzpVbrFaev7myGmOffdDkIMc2WDpDkyLTlU\nkITjB7fMJhD/dgNskKZ4fgkKKKPCMJrJPO67Wzwqx/6vsrZcACB9X+143WZr4GVO\nFw2SaMnqfVLlUEndoOpbLCU4ugcc82kQQF3TsovXJYW7XqoWl2u/ENCwShl9rl4=\n-----END X509 CRL-----";

  mbedtls_x509_crl crl;
  mbedtls_x509_crl_init(&crl);
  int err = mbedtls_x509_crl_parse(&crl, &buf, strlen(&buf));
  if (err != 0) {
    mbedtls_printf("buf size: %lu, return: %d\n", sizeof(buf), err);
    mbedtls_x509_crl_free( &crl );
  }

  printf("version: %d\n", (&crl)->version);
  mbedtls_x509_crl_free (&crl);
}
Txiaozhe commented 5 years ago

it return -0x2180

Txiaozhe commented 5 years ago

mbedtls_printf("buf size: %lu, return: %d\n", sizeof(buf), err);

this line print the err code

yorkie commented 5 years ago

You could take a look at https://github.com/yodaos-project/ShadowNode/blob/master/src/modules/iotjs_module_tls.c#L59.

Txiaozhe commented 5 years ago

Yes,thanks!