RSA import x509 #79

Merged
sjaeckel merged 9 commits from feature/rsa_import_x509 into develop 2017-03-30 15:28:25 -05:00
sjaeckel commented 2015-09-10 16:43:06 -05:00 (Migrated from github.com)

Yeah I know it's nothing like a general purpose x.509 parser, but at least it can import the public key from an RSA certificate.
Any suggestions/comments/ideas?

Yeah I know it's nothing like a general purpose x.509 parser, but at least it can import the public key from an RSA certificate. Any suggestions/comments/ideas?
karel-m commented 2016-01-10 06:18:21 -06:00 (Migrated from github.com)

I am definitely for adding this functionality.

I am only not sure whether to put it inside rsa_import(..) or whether to handle it in a separate rsa_import_x509(..)

X.509 cert is not the only format of RSA key we do not support - for example I have partly working import of PKCS8 private keys here: https://github.com/DCIT/perl-CryptX/blob/master/src/ltc/pk/rsa/rsa_import_pkcs8.c - implemented as a separate rsa_import_pkcs8(..)

I am definitely for adding this functionality. I am only not sure whether to put it inside `rsa_import(..)` or whether to handle it in a separate `rsa_import_x509(..)` X.509 cert is not the only format of RSA key we do not support - for example I have partly working import of PKCS8 private keys here: https://github.com/DCIT/perl-CryptX/blob/master/src/ltc/pk/rsa/rsa_import_pkcs8.c - implemented as a separate `rsa_import_pkcs8(..)`
sjaeckel commented 2016-09-24 11:35:14 -05:00 (Migrated from github.com)

I am only not sure whether to put it inside rsa_import(..) or whether to handle it in a separate rsa_import_x509(..)

how about factoring-out several specific methods and keeping rsa_import() as a one-shot that tries to determine the correct type?

X.509 cert is not the only format of RSA key we do not support - for example I have partly working import of PKCS8 private keys here: https://github.com/DCIT/perl-CryptX/blob/master/src/ltc/pk/rsa/rsa_import_pkcs8.c - implemented as a separate rsa_import_pkcs8(..)

looks good

> I am only not sure whether to put it inside rsa_import(..) or whether to handle it in a separate rsa_import_x509(..) how about factoring-out several specific methods and keeping rsa_import() as a one-shot that tries to determine the correct type? > X.509 cert is not the only format of RSA key we do not support - for example I have partly working import of PKCS8 private keys here: https://github.com/DCIT/perl-CryptX/blob/master/src/ltc/pk/rsa/rsa_import_pkcs8.c - implemented as a separate rsa_import_pkcs8(..) looks good
sjaeckel commented 2017-02-21 07:44:56 -06:00 (Migrated from github.com)

Would you mind creating a PR with the rsa_import_pkcs8(..) implementation?

Then I'd factor out the other specific functions to a new PR and this one will then only be for the x509.

Would you mind creating a PR with the `rsa_import_pkcs8(..)` implementation? Then I'd factor out the other specific functions to a new PR and this one will then only be for the x509.
karel-m commented 2017-03-09 17:53:59 -06:00 (Migrated from github.com)

While working on a test for #157 I have created also a test case for future rsa_import_x509. Here is the relevant fragment that should be added into rsa_test.c:

