ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/OpenSSL/OpenSSL.xs
(Generate patch)

Comparing OpenSSL/OpenSSL.xs (file contents):
Revision 1.11 by root, Sat Oct 27 03:29:43 2001 UTC vs.
Revision 1.12 by stefan, Sat Oct 27 04:16:35 2001 UTC

91 } 91 }
92 sv_setpv(sv, buf); 92 sv_setpv(sv, buf);
93 return sv; 93 return sv;
94} 94}
95 95
96long fuck_cb(struct bio_st *bm, int m, const char *ptr, int l, long x, long y) 96long bio_write_cb(struct bio_st *bm, int m, const char *ptr, int l, long x, long y)
97{ 97{
98 if(m == BIO_CB_WRITE) { 98 if(m == BIO_CB_WRITE) {
99 SV *sv = (SV *) BIO_get_callback_arg(bm); 99 SV *sv = (SV *) BIO_get_callback_arg(bm);
100 sv_catpvn(sv, ptr, l); 100 sv_catpvn(sv, ptr, l);
101 } 101 }
113 BIO *bio; 113 BIO *bio;
114 sv = newSVpvn("",0); 114 sv = newSVpvn("",0);
115 // mem is completely broken for write, so we use /dev/null 115 // mem is completely broken for write, so we use /dev/null
116 // and use callbacks-hooks 116 // and use callbacks-hooks
117 bio = BIO_new_file("/dev/null", "wb"); 117 bio = BIO_new_file("/dev/null", "wb");
118 BIO_set_callback(bio, fuck_cb); 118 BIO_set_callback(bio, bio_write_cb);
119 BIO_set_callback_arg(bio, (void *)sv); 119 BIO_set_callback_arg(bio, (void *)sv);
120 return bio; 120 return bio;
121} 121}
122 122
123static inline BIO *sv_bio_create_file(SV *filename) 123static inline BIO *sv_bio_create_file(SV *filename)
124{ 124{
125 char *fn;
126 STRLEN l; 125 STRLEN l;
127 126
128 return BIO_new_file(SvPV(filename, l), "wb"); 127 return BIO_new_file(SvPV(filename, l), "wb");
129} 128}
130 129
292 sprintf(&s[i*3], "%02X%c", md[i], (i + 1 == (int) n) ? '\0' : ':'); 291 sprintf(&s[i*3], "%02X%c", md[i], (i + 1 == (int) n) ? '\0' : ':');
293 } 292 }
294 return s; 293 return s;
295} 294}
296 295
297static inline char *ol(X509_NAME *x) 296static inline SV *ol(X509_NAME *x)
298{ 297{
299 // if we can't fix it, pretend at least that it works 298 char *p;
300 static char buf[8192]; 299 SV *sv = newSVpvn("",0);
301 X509_NAME_oneline(x, buf, 8192); 300 X509_NAME_oneline(x, (p=SvGROW(sv,8192)), 8192);
301 SvCUR_set(sv, strlen(p));
302 return buf; 302 return sv;
303} 303}
304 304
305#if 0
305static void run_sha1(char *digest, const char *msg, int msglen) 306static void run_sha1(char *digest, const char *msg, int msglen)
306{ 307{
307 SHA_CTX ctx; 308 SHA_CTX ctx;
308 309
309 if(!digest || !msg || msglen < 0) 310 if(!digest || !msg || msglen < 0)
310 croak("run_sha1: null pointer or illegal message len"); 311 croak("run_sha1: null pointer or illegal message len");
311 SHA1_Init(&ctx); 312 SHA1_Init(&ctx);
312 SHA1_Update(&ctx, msg, msglen); 313 SHA1_Update(&ctx, msg, msglen);
313 SHA1_Final(digest, &ctx); 314 SHA1_Final(digest, &ctx);
314} 315}
315 316#endif
316static bool is_privkey(RSA *key) 317static bool is_privkey(RSA *key)
317{ 318{
318 return (key->n && key->e && key->d && key->p && key->q 319 return (key->n && key->e && key->d && key->p && key->q
319 && key->dmp1 && key->dmq1 && key->iqmp && key->d) ? 1 : 0; 320 && key->dmp1 && key->dmq1 && key->iqmp && key->d) ? 1 : 0;
320} 321}
593void 594void
594STORABLE_freeze(key, cloning) 595STORABLE_freeze(key, cloning)
595 OpenSSL::RSA key 596 OpenSSL::RSA key
596 bool cloning 597 bool cloning
597PREINIT: 598PREINIT:
598 SV *sv;
599 STRLEN totlen; 599 STRLEN totlen;
600PPCODE: 600PPCODE:
601 if(cloning) 601 if(cloning)
602 return; 602 return;
603 totlen = BN_num_bytes(key->n) + BN_num_bytes(key->e) + 3*sizeof(int); 603 totlen = BN_num_bytes(key->n) + BN_num_bytes(key->e) + 3*sizeof(int);
893 ALIAS: 893 ALIAS:
894 new_from_file = 1 894 new_from_file = 1
895 PREINIT: 895 PREINIT:
896 BIO *bio; 896 BIO *bio;
897 STRLEN l; 897 STRLEN l;
898 char *p, *q = 0; 898 char *p;
899 CODE: 899 CODE:
900 p = SvPV (thing, l); 900 p = SvPV (thing, l);
901 if(ix == 1) { 901 if(ix == 1) {
902 bio = BIO_new_file(p, "r"); 902 bio = BIO_new_file(p, "r");
903 } else { 903 } else {
955 RETVAL = X509_NAME_dup (X509_get_issuer_name(x509)); 955 RETVAL = X509_NAME_dup (X509_get_issuer_name(x509));
956 OUTPUT: 956 OUTPUT:
957 RETVAL 957 RETVAL
958 958
959 959
960char * 960SV *
961subject_txt(x509) 961subject_txt(x509)
962 OpenSSL::X509 x509 962 OpenSSL::X509 x509
963 CODE: 963 CODE:
964 RETVAL = ol(X509_get_subject_name(x509)); 964 RETVAL = ol(X509_get_subject_name(x509));
965 OUTPUT: 965 OUTPUT:
966 RETVAL 966 RETVAL
967 967
968 968
969char * 969SV *
970issuer_txt(x509) 970issuer_txt(x509)
971 OpenSSL::X509 x509 971 OpenSSL::X509 x509
972 CODE: 972 CODE:
973 RETVAL = ol(X509_get_issuer_name(x509)); 973 RETVAL = ol(X509_get_issuer_name(x509));
974 OUTPUT: 974 OUTPUT:
1368 dss_base64 = 0x25 1368 dss_base64 = 0x25
1369 dss1_base64 = 0x26 1369 dss1_base64 = 0x26
1370 mdc2_base64 = 0x27 1370 mdc2_base64 = 0x27
1371 ripemd160_base64 = 0x28 1371 ripemd160_base64 = 0x28
1372 PREINIT: 1372 PREINIT:
1373 HMAC_CTX ctx;
1374 STRLEN l, keylen; 1373 STRLEN l, keylen;
1375 char *p; 1374 char *p;
1376 char *key; 1375 char *key;
1377 unsigned char md[EVP_MAX_MD_SIZE]; 1376 unsigned char md[EVP_MAX_MD_SIZE];
1378 unsigned int md_len; 1377 unsigned int md_len;
1554 OpenSSL::PKCS12 p12 1553 OpenSSL::PKCS12 p12
1555 ALIAS: 1554 ALIAS:
1556 as_file = 1 1555 as_file = 1
1557 PROTOTYPE: $;$ 1556 PROTOTYPE: $;$
1558 PREINIT: 1557 PREINIT:
1559 SV *sv;
1560 BIO *bio; 1558 BIO *bio;
1561 CODE: 1559 CODE:
1562 if((ix != 1 && items > 1) || (ix == 1 && items != 2)) 1560 if((ix != 1 && items > 1) || (ix == 1 && items != 2))
1563 croak("OpenSSL::PKCS12::%s: illegal/missing args", (ix == 1) ? "as_file" : "as_string"); 1561 croak("OpenSSL::PKCS12::%s: illegal/missing args", (ix == 1) ? "as_file" : "as_string");
1564 if(items > 1) { 1562 if(items > 1) {
1594 ALIAS: 1592 ALIAS:
1595 new_from_file = 1 1593 new_from_file = 1
1596 PREINIT: 1594 PREINIT:
1597 BIO *bio; 1595 BIO *bio;
1598 STRLEN l; 1596 STRLEN l;
1599 char *p, *q = 0; 1597 char *p;
1600 CODE: 1598 CODE:
1601 p = SvPV(thing, l); 1599 p = SvPV(thing, l);
1602 if(ix == 1) { 1600 if(ix == 1) {
1603 bio = BIO_new_file(p, "r"); 1601 bio = BIO_new_file(p, "r");
1604 } else { 1602 } else {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines