瀏覽代碼

Per default support PEM line lengths up to 80 chars

Signed-off-by: Steffen Jaeckel <[email protected]>
Steffen Jaeckel 2 年之前
父節點
當前提交
928c476734

+ 1 - 1
src/headers/tomcrypt_custom.h

@@ -580,7 +580,7 @@
 #if defined(LTC_PEM)
    /* Size of the line-buffer */
    #ifndef LTC_PEM_DECODE_BUFSZ
-      #define LTC_PEM_DECODE_BUFSZ 72
+      #define LTC_PEM_DECODE_BUFSZ 80
    #elif LTC_PEM_DECODE_BUFSZ < 72
       #error "LTC_PEM_DECODE_BUFSZ shall not be < 72 bytes"
    #endif

+ 0 - 0
tests/pem-ecc-pkcs8/long_pri_pkcs8_pbe_md5_des.pem → tests/pem/ecc-pkcs8/long_pri_pkcs8_pbe_md5_des.pem


+ 0 - 0
tests/pem-ecc-pkcs8/long_pri_pkcs8_pbe_md5_rc2_64.pem → tests/pem/ecc-pkcs8/long_pri_pkcs8_pbe_md5_rc2_64.pem


+ 0 - 0
tests/pem-ecc-pkcs8/long_pri_pkcs8_pbe_sha1_des.pem → tests/pem/ecc-pkcs8/long_pri_pkcs8_pbe_sha1_des.pem


+ 0 - 0
tests/pem-ecc-pkcs8/long_pri_pkcs8_pbe_sha1_rc2_64.pem → tests/pem/ecc-pkcs8/long_pri_pkcs8_pbe_sha1_rc2_64.pem


+ 0 - 0
tests/pem-ecc-pkcs8/long_pri_pkcs8_pbkdf2_des_cbc.pem → tests/pem/ecc-pkcs8/long_pri_pkcs8_pbkdf2_des_cbc.pem


+ 0 - 0
tests/pem-ecc-pkcs8/long_pri_pkcs8_pbkdf2_des_ede3_cbc.pem → tests/pem/ecc-pkcs8/long_pri_pkcs8_pbkdf2_des_ede3_cbc.pem


+ 0 - 0
tests/pem-ecc-pkcs8/long_pri_pkcs8_pbkdf2_rc2_cbc.pem → tests/pem/ecc-pkcs8/long_pri_pkcs8_pbkdf2_rc2_cbc.pem


+ 0 - 0
tests/pem-ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha224_des_ede3_cbc.pem → tests/pem/ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha224_des_ede3_cbc.pem


+ 0 - 0
tests/pem-ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha256_des_ede3_cbc.pem → tests/pem/ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha256_des_ede3_cbc.pem


+ 0 - 0
tests/pem-ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha384_des_ede3_cbc.pem → tests/pem/ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha384_des_ede3_cbc.pem


+ 0 - 0
tests/pem-ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha512_des_ede3_cbc.pem → tests/pem/ecc-pkcs8/long_pri_pkcs8_pbkdf2_sha512_des_ede3_cbc.pem


+ 23 - 0
tests/pem/extra/rsa.pem