static const unsigned char x509_public_rsa[] = {
  0x30, 0x82, 0x02, 0x75, 0x30, 0x82, 0x01, 0xde, 0x02, 0x09, 0x00, 0x98, 0x8c, 0x2c, 0x33, 0xd2,
  0x5f, 0x49, 0xa6, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b,
  0x05, 0x00, 0x30, 0x7e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43,
  0x5a, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x06, 0x4d, 0x6f, 0x72, 0x61,
  0x76, 0x61, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x04, 0x42, 0x72, 0x6e,
  0x6f, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x07, 0x4c, 0x54, 0x43, 0x20,
  0x4c, 0x74, 0x64, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x06, 0x43, 0x72,
  0x79, 0x70, 0x74, 0x6f, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x09, 0x54,
  0x65, 0x73, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x31, 0x18, 0x30, 0x16, 0x06, 0x09, 0x2a, 0x86,
  0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, 0x16, 0x09, 0x74, 0x65, 0x73, 0x74, 0x40, 0x63, 0x65,
  0x72, 0x74, 0x30, 0x20, 0x17, 0x0d, 0x31, 0x37, 0x30, 0x33, 0x30, 0x39, 0x32, 0x33, 0x34, 0x33,
  0x33, 0x39, 0x5a, 0x18, 0x0f, 0x32, 0x32, 0x39, 0x30, 0x31, 0x32, 0x32, 0x32, 0x32, 0x33, 0x34,
  0x33, 0x33, 0x39, 0x5a, 0x30, 0x7e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
  0x02, 0x43, 0x5a, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x06, 0x4d, 0x6f,
  0x72, 0x61, 0x76, 0x61, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x04, 0x42,
  0x72, 0x6e, 0x6f, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x07, 0x4c, 0x54,
  0x43, 0x20, 0x4c, 0x74, 0x64, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x06,
  0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c,
  0x09, 0x54, 0x65, 0x73, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x31, 0x18, 0x30, 0x16, 0x06, 0x09,
  0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, 0x16, 0x09, 0x74, 0x65, 0x73, 0x74, 0x40,
  0x63, 0x65, 0x72, 0x74, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
  0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81,
  0x00, 0xcf, 0x9a, 0xde, 0x64, 0x8a, 0xda, 0xc8, 0x33, 0x20, 0xa9, 0xd7, 0x83, 0x31, 0x19, 0x54,
  0xb2, 0x9a, 0x85, 0xa7, 0xa1, 0xb7, 0x75, 0x33, 0xb6, 0xa9, 0xac, 0x84, 0x24, 0xb3, 0xde, 0xdb,
  0x7d, 0x85, 0x2d, 0x96, 0x65, 0xe5, 0x3f, 0x72, 0x95, 0x24, 0x9f, 0x28, 0x68, 0xca, 0x4f, 0xdb,
  0x44, 0x1c, 0x3e, 0x60, 0x12, 0x8a, 0xdd, 0x26, 0xa5, 0xeb, 0xff, 0x0b, 0x5e, 0xd4, 0x88, 0x38,
  0x49, 0x2a, 0x6e, 0x5b, 0xbf, 0x12, 0x37, 0x47, 0xbd, 0x05, 0x6b, 0xbc, 0xdb, 0xf3, 0xee, 0xe4,
  0x11, 0x8e, 0x41, 0x68, 0x7c, 0x61, 0x13, 0xd7, 0x42, 0xc8, 0x80, 0xbe, 0x36, 0x8f, 0xdc, 0x08,
  0x8b, 0x4f, 0xac, 0xa4, 0xe2, 0x76, 0x0c, 0xc9, 0x63, 0x6c, 0x49, 0x58, 0x93, 0xed, 0xcc, 0xaa,
  0xdc, 0x25, 0x3b, 0x0a, 0x60, 0x3f, 0x8b, 0x54, 0x3a, 0xc3, 0x4d, 0x31, 0xe7, 0x94, 0xa4, 0x44,
  0xfd, 0x02, 0x03, 0x01, 0x00, 0x01, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
  0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x0a, 0x70, 0x5a, 0xab, 0xa9, 0x9a, 0x62,
  0xc6, 0x1d, 0xe2, 0x8e, 0x2c, 0x52, 0xdc, 0xb6, 0x14, 0x29, 0x01, 0x75, 0xd8, 0x7a, 0x9e, 0x93,
  0xdd, 0x2d, 0xde, 0xf1, 0x7e, 0xdf, 0x20, 0x6e, 0x93, 0x1a, 0x17, 0xef, 0x9f, 0x90, 0xc7, 0x9f,
  0xef, 0xd5, 0xfc, 0x2e, 0x35, 0xf3, 0x8a, 0x0e, 0x0b, 0x02, 0x26, 0x23, 0xe5, 0x58, 0x46, 0x89,
  0x1d, 0x5d, 0xd4, 0x35, 0x00, 0xc1, 0x9f, 0x55, 0x4a, 0x26, 0x1c, 0x9c, 0x6c, 0x14, 0xf8, 0x9a,
  0x6e, 0xfe, 0x40, 0xc3, 0x78, 0x62, 0x2a, 0xc2, 0x06, 0xde, 0x38, 0xa0, 0x28, 0x7c, 0x26, 0x31,
  0x27, 0x20, 0x92, 0x5d, 0xf2, 0x9f, 0xef, 0x21, 0x2e, 0x4c, 0x7a, 0xb6, 0x13, 0x5b, 0xa9, 0x0a,
  0x1a, 0xe9, 0x8c, 0xa8, 0xdb, 0x44, 0x6a, 0x68, 0x41, 0x41, 0xc2, 0x56, 0x79, 0x1b, 0xc9, 0x45,
  0xad, 0x9b, 0x1d, 0x78, 0xef, 0x38, 0x49, 0xe0, 0x87 };

   /* try reading the public RSA key from a X509 certificate */
   DO(rsa_import_x509(x509_public_rsa, sizeof(x509_public_rsa), &key));
   len = sizeof(buf);
   DO(rsa_export(buf, &len, PK_PUBLIC, &key));
   if (len != sizeof(openssl_public_rsa_stripped) || memcmp(buf, openssl_public_rsa_stripped, len)) {
      fprintf(stderr, "RSA public export failed to match rsa_import_x509\n");
      return 1;
   }
   rsa_free(&key);
