Hi, Shahin, Thank you very much! I will try to find the algorithm identifier and an exponent. I just read raw data from DVD disk to verify the DVD data. I try to use rsa_public_decrypt or rsa_verify. Both of them need to use a RSA* format data. For now I only have the above raw data as public key. Actually I really have no idea to convert the raw data into RSA* format.
sincerely, Hunter On Wed, Feb 3, 2010 at 12:15 AM, Shahin Khorasani <khoras...@amnafzar.com>wrote: > Hello hunter, > > Your raw data seems to be a RSA public key modulus. > A public key in ASN.1 must have an algorithm identifier and an exponent. > Take a look at this sample: > raw data is (hexdump): > > 8230 2201 0d30 0906 862a 8648 0df7 0101 > 0501 0300 0182 000f 8230 0a01 8202 0101 > *d200 808c f87b cf63 7cb3 2cff 43dd 5cf5 * <--- You just provided > this part > *7def d1f5 adaa 0944 87ea f398 a654 b36d > 2303 4d68 e9fa fd46 9171 0f97 2960 cd1e > 6045 21aa 6986 44e2 679f 5a07 bbf9 157e > 82e2 82a8 5f42 7cee 4af6 7c1a e53d 05a3 > cf9a fc6a a0d9 6850 64f1 a6af f6fe c61c > f39f ba1e cb31 c734 5c2f 4937 5383 4de5 > 7b29 010a 2f86 41ab 00af 2ce3 3a48 3d19 > 41c2 3196 455d 219b d1a0 9600 a107 65a7 > f195 aacd a105 3c71 fc7f 9c58 5825 6bd7 > ffe7 8d47 6c3d de2a 2779 489f 2641 ed81 > 9f54 62e2 c4ed 893d e0bf 3678 a8c9 6573 > bda9 9b1f acb1 6634 9375 48bf ef82 887c > 0e08 6b68 b6f3 8170 bda0 f8a7 2e1b 023d > 5309 a755 e68e e014 cffd 9610 857a 3ffb > f569 344c 7ea7 2520 d33f 0084 a9ca eaf6 > 028f *0103 0100 > > > Gutman ASN1 dumper output: > > 0 290: SEQUENCE { > 4 13: SEQUENCE { > 6 9: OBJECT IDENTIFIER rsaEncryption (1 2 840 113549 1 1 1) > 17 0: NULL > : } > 19 271: BIT STRING, encapsulates { > 24 266: SEQUENCE { > 28 257: INTEGER > : 00 D2 8C 80 7B F8 63 CF B3 7C FF 2C DD 43 F5 5C > : EF 7D F5 D1 AA AD 44 09 EA 87 98 F3 54 A6 6D B3 > : 03 23 68 4D FA E9 46 FD 71 91 97 0F 60 29 1E CD > : 45 60 AA 21 86 69 E2 44 9F 67 07 5A F9 BB 7E 15 > : E2 82 A8 82 42 5F EE 7C F6 4A 1A 7C 3D E5 A3 05 > : 9A CF 6A FC D9 A0 50 68 F1 64 AF A6 FE F6 1C C6 > : 9F F3 1E BA 31 CB 34 C7 2F 5C 37 49 83 53 E5 4D > : 29 7B 0A 01 86 2F AB 41 AF 00 E3 2C 48 3A 19 3D > : C2 41 96 31 5D 45 9B 21 A0 D1 00 96 07 A1 A7 65 > : 95 F1 CD AA 05 A1 71 3C 7F FC 58 9C 25 58 D7 6B > : E7 FF 47 8D 3D 6C 2A DE 79 27 9F 48 41 26 81 ED > : 54 9F E2 62 ED C4 3D 89 BF E0 78 36 C9 A8 73 65 > : A9 BD 1F 9B B1 AC 34 66 75 93 BF 48 82 EF 7C 88 > : 08 0E 68 6B F3 B6 70 81 A0 BD A7 F8 1B 2E 3D 02 > : 09 53 55 A7 8E E6 14 E0 FD CF 10 96 7A 85 FB 3F > : 69 F5 4C 34 A7 7E 20 25 3F D3 84 00 CA A9 F6 EA > : 8F > 289 3: INTEGER 65537 > : } > : } > : } > > Regards, > Shahin Khorasani > > > > hunter li wrote: > > Hi, All, > I have the following code to generate the RSA data. But it always gives me > error: > 5049:error:0906D064:lib(9):func(109):reason(100):pem_lib.c:756. > > I do appreciate any suggestion! > > > #include <stdio.h> > #include <stdlib.h> > #include <stdint.h> > #include <string.h> > > #include <openssl/bio.h> > #include <openssl/rsa.h> > #include <openssl/pem.h> > #include <openssl/err.h> > > int main(void) > { > > RSA *public_key; > BIO *pub_bio; > > char *publicKey_test = "-----BEGIN PUBLIC > KEY-----\nOTJjM2I3NTJmMmZlMzhkOTZjOTI2MjIxNzc0NjllNzM\ > MWExMDk5MmZkNWY3MWE0N2JlMzRhMzcxMDZkZDNkMTk\ > ZTUzNDc4OTY4OWQzM2FlYWRjMmQ2NWEzNGM5NjdjYzg\ > ODQzMzNhNDI4YjEyODRjZmQ0ZGNkZjVjM2UyNDU5Njk\ > NzNmMDAyZGEyMjIxZGM3NGM3NjdhYzZkYWIzYjc1YmE\ > MzAwZmZlNzcxZmIzMGJhZTBhMzQ4OGUxYTBhYzU0MmI\ > N2EwOTVlZWIzMzg1MWMwZWM2N2YwNDMzMzE3MTdkOTU\ > ZjM2ZmFlM2NiMDI3MTdhMjQxNjc3YTRkNTI4ODNhZDM\ > MzQ3ODE1N2IzZDcwODk0YjVmYzI3MTI5NmU4MjViOTU\ > Y2Q1NTQ3M2ZlMWY5MzgzYmZjZTkzN2YyNmRhNjliOTY\ > OGE0MjA4YzBiOTU1NDAyNDM1ZTcwYjY0NDE1OTE2MmE\ > YjFmNmU4ODA5YTAwMWI2N2MwNDE4NzU3NWEwMGNkN2Q\ > OTU0YTcxNzkyZTJiZjlhYjcxOTk1NzdmYjc2NWI3YjQ\ > OWNmOGJmYjM3MGQxNDMxZGE3OGYwMTU4ODEwY2Y5OTI\ > MWUxMzAyMzUzNTFmNjUyMjU4NjkzNjM3MTU1YmUyMzU\ > NTQyYjhlYTIzMzI2NTE0ZTAzOGVlZjM4ZDVjZTBmNzc=\n-----END PUBLIC KEY-----"; > > pub_bio = BIO_new_mem_buf(publicKey_test, -1); > if(pub_bio == NULL) { > ERR_print_errors_fp(stdout); > return 1; > } > > public_key = PEM_read_bio_RSA_PUBKEY(pub_bio, NULL, NULL, NULL); > if(public_key == NULL) { > ERR_print_errors_fp(stdout); > > } > RSA_free(public_key); > > return 0; > > } > > > Here I try to convert the following public key raw data into PEM format. > I encode the data into base64 and add"-----BEGIN PUBLIC KEY-----", "----END > PUBLIC KEY-----". > The raw data is as following 256 Bytes: > 92 c3 b7 52 f2 fe 38 d9 6c 92 62 21 77 46 9e 73 > 1a 10 99 2f d5 f7 1a 47 be 34 a3 71 06 dd 3d 19 > e5 34 78 96 89 d3 3a ea dc 2d 65 a3 4c 96 7c c8 > 84 33 3a 42 8b 12 84 cf d4 dc df 5c 3e 24 59 69 > 73 f0 02 da 22 21 dc 74 c7 67 ac 6d ab 3b 75 ba > 30 0f fe 77 1f b3 0b ae 0a 34 88 e1 a0 ac 54 2b > 7a 09 5e eb 33 85 1c 0e c6 7f 04 33 31 71 7d 95 > f3 6f ae 3c b0 27 17 a2 41 67 7a 4d 52 88 3a d3 > 34 78 15 7b 3d 70 89 4b 5f c2 71 29 6e 82 5b 95 > cd 55 47 3f e1 f9 38 3b fc e9 37 f2 6d a6 9b 96 > 8a 42 08 c0 b9 55 40 24 35 e7 0b 64 41 59 16 2a > b1 f6 e8 80 9a 00 1b 67 c0 41 87 57 5a 00 cd 7d > 95 4a 71 79 2e 2b f9 ab 71 99 57 7f b7 65 b7 b4 > 9c f8 bf b3 70 d1 43 1d a7 8f 01 58 81 0c f9 92 > 1e 13 02 35 35 1f 65 22 58 69 36 37 15 5b e2 35 > 54 2b 8e a2 33 26 51 4e 03 8e ef 38 d5 ce 0f 77 > > > Thank you in advance! > > Hunter > > ______________________________________________________________________ > OpenSSL Project http://www.openssl.org Development Mailing List > openssl-dev@openssl.org Automated List Manager majord...@openssl.org