@@ -0,0 +1,23 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEogIBAAKCAQEA0KXMyuA9+cL1xMjAzoQNYs3ieZkNxnJxXvgDYx+vb+K30DiBdQyM5i7nCUcQ
+oMPswnNTCx4NBJX4km0pp53NsqGIcT+OM0URPWMaCfVeAvYFPYe5BBxtVKQit0qOD95Mb13oxr3m
+LKC1VKHsvbNSexlkjebq61lhirBlDGla6d1t9XElkLnZ+Z/H+BCPgGpKEriSQAcp27Ke6EbHlVNo
+l25lnV6Z3pZkmeAv9SSWEnw/MHrG64AM7e0izOaNtPheLp1PGqp5vD2HgMD7L6VZn+PsZ4RPskd1
+bVaxfsbdvgUD6C2hhrxle9QUtzhfi0MO1sq5+B4wJ6yT1jd3n9uujwIDAQABAoIBAAntXD0/hm4G
+lXyg6UeKJzw5u9pO6sWz4UAEVd5BU4QOdJzJa3i/DvR5a9BYW2qtbRY4DXiccUB0GukV8jhBklgQ
+RnZ48Hzw/tJ9uhnvh4262IymaKpQ6Job2x5UbkZEAef/PwQ3DydgGBs9lGQsOYhA24oYNWTa56ta
+cYcHJju1PCMF23rNVx49hSbG/H3TNRAAqOjmYsnvoG+w62Si1np7IBdlIbSdnTYC27kqRIBTIhMW
+xkdWSChsgIbrNA5iYtOOeJ4yq17oAikEpUiDwMYqd522WXVRHvleHJQ9CnneOiTuRvnWHTrjeeS+
+lW1lPWQMTzdaTVLV0i+5+F5MIP0CgYEA0+8AKP+rUI4nc8ZZ5CioD7DpIRNGtD8/86QAv4w49nmX
+P+g9TBmItLD7mQzjOGxrbe8Stt4hALUIb2Oe5beJQDlKJpe1Y6sSk9+Tx6IdgY75NWjvhQCnJu28
+QQXbO8Q/Eapqz/VH18cXLYfZnScI2toJXC8GwghQM8NYTwdimmUCgYEA/AfkaxY8q2qDuORn0WlT
+SyB33N7sro/PwMOtLrosSwLSNyNpmQxiqSPSLhBxnO0ZHiMcSDL7SJbs3C4fOWiNImx7RuNfk8vY
+Ox9WowtmYOC+5D5xnJ9TPvuKBhjsLRZMwK5k8gr7iIwU6v+Mjoif8SJ6MRUrPiNDK0ChHGVBu+MC
+gYBIbxQv7wofUyaaxD0u5NJj4oQbYNo2erOh0vjKfuNtIiuWlQp2OvflQeQL8EKsoymofiB4Tb0b
+38PNRlAllTAcujfkrs85DFwiHDUG8xqAkFwObBoI7Cs0++Xul1DRwYYIxKUTBHMUhaAfWKIAuzmk
+iwbN8eiuYmb++hHxmMWTnQKBgEWXKEspaLcsQhLbfo8kNguYe4BRTaklrIfdgARXA8Pyk3kGHjJU
+aSmq6m4tvDFIhpb7uuN0sE3q3pwtYBHJ/K50pdV9EvcMYjhw/ssmaq51YEBFvbkxhRru+b2VRCFu
+9uJ9RQJQZgPeKih5R6ZTs1Yx3uuOnNIbioB26AWfL/dhAoGACIxtQG+DPfc8i3NFSOA4UmGtUfQY
+fP4V9/26RAZ0o5PM9arVxp6gIZzU5++83DFCmlPjvN7cbSQmQgkjn7I5KJkiUEB0i95hDRISgaNl
+QsvXdLhE3x77KR/76AAxv+4VxK6y4rrbi1MQwRCEVjp6BVzvdyT+2lMexhLmzucpP3w=
+-----END RSA PRIVATE KEY-----

+ 11 - 5
tests/pem_test.c

@@ -74,12 +74,17 @@ static int s_key_cmp(ltc_pka_key *key)
    return CRYPT_INVALID_ARG;
 }
 
-static int s_pem_decode(const void *in, unsigned long inlen, void *key)
+static int s_pem_only_decode(const void *in, unsigned long inlen, void *key)
 {
    password_ctx pw_ctx;
-   int err;
    pw_ctx.callback = password_get;
-   if ((err = pem_decode_pkcs(in, inlen, key, &pw_ctx)) != CRYPT_OK) {
+   return pem_decode_pkcs(in, inlen, key, &pw_ctx);
+}
+
+static int s_pem_decode(const void *in, unsigned long inlen, void *key)
+{
+   int err;
+   if ((err = s_pem_only_decode(in, inlen, key)) != CRYPT_OK) {
       return err;
    }
    return s_key_cmp(key);
@@ -115,8 +120,9 @@ int pem_test(void)
 
    DO(test_process_dir("tests/pem", &key, s_pem_decode, NULL, (dir_cleanup_cb)pka_key_free, "pem_test"));
    DO(test_process_dir("tests/pem", &key, NULL, s_pem_decode_f, (dir_cleanup_cb)pka_key_free, "pem_test_filehandle"));
-   DO(test_process_dir("tests/pem-ecc-pkcs8", &key, s_pem_decode, NULL, (dir_cleanup_cb)pka_key_free, "pem_test+ecc"));
-   DO(test_process_dir("tests/pem-ecc-pkcs8", &key, NULL, s_pem_decode_f, (dir_cleanup_cb)pka_key_free, "pem_test_filehandle+ecc"));
+   DO(test_process_dir("tests/pem/ecc-pkcs8", &key, s_pem_decode, NULL, (dir_cleanup_cb)pka_key_free, "pem_test+ecc"));
+   DO(test_process_dir("tests/pem/ecc-pkcs8", &key, NULL, s_pem_decode_f, (dir_cleanup_cb)pka_key_free, "pem_test_filehandle+ecc"));
+   DO(test_process_dir("tests/pem/extra", &key, s_pem_only_decode, NULL, (dir_cleanup_cb)pka_key_free, "pem_test+extra"));
 #ifdef LTC_SSH
    DO(test_process_dir("tests/ssh", &key, s_pem_decode_ssh, NULL, (dir_cleanup_cb)pka_key_free, "pem_test+ssh"));
    DO(test_process_dir("tests/ssh", &key, NULL, s_pem_decode_ssh_f, (dir_cleanup_cb)pka_key_free, "pem_test_filehandle+ssh"));