While working on a test for #157 I have created also a test case for future `rsa_import_x509`. Here is the relevant fragment that should be added into `rsa_test.c`: ```C static const unsigned char x509_public_rsa[] = { 0x30, 0x82, 0x02, 0x75, 0x30, 0x82, 0x01, 0xde, 0x02, 0x09, 0x00, 0x98, 0x8c, 0x2c, 0x33, 0xd2, 0x5f, 0x49, 0xa6, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x7e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x5a, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x06, 0x4d, 0x6f, 0x72, 0x61, 0x76, 0x61, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x04, 0x42, 0x72, 0x6e, 0x6f, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x07, 0x4c, 0x54, 0x43, 0x20, 0x4c, 0x74, 0x64, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x06, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x09, 0x54, 0x65, 0x73, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x31, 0x18, 0x30, 0x16, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, 0x16, 0x09, 0x74, 0x65, 0x73, 0x74, 0x40, 0x63, 0x65, 0x72, 0x74, 0x30, 0x20, 0x17, 0x0d, 0x31, 0x37, 0x30, 0x33, 0x30, 0x39, 0x32, 0x33, 0x34, 0x33, 0x33, 0x39, 0x5a, 0x18, 0x0f, 0x32, 0x32, 0x39, 0x30, 0x31, 0x32, 0x32, 0x32, 0x32, 0x33, 0x34, 0x33, 0x33, 0x39, 0x5a, 0x30, 0x7e, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x5a, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0c, 0x06, 0x4d, 0x6f, 0x72, 0x61, 0x76, 0x61, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0c, 0x04, 0x42, 0x72, 0x6e, 0x6f, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x0c, 0x07, 0x4c, 0x54, 0x43, 0x20, 0x4c, 0x74, 0x64, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x0c, 0x06, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x09, 0x54, 0x65, 0x73, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x31, 0x18, 0x30, 0x16, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01, 0x16, 0x09, 0x74, 0x65, 0x73, 0x74, 0x40, 0x63, 0x65, 0x72, 0x74, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xcf, 0x9a, 0xde, 0x64, 0x8a, 0xda, 0xc8, 0x33, 0x20, 0xa9, 0xd7, 0x83, 0x31, 0x19, 0x54, 0xb2, 0x9a, 0x85, 0xa7, 0xa1, 0xb7, 0x75, 0x33, 0xb6, 0xa9, 0xac, 0x84, 0x24, 0xb3, 0xde, 0xdb, 0x7d, 0x85, 0x2d, 0x96, 0x65, 0xe5, 0x3f, 0x72, 0x95, 0x24, 0x9f, 0x28, 0x68, 0xca, 0x4f, 0xdb, 0x44, 0x1c, 0x3e, 0x60, 0x12, 0x8a, 0xdd, 0x26, 0xa5, 0xeb, 0xff, 0x0b, 0x5e, 0xd4, 0x88, 0x38, 0x49, 0x2a, 0x6e, 0x5b, 0xbf, 0x12, 0x37, 0x47, 0xbd, 0x05, 0x6b, 0xbc, 0xdb, 0xf3, 0xee, 0xe4, 0x11, 0x8e, 0x41, 0x68, 0x7c, 0x61, 0x13, 0xd7, 0x42, 0xc8, 0x80, 0xbe, 0x36, 0x8f, 0xdc, 0x08, 0x8b, 0x4f, 0xac, 0xa4, 0xe2, 0x76, 0x0c, 0xc9, 0x63, 0x6c, 0x49, 0x58, 0x93, 0xed, 0xcc, 0xaa, 0xdc, 0x25, 0x3b, 0x0a, 0x60, 0x3f, 0x8b, 0x54, 0x3a, 0xc3, 0x4d, 0x31, 0xe7, 0x94, 0xa4, 0x44, 0xfd, 0x02, 0x03, 0x01, 0x00, 0x01, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x0a, 0x70, 0x5a, 0xab, 0xa9, 0x9a, 0x62, 0xc6, 0x1d, 0xe2, 0x8e, 0x2c, 0x52, 0xdc, 0xb6, 0x14, 0x29, 0x01, 0x75, 0xd8, 0x7a, 0x9e, 0x93, 0xdd, 0x2d, 0xde, 0xf1, 0x7e, 0xdf, 0x20, 0x6e, 0x93, 0x1a, 0x17, 0xef, 0x9f, 0x90, 0xc7, 0x9f, 0xef, 0xd5, 0xfc, 0x2e, 0x35, 0xf3, 0x8a, 0x0e, 0x0b, 0x02, 0x26, 0x23, 0xe5, 0x58, 0x46, 0x89, 0x1d, 0x5d, 0xd4, 0x35, 0x00, 0xc1, 0x9f, 0x55, 0x4a, 0x26, 0x1c, 0x9c, 0x6c, 0x14, 0xf8, 0x9a, 0x6e, 0xfe, 0x40, 0xc3, 0x78, 0x62, 0x2a, 0xc2, 0x06, 0xde, 0x38, 0xa0, 0x28, 0x7c, 0x26, 0x31, 0x27, 0x20, 0x92, 0x5d, 0xf2, 0x9f, 0xef, 0x21, 0x2e, 0x4c, 0x7a, 0xb6, 0x13, 0x5b, 0xa9, 0x0a, 0x1a, 0xe9, 0x8c, 0xa8, 0xdb, 0x44, 0x6a, 0x68, 0x41, 0x41, 0xc2, 0x56, 0x79, 0x1b, 0xc9, 0x45, 0xad, 0x9b, 0x1d, 0x78, 0xef, 0x38, 0x49, 0xe0, 0x87 }; /* try reading the public RSA key from a X509 certificate */ DO(rsa_import_x509(x509_public_rsa, sizeof(x509_public_rsa), &key)); len = sizeof(buf); DO(rsa_export(buf, &len, PK_PUBLIC, &key)); if (len != sizeof(openssl_public_rsa_stripped) || memcmp(buf, openssl_public_rsa_stripped, len)) { fprintf(stderr, "RSA public export failed to match rsa_import_x509\n"); return 1; } rsa_free(&key); ```
sjaeckel commented 2017-03-09 17:59:25 -06:00 (Migrated from github.com)

I guess it should be enough to replace the rsa_import call in the added test by rsa_import_x509 no?

I guess it should be enough to replace the `rsa_import` call in the added test by `rsa_import_x509` no?
karel-m commented 2017-03-09 18:06:38 -06:00 (Migrated from github.com)

Well, of course my post assumes that X.509 import will be implemented in a separate rsa_import_x509 which is just my wish. Currently this PR is implementing X.509 import inside rsa_import. Simply you have to call whatever function will be capable of handling X.509.

The data in x509_public_rsa is DER encoded X.509 certificate that contains RSA public key corresponding to already used openssl_private_rsa from rsa_test.c.

Well, of course my post assumes that X.509 import will be implemented in a separate `rsa_import_x509` which is just my wish. Currently this PR is implementing X.509 import inside `rsa_import`. Simply you have to call whatever function will be capable of handling X.509. The data in `x509_public_rsa` is DER encoded X.509 certificate that contains RSA public key corresponding to already used `openssl_private_rsa` from `rsa_test.c`.
sjaeckel commented 2017-03-28 17:10:16 -05:00 (Migrated from github.com)

Uhm, your testcase doesn't work... :(

that's the decoding of your cert which isn't a valid x509 cert, right?

