|
View:
New views
8 Messages
—
Rating Filter:
Alert me
|
|
|
[Q] Tutorial or Explanation how to use OpenSSL library functions?Hello, I am just a beginner at using OpenSSL library.
I write in C/C++ and Objective-C. After looking up the OpenSSL web site, I found out that there was no document for studying how to use it. Is there any good source like sample codes, tutorial and so on? Thank you in advance. JongAm Park ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@... Automated List Manager majordomo@... |
|
|
Re: [Q] Tutorial or Explanation how to use OpenSSL library functions?JongAm Park wrote:
> Hello, I am just a beginner at using OpenSSL library. > I write in C/C++ and Objective-C. After looking up the OpenSSL web > site, I found out that there was no document for studying how to use it. > Is there any good source like sample codes, tutorial and so on? http://oreilly.com/catalog/9780596002701/ It's a little bit outdated (based mainly on OpenSSL 0.9.7 (or older, iirc)), but otherwise still a useful tutorial. Ciao, Richard -- Dr. Richard W. Könning Fujitsu Technology Solutions GmbH ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@... Automated List Manager majordomo@... |
|
|
Re: [Q] Tutorial or Explanation how to use OpenSSL library functions?Thank you very much. I will take a look at it.
Richard Koenning wrote: > JongAm Park wrote: >> Hello, I am just a beginner at using OpenSSL library. >> I write in C/C++ and Objective-C. After looking up the OpenSSL web >> site, I found out that there was no document for studying how to use it. >> Is there any good source like sample codes, tutorial and so on? > > http://oreilly.com/catalog/9780596002701/ > > It's a little bit outdated (based mainly on OpenSSL 0.9.7 (or older, > iirc)), but otherwise still a useful tutorial. > > Ciao, > Richard OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@... Automated List Manager majordomo@... |
|
|
Re: [Q] Tutorial or Explanation how to use OpenSSL library functions?Hello.
Thank you for mentioning the book. However, I could figure out by staring at its MAN page long time and looking up some sample codes in source code distribution of the OpenSSL. However, it would be great if there is a good reference/tutorial book. :) Thank you again, Best regards, JongAm Park Richard Koenning wrote: > JongAm Park wrote: >> Hello, I am just a beginner at using OpenSSL library. >> I write in C/C++ and Objective-C. After looking up the OpenSSL web >> site, I found out that there was no document for studying how to use it. >> Is there any good source like sample codes, tutorial and so on? > > http://oreilly.com/catalog/9780596002701/ > > It's a little bit outdated (based mainly on OpenSSL 0.9.7 (or older, > iirc)), but otherwise still a useful tutorial. > > Ciao, > Richard ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@... Automated List Manager majordomo@... |
|
|
Re: [Q] Tutorial or Explanation how to use OpenSSL library functions?i am in the same boat...i just found some c source code samples at:
http://www.rtfm.com/openssl-examples/ JongAm Park wrote: > Hello. > > Thank you for mentioning the book. > However, I could figure out by staring at its MAN page long time and > looking up some sample codes in source code distribution of the OpenSSL. > > However, it would be great if there is a good reference/tutorial book. :) > > Thank you again, > > Best regards, > JongAm Park > > Richard Koenning wrote: >> JongAm Park wrote: >>> Hello, I am just a beginner at using OpenSSL library. >>> I write in C/C++ and Objective-C. After looking up the OpenSSL web >>> site, I found out that there was no document for studying how to use >>> it. >>> Is there any good source like sample codes, tutorial and so on? >> >> http://oreilly.com/catalog/9780596002701/ >> >> It's a little bit outdated (based mainly on OpenSSL 0.9.7 (or older, >> iirc)), but otherwise still a useful tutorial. >> >> Ciao, >> Richard > > ______________________________________________________________________ > OpenSSL Project http://www.openssl.org > User Support Mailing List openssl-users@... > Automated List Manager majordomo@... > > ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@... Automated List Manager majordomo@... |
|
|
Re: [Q] Tutorial or Explanation how to use OpenSSL library functions?JongAm Park wrote:
> Hello. > > Thank you for mentioning the book. > However, I could figure out by staring at its MAN page long time and > looking up some sample codes in source code distribution of the OpenSSL. may be of use... from the mailing list and the web.... note that with a little modification you can have both function utilize the passed in value $ cat sha256_EVP_example.c /* * Compilation * $ gcc -lssl sha256_EVP_example.c * * $ ./a.out sha256 * * Multiple String Digest is: e31318725541062f35791d14a9c63c30faed0896609527c108b511b65d6e1fdd * Single String Digest is: e31318725541062f35791d14a9c63c30faed0896609527c108b511b65d6e1fdd * */ #include <stdio.h> #include <string.h> #include <openssl/evp.h> static int encode_buffer_append_test( char **argv); static int encode_buffer_test(); main(int argc, char *argv[]) { /* * MODIFICATIONS REQUIRED FOR PRODUCTION USE * CHECK RETURN CODES ETC */ /* buffer append encode example */ (void)encode_buffer_append_test(argv); /* buffer encode example */ (void)encode_buffer_test(); } static int encode_buffer_append_test(char **argv) { EVP_MD_CTX mdctx; const EVP_MD *md; char mess1[] = "Test Message"; char mess2[] = "Hello World"; unsigned char md_value[EVP_MAX_MD_SIZE]; int md_len, i; OpenSSL_add_all_digests(); if(!argv[1]) { printf("Usage: mdtest digestname\n"); exit(1); } md = EVP_get_digestbyname(argv[1]); if(!md) { printf("Unknown message digest %s\n", argv[1]); exit(1); } EVP_MD_CTX_init(&mdctx); EVP_DigestInit_ex(&mdctx, md, NULL); EVP_DigestUpdate(&mdctx, mess1, strlen(mess1)); EVP_DigestUpdate(&mdctx, mess2, strlen(mess2)); EVP_DigestFinal_ex(&mdctx, md_value, &md_len); EVP_MD_CTX_cleanup(&mdctx); printf("Multiple String Digest is: "); for(i = 0; i < md_len; i++) { printf("%02x", md_value[i]); } printf("\n"); return 0; } static int encode_buffer_test() { int hashsz = 0; int i = 0; unsigned char digest[EVP_MAX_MD_SIZE] = {0xf5, 0x53, 0xcd, 0xb8, 0xcf, 0x1, 0xee, 0x17, 0x9b, 0x93, 0xc9, 0x68, 0xc0, 0xea, 0x40, 0x91, 0x6, 0xec, 0x8e, 0x11, 0x96, 0xc8, 0x5d, 0x1c, 0xaf, 0x64, 0x22, 0xe6, 0x50, 0x4f, 0x47, 0x57}; unsigned char str[] = "Test MessageHello World"; unsigned char md[EVP_MAX_MD_SIZE]; /* int EVP_Digest (const void *data, size_t count, unsigned char *md, unsigned int *size, const EVP_MD *type, ENGINE *impl) * Parameters: * data the data to update the context with * dsize length of data * hash output data of at least EVP_MD_size() length. * hsize output length of hash. * md message digest to use * engine engine to use, NULL for default engine. * * Returns: * 1 on success. * */ ERR_clear_error(); if (!EVP_Digest(str, sizeof(str) - 1, md, &hashsz, EVP_sha256(), NULL)) { printf("failed\n"); return 0; } if (memcmp(md, digest, sizeof(md))) { printf("Single String Digest is: "); for(i = 0; i < hashsz; i++) { printf("%02x", md[i]); } printf("\n"); return 0; } else { printf("memcmp failed/digest doesn't match expected\n"); return 1; } } ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@... Automated List Manager majordomo@... |
|
|
Re: [Q] Tutorial or Explanation how to use OpenSSL library functions?JongAm Park wrote:
> Hello. > > Thank you for mentioning the book. > However, I could figure out by staring at its MAN page long time and > looking up some sample codes in source code distribution of the OpenSSL. > > However, it would be great if there is a good reference/tutorial book. :) went ahead and made that minor change $ cat openssl_EVP_example.c /* * Compilation * $ gcc -lssl openssl_EVP_example.c * * $ ./a.out sha256 * * Multiple String Digest is: e31318725541062f35791d14a9c63c30faed0896609527c108b511b65d6e1fdd * Single String Digest is: e31318725541062f35791d14a9c63c30faed0896609527c108b511b65d6e1fdd * */ #include <stdio.h> #include <string.h> #include <openssl/evp.h> static int encode_buffer_append_test( char **argv); static int encode_buffer_test(char **argv); main(int argc, char *argv[]) { /* * MODIFICATIONS REQUIRED FOR PRODUCTION USE * CHECK RETURN CODES ETC */ /* buffer append encode example */ (void)encode_buffer_append_test(argv); /* buffer encode example */ (void)encode_buffer_test(argv); } static int encode_buffer_append_test(char **argv) { EVP_MD_CTX mdctx; const EVP_MD *md; char mess1[] = "Test Message"; char mess2[] = "Hello World"; unsigned char md_value[EVP_MAX_MD_SIZE]; int md_len, i; OpenSSL_add_all_digests(); if(!argv[1]) { printf("Usage: mdtest digestname\n"); exit(1); } md = EVP_get_digestbyname(argv[1]); if(!md) { printf("Unknown message digest %s\n", argv[1]); exit(1); } EVP_MD_CTX_init(&mdctx); EVP_DigestInit_ex(&mdctx, md, NULL); EVP_DigestUpdate(&mdctx, mess1, strlen(mess1)); EVP_DigestUpdate(&mdctx, mess2, strlen(mess2)); EVP_DigestFinal_ex(&mdctx, md_value, &md_len); EVP_MD_CTX_cleanup(&mdctx); printf("Multiple String Digest is: "); for(i = 0; i < md_len; i++) { printf("%02x", md_value[i]); } printf("\n"); return 0; } static int encode_buffer_test(char **argv) { int hashsz = 0; int i = 0; unsigned char digest[EVP_MAX_MD_SIZE] = {0xf5, 0x53, 0xcd, 0xb8, 0xcf, 0x1, 0xee, 0x17, 0x9b, 0x93, 0xc9, 0x68, 0xc0, 0xea, 0x40, 0x91, 0x6, 0xec, 0x8e, 0x11, 0x96, 0xc8, 0x5d, 0x1c, 0xaf, 0x64, 0x22, 0xe6, 0x50, 0x4f, 0x47, 0x57}; unsigned char str[] = "Test MessageHello World"; unsigned char md[EVP_MAX_MD_SIZE]; /* int EVP_Digest (const void *data, size_t count, unsigned char *md, unsigned int *size, const EVP_MD *type, ENGINE *impl) * Parameters: * data the data to update the context with * dsize length of data * hash output data of at least EVP_MD_size() length. * hsize output length of hash. * md message digest to use * engine engine to use, NULL for default engine. * * Returns: * 1 on success. * */ ERR_clear_error(); /* if (!EVP_Digest(str, sizeof(str) - 1, md, &hashsz, EVP_sha256(), NULL)) */ if (!EVP_Digest(str, sizeof(str) - 1, md, &hashsz, EVP_get_digestbyname(argv[1]), NULL)) { printf("failed\n"); return 0; } if (memcmp(md, digest, sizeof(md))) { printf("Single String Digest is: "); for(i = 0; i < hashsz; i++) { printf("%02x", md[i]); } printf("\n"); return 0; } else { printf("memcmp failed/digest doesn't match expected\n"); return 1; } } ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@... Automated List Manager majordomo@... |
|
|
Re: [Q] Tutorial or Explanation how to use OpenSSL library functions?Oh.. I've been away from this for a while. So, I didn't check email from
OpenSSL. By the way, i would like to appreciate your kindness of providing some sample code. :) JongAm Park Reid Thompson wrote: > JongAm Park wrote: >> Hello. >> >> Thank you for mentioning the book. >> However, I could figure out by staring at its MAN page long time and >> looking up some sample codes in source code distribution of the OpenSSL. >> >> However, it would be great if there is a good reference/tutorial >> book. :) > > went ahead and made that minor change > > $ cat openssl_EVP_example.c > /* > * Compilation > * $ gcc -lssl openssl_EVP_example.c > * > * $ ./a.out sha256 > * > * Multiple String Digest is: > e31318725541062f35791d14a9c63c30faed0896609527c108b511b65d6e1fdd > * Single String Digest is: > e31318725541062f35791d14a9c63c30faed0896609527c108b511b65d6e1fdd > * > */ > > #include <stdio.h> > #include <string.h> > #include <openssl/evp.h> > > static int encode_buffer_append_test( char **argv); > static int encode_buffer_test(char **argv); > > main(int argc, char *argv[]) > { > /* > * MODIFICATIONS REQUIRED FOR PRODUCTION USE > * CHECK RETURN CODES ETC > */ > > /* buffer append encode example */ > (void)encode_buffer_append_test(argv); > > /* buffer encode example */ > (void)encode_buffer_test(argv); > } > > > static int encode_buffer_append_test(char **argv) > { > EVP_MD_CTX mdctx; > const EVP_MD *md; > char mess1[] = "Test Message"; > char mess2[] = "Hello World"; > unsigned char md_value[EVP_MAX_MD_SIZE]; > int md_len, i; > > > OpenSSL_add_all_digests(); > if(!argv[1]) > { > printf("Usage: mdtest digestname\n"); > exit(1); > } > > md = EVP_get_digestbyname(argv[1]); > if(!md) > { > printf("Unknown message digest %s\n", argv[1]); > exit(1); > } > > EVP_MD_CTX_init(&mdctx); > EVP_DigestInit_ex(&mdctx, md, NULL); > EVP_DigestUpdate(&mdctx, mess1, strlen(mess1)); > EVP_DigestUpdate(&mdctx, mess2, strlen(mess2)); > EVP_DigestFinal_ex(&mdctx, md_value, &md_len); > EVP_MD_CTX_cleanup(&mdctx); > > printf("Multiple String Digest is: "); > for(i = 0; i < md_len; i++) > { > printf("%02x", md_value[i]); > } > printf("\n"); > > return 0; > } > > static int encode_buffer_test(char **argv) > { > int hashsz = 0; > int i = 0; > unsigned char digest[EVP_MAX_MD_SIZE] = > {0xf5, 0x53, 0xcd, 0xb8, 0xcf, 0x1, 0xee, 0x17, 0x9b, 0x93, 0xc9, > 0x68, 0xc0, 0xea, 0x40, 0x91, > 0x6, 0xec, 0x8e, 0x11, 0x96, 0xc8, 0x5d, 0x1c, 0xaf, 0x64, 0x22, 0xe6, > 0x50, 0x4f, 0x47, 0x57}; > unsigned char str[] = "Test MessageHello World"; > unsigned char md[EVP_MAX_MD_SIZE]; > > > /* int EVP_Digest (const void *data, size_t count, unsigned char *md, > unsigned int *size, const EVP_MD *type, ENGINE *impl) > * Parameters: > * data the data to update the context with > * dsize length of data > * hash output data of at least EVP_MD_size() length. > * hsize output length of hash. > * md message digest to use > * engine engine to use, NULL for default engine. > * > * Returns: > * 1 on success. > * */ > > ERR_clear_error(); > /* if (!EVP_Digest(str, sizeof(str) - 1, md, &hashsz, EVP_sha256(), > NULL)) */ > if (!EVP_Digest(str, sizeof(str) - 1, md, &hashsz, > EVP_get_digestbyname(argv[1]), NULL)) > { > printf("failed\n"); > > return 0; > } > > if (memcmp(md, digest, sizeof(md))) > { > printf("Single String Digest is: "); > for(i = 0; i < hashsz; i++) > { > printf("%02x", md[i]); > } > printf("\n"); > > return 0; > } > else > { > printf("memcmp failed/digest doesn't match expected\n"); > > return 1; > } > } > > ______________________________________________________________________ > OpenSSL Project http://www.openssl.org > User Support Mailing List openssl-users@... > Automated List Manager majordomo@... > -- -- 子曰 不而不改 是謂過矣니라 공자께서 말씀하시길, 잘못을 하고도 고치지 않는 것, 그것을 잘못이라 한다. - 論語 < 衛 靈 公 >편 JongAm Park jongampark@... Visit my personal blog at http://jongampark.blogspot.com Visit my technical blog at http://jongampark.wordpress.com ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@... Automated List Manager majordomo@... |
| Free embeddable forum powered by Nabble | Forum Help |