Seems I do something wrong when I create/ convert my BMPSTRING. When I create
my certificate reqeust I always get an octet string value (FD FD FD FD AB AB AB
AB AB AB AB AB ) but no embedded bmpstring. Strange thing is, when I alternate
the string ("myTemplate") to an other string (of the same length) the octet
value (FD FD ...) don't change.
What's wrong?
Here's my code:
...
char* t = "myTemplate";
nid = OBJ_create("1.3.6.1.4.1.311.20.2", "szOID_ENROLL_CERTTYPE_EXTENSION",
"szOID_ENROLL_CERTTYPE_EXTENSION");
ASN1_BMPSTRING* str = ASN1_BMPSTRING_new();
ASN1_STRING_set(str, (unsigned char*)t, strlen(t));
int size = i2d_ASN1_BMPSTRING(str, NULL);
unsigned char *oStr = (unsigned char*)malloc(size);
i2d_ASN1_BMPSTRING(str, &oStr);
ASN1_OCTET_STRING *aos = ASN1_OCTET_STRING_new();
ASN1_STRING_set(aos, oStr ,size);
ext = X509_EXTENSION_create_by_NID(NULL, nid, 0, aos);
sk_X509_EXTENSION_push(exts, ext);
...
Thanks!
Michael
-----Ursprüngliche Nachricht-----
Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im Auftrag von Dr. Stephen
Henson
Gesendet: Montag, 12. Februar 2007 13:43
An: [email protected]
Betreff: Re: BMPSTRING in extensions
On Mon, Feb 12, 2007, Michael Leuchtner wrote:
> Ok, I think I know the structure of the value. When I look at a "microsoft
> style" request samle with the openssl command line tool, I get the following
> output:
>
> ...
> 362:d=6 hl=2 l= 51 cons: SEQUENCE
> 364:d=7 hl=2 l= 9 prim: OBJECT :1.3.6.1.4.1.311.20.2
> 375:d=7 hl=2 l= 38 prim: OCTET STRING
> 415:d=3 hl=3 l= 241 cons: SEQUENCE
> 418:d=4 hl=2 l= 10 prim: OBJECT :1.3.6.1.4.1.311.13.2.2
> 430:d=4 hl=3 l= 226 cons: SET
> 433:d=5 hl=3 l= 223 cons: SEQUENCE
> 436:d=6 hl=2 l= 1 prim: INTEGER :02
> 439:d=6 hl=2 l= 78 prim: BMPSTRING
> 519:d=6 hl=3 l= 137 prim: BIT STRING
> 659:d=1 hl=2 l= 13 cons: SEQUENCE
> 661:d=2 hl=2 l= 9 prim: OBJECT :sha1WithRSAEncryption
> 672:d=2 hl=2 l= 0 prim: NULL
> 674:d=1 hl=3 l= 129 prim: BIT STRING
> OpenSSL> asn1parse -in testcert.txt -strparse 375
> 0:d=0 hl=2 l= 36 prim: BMPSTRING
> OpenSSL>
>
> So it seems that I have to add a BMPSTRING as a subfield of the OCTET STRING.
> But how can I do that?!
>
Create a BMPSTRING, generate its encoding with i2d_BMPSTRING and make that the
content of the OCTET STRING.
If you are using the file based extension functions in OpenSSL you can make use
of its mini-ASN1 compiler to achieve the same result.
Steve.
--
Dr Stephen N. Henson. Email, S/MIME and PGP keys: see homepage OpenSSL project
core developer and freelance consultant.
Funding needed! Details on homepage.
Homepage: http://www.drh-consultancy.demon.co.uk
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List [email protected]
Automated List Manager [EMAIL PROTECTED]
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List [email protected]
Automated List Manager [EMAIL PROTECTED]