SEQUENCE 
    SEQUENCE 
        INTEGER <missing decoding>
        SEQUENCE 
            OBJECT IDENTIFIER 1.2.840.113549.1.1.11
            NULL 
        SEQUENCE 
            SET 
                SEQUENCE 
                    OBJECT IDENTIFIER 2.5.4.6
                    PRINTABLE STRING CZ
            SET 
                SEQUENCE 
                    OBJECT IDENTIFIER 2.5.4.8
                    UTF8 STRING <missing decoding>
            SET 
                SEQUENCE 
                    OBJECT IDENTIFIER 2.5.4.7
                    UTF8 STRING <missing decoding>
            SET 
                SEQUENCE 
                    OBJECT IDENTIFIER 2.5.4.10
                    UTF8 STRING <missing decoding>
            SET 
                SEQUENCE 
                    OBJECT IDENTIFIER 2.5.4.11
                    UTF8 STRING <missing decoding>
            SET 
                SEQUENCE 
                    OBJECT IDENTIFIER 2.5.4.3
                    UTF8 STRING <missing decoding>
            SET 
                SEQUENCE 
                    OBJECT IDENTIFIER 1.2.840.113549.1.9.1
                    IA5 STRING test@cert
        SEQUENCE 
            UTCTIME 17-03-09 23:43:39 +00:00
Uhm, your testcase doesn't work... :( that's the decoding of your cert which isn't a valid x509 cert, right? ``` SEQUENCE SEQUENCE INTEGER <missing decoding> SEQUENCE OBJECT IDENTIFIER 1.2.840.113549.1.1.11 NULL SEQUENCE SET SEQUENCE OBJECT IDENTIFIER 2.5.4.6 PRINTABLE STRING CZ SET SEQUENCE OBJECT IDENTIFIER 2.5.4.8 UTF8 STRING <missing decoding> SET SEQUENCE OBJECT IDENTIFIER 2.5.4.7 UTF8 STRING <missing decoding> SET SEQUENCE OBJECT IDENTIFIER 2.5.4.10 UTF8 STRING <missing decoding> SET SEQUENCE OBJECT IDENTIFIER 2.5.4.11 UTF8 STRING <missing decoding> SET SEQUENCE OBJECT IDENTIFIER 2.5.4.3 UTF8 STRING <missing decoding> SET SEQUENCE OBJECT IDENTIFIER 1.2.840.113549.1.9.1 IA5 STRING test@cert SEQUENCE UTCTIME 17-03-09 23:43:39 +00:00 ```
karel-m commented 2017-03-28 17:22:08 -05:00 (Migrated from github.com)

It was generated by openssl, so it should be valid.

It was generated by openssl, so it should be valid.
karel-m commented 2017-03-28 17:23:44 -05:00 (Migrated from github.com)
$ openssl x509 -in rsa_public_x509.der -inform DER -text
Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number:
            98:8c:2c:33:d2:5f:49:a6
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=CZ, ST=Morava, L=Brno, O=LTC Ltd, OU=Crypto, CN=Test Cert/emailAddress=test@cert
        Validity
            Not Before: Mar  9 23:43:39 2017 GMT
            Not After : Dec 22 23:43:39 2290 GMT
        Subject: C=CZ, ST=Morava, L=Brno, O=LTC Ltd, OU=Crypto, CN=Test Cert/emailAddress=test@cert
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (1024 bit)
                Modulus:
                    00:cf:9a:de:64:8a:da:c8:33:20:a9:d7:83:31:19:
                    54:b2:9a:85:a7:a1:b7:75:33:b6:a9:ac:84:24:b3:
                    de:db:7d:85:2d:96:65:e5:3f:72:95:24:9f:28:68:
                    ca:4f:db:44:1c:3e:60:12:8a:dd:26:a5:eb:ff:0b:
                    5e:d4:88:38:49:2a:6e:5b:bf:12:37:47:bd:05:6b:
                    bc:db:f3:ee:e4:11:8e:41:68:7c:61:13:d7:42:c8:
                    80:be:36:8f:dc:08:8b:4f:ac:a4:e2:76:0c:c9:63:
                    6c:49:58:93:ed:cc:aa:dc:25:3b:0a:60:3f:8b:54:
                    3a:c3:4d:31:e7:94:a4:44:fd
                Exponent: 65537 (0x10001)
    Signature Algorithm: sha256WithRSAEncryption
         0a:70:5a:ab:a9:9a:62:c6:1d:e2:8e:2c:52:dc:b6:14:29:01:
         75:d8:7a:9e:93:dd:2d:de:f1:7e:df:20:6e:93:1a:17:ef:9f:
         90:c7:9f:ef:d5:fc:2e:35:f3:8a:0e:0b:02:26:23:e5:58:46:
         89:1d:5d:d4:35:00:c1:9f:55:4a:26:1c:9c:6c:14:f8:9a:6e:
         fe:40:c3:78:62:2a:c2:06:de:38:a0:28:7c:26:31:27:20:92:
         5d:f2:9f:ef:21:2e:4c:7a:b6:13:5b:a9:0a:1a:e9:8c:a8:db:
         44:6a:68:41:41:c2:56:79:1b:c9:45:ad:9b:1d:78:ef:38:49:
         e0:87
-----BEGIN CERTIFICATE-----
MIICdTCCAd4CCQCYjCwz0l9JpjANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJD
WjEPMA0GA1UECAwGTW9yYXZhMQ0wCwYDVQQHDARCcm5vMRAwDgYDVQQKDAdMVEMg
THRkMQ8wDQYDVQQLDAZDcnlwdG8xEjAQBgNVBAMMCVRlc3QgQ2VydDEYMBYGCSqG
SIb3DQEJARYJdGVzdEBjZXJ0MCAXDTE3MDMwOTIzNDMzOVoYDzIyOTAxMjIyMjM0
MzM5WjB+MQswCQYDVQQGEwJDWjEPMA0GA1UECAwGTW9yYXZhMQ0wCwYDVQQHDARC
cm5vMRAwDgYDVQQKDAdMVEMgTHRkMQ8wDQYDVQQLDAZDcnlwdG8xEjAQBgNVBAMM
CVRlc3QgQ2VydDEYMBYGCSqGSIb3DQEJARYJdGVzdEBjZXJ0MIGfMA0GCSqGSIb3
DQEBAQUAA4GNADCBiQKBgQDPmt5kitrIMyCp14MxGVSymoWnobd1M7aprIQks97b
fYUtlmXlP3KVJJ8oaMpP20QcPmASit0mpev/C17UiDhJKm5bvxI3R70Fa7zb8+7k
EY5BaHxhE9dCyIC+No/cCItPrKTidgzJY2xJWJPtzKrcJTsKYD+LVDrDTTHnlKRE
/QIDAQABMA0GCSqGSIb3DQEBCwUAA4GBAApwWqupmmLGHeKOLFLcthQpAXXYep6T
3S3e8X7fIG6TGhfvn5DHn+/V/C4184oOCwImI+VYRokdXdQ1AMGfVUomHJxsFPia
bv5Aw3hiKsIG3jigKHwmMScgkl3yn+8hLkx6thNbqQoa6Yyo20RqaEFBwlZ5G8lF
rZsdeO84SeCH
-----END CERTIFICATE-----
``` $ openssl x509 -in rsa_public_x509.der -inform DER -text Certificate: Data: Version: 1 (0x0) Serial Number: 98:8c:2c:33:d2:5f:49:a6 Signature Algorithm: sha256WithRSAEncryption Issuer: C=CZ, ST=Morava, L=Brno, O=LTC Ltd, OU=Crypto, CN=Test Cert/emailAddress=test@cert Validity Not Before: Mar 9 23:43:39 2017 GMT Not After : Dec 22 23:43:39 2290 GMT Subject: C=CZ, ST=Morava, L=Brno, O=LTC Ltd, OU=Crypto, CN=Test Cert/emailAddress=test@cert Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (1024 bit) Modulus: 00:cf:9a:de:64:8a:da:c8:33:20:a9:d7:83:31:19: 54:b2:9a:85:a7:a1:b7:75:33:b6:a9:ac:84:24:b3: de:db:7d:85:2d:96:65:e5:3f:72:95:24:9f:28:68: ca:4f:db:44:1c:3e:60:12:8a:dd:26:a5:eb:ff:0b: 5e:d4:88:38:49:2a:6e:5b:bf:12:37:47:bd:05:6b: bc:db:f3:ee:e4:11:8e:41:68:7c:61:13:d7:42:c8: 80:be:36:8f:dc:08:8b:4f:ac:a4:e2:76:0c:c9:63: 6c:49:58:93:ed:cc:aa:dc:25:3b:0a:60:3f:8b:54: 3a:c3:4d:31:e7:94:a4:44:fd Exponent: 65537 (0x10001) Signature Algorithm: sha256WithRSAEncryption 0a:70:5a:ab:a9:9a:62:c6:1d:e2:8e:2c:52:dc:b6:14:29:01: 75:d8:7a:9e:93:dd:2d:de:f1:7e:df:20:6e:93:1a:17:ef:9f: 90:c7:9f:ef:d5:fc:2e:35:f3:8a:0e:0b:02:26:23:e5:58:46: 89:1d:5d:d4:35:00:c1:9f:55:4a:26:1c:9c:6c:14:f8:9a:6e: fe:40:c3:78:62:2a:c2:06:de:38:a0:28:7c:26:31:27:20:92: 5d:f2:9f:ef:21:2e:4c:7a:b6:13:5b:a9:0a:1a:e9:8c:a8:db: 44:6a:68:41:41:c2:56:79:1b:c9:45:ad:9b:1d:78:ef:38:49: e0:87 -----BEGIN CERTIFICATE----- MIICdTCCAd4CCQCYjCwz0l9JpjANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJD WjEPMA0GA1UECAwGTW9yYXZhMQ0wCwYDVQQHDARCcm5vMRAwDgYDVQQKDAdMVEMg THRkMQ8wDQYDVQQLDAZDcnlwdG8xEjAQBgNVBAMMCVRlc3QgQ2VydDEYMBYGCSqG SIb3DQEJARYJdGVzdEBjZXJ0MCAXDTE3MDMwOTIzNDMzOVoYDzIyOTAxMjIyMjM0 MzM5WjB+MQswCQYDVQQGEwJDWjEPMA0GA1UECAwGTW9yYXZhMQ0wCwYDVQQHDARC cm5vMRAwDgYDVQQKDAdMVEMgTHRkMQ8wDQYDVQQLDAZDcnlwdG8xEjAQBgNVBAMM CVRlc3QgQ2VydDEYMBYGCSqGSIb3DQEJARYJdGVzdEBjZXJ0MIGfMA0GCSqGSIb3 DQEBAQUAA4GNADCBiQKBgQDPmt5kitrIMyCp14MxGVSymoWnobd1M7aprIQks97b fYUtlmXlP3KVJJ8oaMpP20QcPmASit0mpev/C17UiDhJKm5bvxI3R70Fa7zb8+7k EY5BaHxhE9dCyIC+No/cCItPrKTidgzJY2xJWJPtzKrcJTsKYD+LVDrDTTHnlKRE /QIDAQABMA0GCSqGSIb3DQEBCwUAA4GBAApwWqupmmLGHeKOLFLcthQpAXXYep6T 3S3e8X7fIG6TGhfvn5DHn+/V/C4184oOCwImI+VYRokdXdQ1AMGfVUomHJxsFPia bv5Aw3hiKsIG3jigKHwmMScgkl3yn+8hLkx6thNbqQoa6Yyo20RqaEFBwlZ5G8lF rZsdeO84SeCH -----END CERTIFICATE----- ```
karel-m commented 2017-03-28 17:33:53 -05:00 (Migrated from github.com)

And ASN.1 structure

$ openssl asn1parse -in rsa_public_x509.der -inform DER -dump
    0:d=0  hl=4 l= 629 cons: SEQUENCE
    4:d=1  hl=4 l= 478 cons: SEQUENCE
    8:d=2  hl=2 l=   9 prim: INTEGER           :988C2C33D25F49A6
   19:d=2  hl=2 l=  13 cons: SEQUENCE
   21:d=3  hl=2 l=   9 prim: OBJECT            :sha256WithRSAEncryption
   32:d=3  hl=2 l=   0 prim: NULL
   34:d=2  hl=2 l= 126 cons: SEQUENCE
   36:d=3  hl=2 l=  11 cons: SET
   38:d=4  hl=2 l=   9 cons: SEQUENCE
   40:d=5  hl=2 l=   3 prim: OBJECT            :countryName
   45:d=5  hl=2 l=   2 prim: PRINTABLESTRING   :CZ
   49:d=3  hl=2 l=  15 cons: SET
   51:d=4  hl=2 l=  13 cons: SEQUENCE
   53:d=5  hl=2 l=   3 prim: OBJECT            :stateOrProvinceName
   58:d=5  hl=2 l=   6 prim: UTF8STRING        :Morava
   66:d=3  hl=2 l=  13 cons: SET
   68:d=4  hl=2 l=  11 cons: SEQUENCE
   70:d=5  hl=2 l=   3 prim: OBJECT            :localityName
   75:d=5  hl=2 l=   4 prim: UTF8STRING        :Brno
   81:d=3  hl=2 l=  16 cons: SET
   83:d=4  hl=2 l=  14 cons: SEQUENCE
   85:d=5  hl=2 l=   3 prim: OBJECT            :organizationName
   90:d=5  hl=2 l=   7 prim: UTF8STRING        :LTC Ltd
   99:d=3  hl=2 l=  15 cons: SET
  101:d=4  hl=2 l=  13 cons: SEQUENCE
  103:d=5  hl=2 l=   3 prim: OBJECT            :organizationalUnitName
  108:d=5  hl=2 l=   6 prim: UTF8STRING        :Crypto
  116:d=3  hl=2 l=  18 cons: SET
  118:d=4  hl=2 l=  16 cons: SEQUENCE
  120:d=5  hl=2 l=   3 prim: OBJECT            :commonName
  125:d=5  hl=2 l=   9 prim: UTF8STRING        :Test Cert
  136:d=3  hl=2 l=  24 cons: SET
  138:d=4  hl=2 l=  22 cons: SEQUENCE
  140:d=5  hl=2 l=   9 prim: OBJECT            :emailAddress
  151:d=5  hl=2 l=   9 prim: IA5STRING         :test@cert
  162:d=2  hl=2 l=  32 cons: SEQUENCE
  164:d=3  hl=2 l=  13 prim: UTCTIME           :170309234339Z
  179:d=3  hl=2 l=  15 prim: GENERALIZEDTIME   :22901222234339Z
  196:d=2  hl=2 l= 126 cons: SEQUENCE
  198:d=3  hl=2 l=  11 cons: SET
  200:d=4  hl=2 l=   9 cons: SEQUENCE
  202:d=5  hl=2 l=   3 prim: OBJECT            :countryName
  207:d=5  hl=2 l=   2 prim: PRINTABLESTRING   :CZ
  211:d=3  hl=2 l=  15 cons: SET
  213:d=4  hl=2 l=  13 cons: SEQUENCE
  215:d=5  hl=2 l=   3 prim: OBJECT            :stateOrProvinceName
  220:d=5  hl=2 l=   6 prim: UTF8STRING        :Morava
  228:d=3  hl=2 l=  13 cons: SET
  230:d=4  hl=2 l=  11 cons: SEQUENCE
  232:d=5  hl=2 l=   3 prim: OBJECT            :localityName
  237:d=5  hl=2 l=   4 prim: UTF8STRING        :Brno
  243:d=3  hl=2 l=  16 cons: SET
  245:d=4  hl=2 l=  14 cons: SEQUENCE
  247:d=5  hl=2 l=   3 prim: OBJECT            :organizationName
  252:d=5  hl=2 l=   7 prim: UTF8STRING        :LTC Ltd
  261:d=3  hl=2 l=  15 cons: SET
  263:d=4  hl=2 l=  13 cons: SEQUENCE
  265:d=5  hl=2 l=   3 prim: OBJECT            :organizationalUnitName
  270:d=5  hl=2 l=   6 prim: UTF8STRING        :Crypto
  278:d=3  hl=2 l=  18 cons: SET
  280:d=4  hl=2 l=  16 cons: SEQUENCE
  282:d=5  hl=2 l=   3 prim: OBJECT            :commonName
  287:d=5  hl=2 l=   9 prim: UTF8STRING        :Test Cert
  298:d=3  hl=2 l=  24 cons: SET
  300:d=4  hl=2 l=  22 cons: SEQUENCE
  302:d=5  hl=2 l=   9 prim: OBJECT            :emailAddress
  313:d=5  hl=2 l=   9 prim: IA5STRING         :test@cert
  324:d=2  hl=3 l= 159 cons: SEQUENCE
  327:d=3  hl=2 l=  13 cons: SEQUENCE
  329:d=4  hl=2 l=   9 prim: OBJECT            :rsaEncryption
  340:d=4  hl=2 l=   0 prim: NULL
  342:d=3  hl=3 l= 141 prim: BIT STRING
      0000 - 00 30 81 89 02 81 81 00-cf 9a de 64 8a da c8 33   .0.........d...3
      0010 - 20 a9 d7 83 31 19 54 b2-9a 85 a7 a1 b7 75 33 b6    ...1.T......u3.
      0020 - a9 ac 84 24 b3 de db 7d-85 2d 96 65 e5 3f 72 95   ...$...}.-.e.?r.
      0030 - 24 9f 28 68 ca 4f db 44-1c 3e 60 12 8a dd 26 a5   $.(h.O.D.>`...&.
      0040 - eb ff 0b 5e d4 88 38 49-2a 6e 5b bf 12 37 47 bd   ...^..8I*n[..7G.
      0050 - 05 6b bc db f3 ee e4 11-8e 41 68 7c 61 13 d7 42   .k.......Ah|a..B
      0060 - c8 80 be 36 8f dc 08 8b-4f ac a4 e2 76 0c c9 63   ...6....O...v..c
      0070 - 6c 49 58 93 ed cc aa dc-25 3b 0a 60 3f 8b 54 3a   lIX.....%;.`?.T:
      0080 - c3 4d 31 e7 94 a4 44 fd-02 03 01 00 01            .M1...D......
  486:d=1  hl=2 l=  13 cons: SEQUENCE
  488:d=2  hl=2 l=   9 prim: OBJECT            :sha256WithRSAEncryption
  499:d=2  hl=2 l=   0 prim: NULL
  501:d=1  hl=3 l= 129 prim: BIT STRING
      0000 - 00 0a 70 5a ab a9 9a 62-c6 1d e2 8e 2c 52 dc b6   ..pZ...b....,R..
      0010 - 14 29 01 75 d8 7a 9e 93-dd 2d de f1 7e df 20 6e   .).u.z...-..~. n
      0020 - 93 1a 17 ef 9f 90 c7 9f-ef d5 fc 2e 35 f3 8a 0e   ............5...
      0030 - 0b 02 26 23 e5 58 46 89-1d 5d d4 35 00 c1 9f 55   ..&#.XF..].5...U
      0040 - 4a 26 1c 9c 6c 14 f8 9a-6e fe 40 c3 78 62 2a c2   J&..l...n.@.xb*.
      0050 - 06 de 38 a0 28 7c 26 31-27 20 92 5d f2 9f ef 21   ..8.(|&1' .]...!
      0060 - 2e 4c 7a b6 13 5b a9 0a-1a e9 8c a8 db 44 6a 68   .Lz..[.......Djh
      0070 - 41 41 c2 56 79 1b c9 45-ad 9b 1d 78 ef 38 49 e0   AA.Vy..E...x.8I.
      0080 - 87 
And ASN.1 structure ``` $ openssl asn1parse -in rsa_public_x509.der -inform DER -dump 0:d=0 hl=4 l= 629 cons: SEQUENCE 4:d=1 hl=4 l= 478 cons: SEQUENCE 8:d=2 hl=2 l= 9 prim: INTEGER :988C2C33D25F49A6 19:d=2 hl=2 l= 13 cons: SEQUENCE 21:d=3 hl=2 l= 9 prim: OBJECT :sha256WithRSAEncryption 32:d=3 hl=2 l= 0 prim: NULL 34:d=2 hl=2 l= 126 cons: SEQUENCE 36:d=3 hl=2 l= 11 cons: SET 38:d=4 hl=2 l= 9 cons: SEQUENCE 40:d=5 hl=2 l= 3 prim: OBJECT :countryName 45:d=5 hl=2 l= 2 prim: PRINTABLESTRING :CZ 49:d=3 hl=2 l= 15 cons: SET 51:d=4 hl=2 l= 13 cons: SEQUENCE 53:d=5 hl=2 l= 3 prim: OBJECT :stateOrProvinceName 58:d=5 hl=2 l= 6 prim: UTF8STRING :Morava 66:d=3 hl=2 l= 13 cons: SET 68:d=4 hl=2 l= 11 cons: SEQUENCE 70:d=5 hl=2 l= 3 prim: OBJECT :localityName 75:d=5 hl=2 l= 4 prim: UTF8STRING :Brno 81:d=3 hl=2 l= 16 cons: SET 83:d=4 hl=2 l= 14 cons: SEQUENCE 85:d=5 hl=2 l= 3 prim: OBJECT :organizationName 90:d=5 hl=2 l= 7 prim: UTF8STRING :LTC Ltd 99:d=3 hl=2 l= 15 cons: SET 101:d=4 hl=2 l= 13 cons: SEQUENCE 103:d=5 hl=2 l= 3 prim: OBJECT :organizationalUnitName 108:d=5 hl=2 l= 6 prim: UTF8STRING :Crypto 116:d=3 hl=2 l= 18 cons: SET 118:d=4 hl=2 l= 16 cons: SEQUENCE 120:d=5 hl=2 l= 3 prim: OBJECT :commonName 125:d=5 hl=2 l= 9 prim: UTF8STRING :Test Cert 136:d=3 hl=2 l= 24 cons: SET 138:d=4 hl=2 l= 22 cons: SEQUENCE 140:d=5 hl=2 l= 9 prim: OBJECT :emailAddress 151:d=5 hl=2 l= 9 prim: IA5STRING :test@cert 162:d=2 hl=2 l= 32 cons: SEQUENCE 164:d=3 hl=2 l= 13 prim: UTCTIME :170309234339Z 179:d=3 hl=2 l= 15 prim: GENERALIZEDTIME :22901222234339Z 196:d=2 hl=2 l= 126 cons: SEQUENCE 198:d=3 hl=2 l= 11 cons: SET 200:d=4 hl=2 l= 9 cons: SEQUENCE 202:d=5 hl=2 l= 3 prim: OBJECT :countryName 207:d=5 hl=2 l= 2 prim: PRINTABLESTRING :CZ 211:d=3 hl=2 l= 15 cons: SET 213:d=4 hl=2 l= 13 cons: SEQUENCE 215:d=5 hl=2 l= 3 prim: OBJECT :stateOrProvinceName 220:d=5 hl=2 l= 6 prim: UTF8STRING :Morava 228:d=3 hl=2 l= 13 cons: SET 230:d=4 hl=2 l= 11 cons: SEQUENCE 232:d=5 hl=2 l= 3 prim: OBJECT :localityName 237:d=5 hl=2 l= 4 prim: UTF8STRING :Brno 243:d=3 hl=2 l= 16 cons: SET 245:d=4 hl=2 l= 14 cons: SEQUENCE 247:d=5 hl=2 l= 3 prim: OBJECT :organizationName 252:d=5 hl=2 l= 7 prim: UTF8STRING :LTC Ltd 261:d=3 hl=2 l= 15 cons: SET 263:d=4 hl=2 l= 13 cons: SEQUENCE 265:d=5 hl=2 l= 3 prim: OBJECT :organizationalUnitName 270:d=5 hl=2 l= 6 prim: UTF8STRING :Crypto 278:d=3 hl=2 l= 18 cons: SET 280:d=4 hl=2 l= 16 cons: SEQUENCE 282:d=5 hl=2 l= 3 prim: OBJECT :commonName 287:d=5 hl=2 l= 9 prim: UTF8STRING :Test Cert 298:d=3 hl=2 l= 24 cons: SET 300:d=4 hl=2 l= 22 cons: SEQUENCE 302:d=5 hl=2 l= 9 prim: OBJECT :emailAddress 313:d=5 hl=2 l= 9 prim: IA5STRING :test@cert 324:d=2 hl=3 l= 159 cons: SEQUENCE 327:d=3 hl=2 l= 13 cons: SEQUENCE 329:d=4 hl=2 l= 9 prim: OBJECT :rsaEncryption 340:d=4 hl=2 l= 0 prim: NULL 342:d=3 hl=3 l= 141 prim: BIT STRING 0000 - 00 30 81 89 02 81 81 00-cf 9a de 64 8a da c8 33 .0.........d...3 0010 - 20 a9 d7 83 31 19 54 b2-9a 85 a7 a1 b7 75 33 b6 ...1.T......u3. 0020 - a9 ac 84 24 b3 de db 7d-85 2d 96 65 e5 3f 72 95 ...$...}.-.e.?r. 0030 - 24 9f 28 68 ca 4f db 44-1c 3e 60 12 8a dd 26 a5 $.(h.O.D.>`...&. 0040 - eb ff 0b 5e d4 88 38 49-2a 6e 5b bf 12 37 47 bd ...^..8I*n[..7G. 0050 - 05 6b bc db f3 ee e4 11-8e 41 68 7c 61 13 d7 42 .k.......Ah|a..B 0060 - c8 80 be 36 8f dc 08 8b-4f ac a4 e2 76 0c c9 63 ...6....O...v..c 0070 - 6c 49 58 93 ed cc aa dc-25 3b 0a 60 3f 8b 54 3a lIX.....%;.`?.T: 0080 - c3 4d 31 e7 94 a4 44 fd-02 03 01 00 01 .M1...D...... 486:d=1 hl=2 l= 13 cons: SEQUENCE 488:d=2 hl=2 l= 9 prim: OBJECT :sha256WithRSAEncryption 499:d=2 hl=2 l= 0 prim: NULL 501:d=1 hl=3 l= 129 prim: BIT STRING 0000 - 00 0a 70 5a ab a9 9a 62-c6 1d e2 8e 2c 52 dc b6 ..pZ...b....,R.. 0010 - 14 29 01 75 d8 7a 9e 93-dd 2d de f1 7e df 20 6e .).u.z...-..~. n 0020 - 93 1a 17 ef 9f 90 c7 9f-ef d5 fc 2e 35 f3 8a 0e ............5... 0030 - 0b 02 26 23 e5 58 46 89-1d 5d d4 35 00 c1 9f 55 ..&#.XF..].5...U 0040 - 4a 26 1c 9c 6c 14 f8 9a-6e fe 40 c3 78 62 2a c2 J&..l...n.@.xb*. 0050 - 06 de 38 a0 28 7c 26 31-27 20 92 5d f2 9f ef 21 ..8.(|&1' .]...! 0060 - 2e 4c 7a b6 13 5b a9 0a-1a e9 8c a8 db 44 6a 68 .Lz..[.......Djh 0070 - 41 41 c2 56 79 1b c9 45-ad 9b 1d 78 ef 38 49 e0 AA.Vy..E...x.8I. 0080 - 87 ```
sjaeckel commented 2017-03-30 12:04:43 -05:00 (Migrated from github.com)

Okay, is this one ready to merge? I'll open another PR with the changes for your testcase

Okay, is this one ready to merge? I'll open another PR with the changes for your testcase
coveralls commented 2017-03-30 12:34:52 -05:00 (Migrated from github.com)

Coverage Status

Coverage increased (+0.08%) to 87.556% when pulling ac7915ed13 on feature/rsa_import_x509 into 0a400f465f on develop.

[![Coverage Status](https://coveralls.io/builds/10852930/badge)](https://coveralls.io/builds/10852930) Coverage increased (+0.08%) to 87.556% when pulling **ac7915ed131211947b32d3f90b819ab2fcc3c860 on feature/rsa_import_x509** into **0a400f465f819c0e03e7188c869e0303c66ee39a on develop**.
karel-m (Migrated from github.com) approved these changes 2017-03-30 15:15:11 -05:00
karel-m (Migrated from github.com) left a comment

👍 from me

But keep in mind that I have my "failing" demo certificate which I would like to be loadable 😃

👍 from me But keep in mind that I have my "failing" demo certificate which I would like to be loadable 😃
Sign in to join this conversation.
No reviewers
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
gh-libtom/libtomcrypt!79
No description provided.