… | |
… | |
53 | #define GEN_IO(type,class) \ |
53 | #define GEN_IO(type,class) \ |
54 | GEN_INPUT(type,class) \ |
54 | GEN_INPUT(type,class) \ |
55 | GEN_OUTPUT(type,class) |
55 | GEN_OUTPUT(type,class) |
56 | |
56 | |
57 | |
57 | |
58 | GEN_IO(X509,"OpenSSL::X509") |
|
|
59 | GEN_IO(X509_CRL,"OpenSSL::CRL") |
|
|
60 | GEN_IO(X509_NAME, "OpenSSL::Name") |
|
|
61 | GEN_IO(PKCS12, "OpenSSL::PKCS12") |
58 | GEN_IO(PKCS12, "OpenSSL::PKCS12") |
62 | GEN_IO(PKCS7, "OpenSSL::PKCS7") |
59 | GEN_IO(PKCS7, "OpenSSL::PKCS7") |
63 | GEN_IO(RSA, "OpenSSL::RSA") |
60 | GEN_IO(RSA, "OpenSSL::RSA") |
64 | GEN_IO(EVP_MD_CTX, "OpenSSL::Digest") |
61 | GEN_IO(EVP_MD_CTX, "OpenSSL::Digest") |
65 | GEN_IO(EVP_CIPHER_CTX, "OpenSSL::Cipher") |
62 | GEN_IO(EVP_CIPHER_CTX, "OpenSSL::Cipher") |
66 | |
63 | |
67 | typedef X509 *OpenSSL__X509; |
64 | typedef X509 *OpenSSL__X509; |
|
|
65 | typedef X509_CRL *OpenSSL__CRL; |
|
|
66 | typedef X509_NAME *OpenSSL__Name; |
68 | |
67 | |
69 | static inline SV* output_ASN1_INTEGER(ASN1_INTEGER *ai, SV *sv) |
68 | static inline SV* output_ASN1_INTEGER(ASN1_INTEGER *ai, SV *sv) |
70 | { |
69 | { |
71 | if(!ai) |
70 | if(!ai) |
72 | croak("got 0-ptr"); |
71 | croak("got 0-ptr"); |
… | |
… | |
741 | |
740 | |
742 | MODULE = OpenSSL PACKAGE = OpenSSL::Name |
741 | MODULE = OpenSSL PACKAGE = OpenSSL::Name |
743 | |
742 | |
744 | PROTOTYPES: ENABLE |
743 | PROTOTYPES: ENABLE |
745 | |
744 | |
746 | void |
745 | OpenSSL::Name |
747 | new_name() |
746 | new_name() |
748 | PREINIT: |
|
|
749 | X509_NAME *name; |
|
|
750 | PPCODE: |
747 | CODE: |
751 | if(!(name = X509_NAME_new())) { |
748 | if(!(RETVAL = X509_NAME_new())) { |
752 | croak("X509_NAME_new"); |
749 | croak("X509_NAME_new"); |
753 | } |
750 | } |
754 | EXTEND(sp, 1); |
751 | OUTPUT: |
755 | PUSHs(sv_newmortal()); |
752 | RETVAL |
756 | sv_setref_pv(ST(0), "OpenSSL::Name", (void *) name); |
|
|
757 | |
753 | |
758 | |
754 | |
759 | void |
755 | void |
760 | add(name, key, string) |
756 | add(name, key, string) |
761 | X509_NAME *name |
757 | OpenSSL::Name name |
762 | SV *key |
758 | SV *key |
763 | SV *string |
759 | SV *string |
764 | PREINIT: |
760 | PREINIT: |
765 | STRLEN l, kl; |
761 | STRLEN l, kl; |
766 | char *p, *k; |
762 | char *p, *k; |
… | |
… | |
776 | if(!ok) |
772 | if(!ok) |
777 | croak("X509_NAME_add_entry_by_*: %s", ssl_error()); |
773 | croak("X509_NAME_add_entry_by_*: %s", ssl_error()); |
778 | |
774 | |
779 | IV |
775 | IV |
780 | count(name) |
776 | count(name) |
781 | X509_NAME *name |
777 | OpenSSL::Name name |
782 | CODE: |
778 | CODE: |
783 | RETVAL = X509_NAME_entry_count(name); |
779 | RETVAL = X509_NAME_entry_count(name); |
784 | OUTPUT: |
780 | OUTPUT: |
785 | RETVAL |
781 | RETVAL |
786 | |
782 | |
787 | void |
783 | void |
788 | getall(name) |
784 | getall(name) |
789 | X509_NAME *name |
785 | OpenSSL::Name name |
790 | PREINIT: |
786 | PREINIT: |
791 | int cnt, i; |
787 | int cnt, i; |
792 | X509_NAME_ENTRY *e; |
788 | X509_NAME_ENTRY *e; |
793 | int nid; |
789 | int nid; |
794 | ASN1_STRING *s; |
790 | ASN1_STRING *s; |
… | |
… | |
809 | |
805 | |
810 | |
806 | |
811 | |
807 | |
812 | void |
808 | void |
813 | DESTROY(name) |
809 | DESTROY(name) |
814 | X509_NAME *name |
810 | OpenSSL::Name name |
815 | CODE: |
811 | CODE: |
816 | if(name) { |
812 | if(name) { |
817 | XD("X509_NAME_free(%p)\n", name); |
813 | XD("X509_NAME_free(%p)\n", name); |
818 | X509_NAME_free(name); |
814 | X509_NAME_free(name); |
819 | } |
815 | } |
… | |
… | |
902 | ERR_load_DSA_strings(); |
898 | ERR_load_DSA_strings(); |
903 | ERR_load_RSA_strings(); |
899 | ERR_load_RSA_strings(); |
904 | } |
900 | } |
905 | |
901 | |
906 | |
902 | |
907 | void |
903 | OpenSSL::X509 |
908 | new_X509() |
904 | new_X509() |
909 | PREINIT: |
905 | CODE: |
910 | X509 *x509; |
|
|
911 | PPCODE: |
|
|
912 | if((x509=X509_new()) == NULL) |
906 | if ((RETVAL = X509_new ()) == NULL) |
913 | croak("X509_new"); |
907 | croak("X509_new"); |
|
|
908 | |
914 | if(!X509_set_version(x509, 2)) { |
909 | if (!X509_set_version (RETVAL, 2)) |
915 | X509_free(x509); |
910 | { |
|
|
911 | X509_free (RETVAL); |
916 | croak("X509_set_version"); |
912 | croak ("X509_set_version"); |
917 | } |
913 | } |
|
|
914 | |
918 | ASN1_INTEGER_set(X509_get_serialNumber(x509),0L); |
915 | ASN1_INTEGER_set (X509_get_serialNumber (RETVAL), 0L); |
919 | EXTEND(sp, 1); |
916 | OUTPUT: |
920 | PUSHs(sv_newmortal()); |
917 | RETVAL |
921 | sv_setref_pv(ST(0), "OpenSSL::X509", (void *) x509); |
|
|
922 | |
918 | |
923 | |
919 | |
924 | void |
920 | void |
925 | new_from_string(thing) |
921 | new_from_string(thing) |
926 | SV *thing |
922 | SV *thing |
927 | ALIAS: |
923 | ALIAS: |
928 | new_from_file = 1 |
924 | new_from_file = 1 |
929 | PREINIT: |
925 | PREINIT: |
930 | BIO *bio; |
926 | BIO *bio; |
931 | X509 *x509; |
927 | X509 *x509; |
932 | STRLEN l; |
928 | STRLEN l; |
933 | char *p, *q = 0; |
929 | char *p, *q = 0; |
934 | PPCODE: |
930 | PPCODE: |
935 | p = SvPV(thing, l); |
931 | p = SvPV (thing, l); |
936 | if(ix == 1) { |
932 | if(ix == 1) { |
937 | bio = BIO_new_file(p, "r"); |
933 | bio = BIO_new_file(p, "r"); |
938 | } else { |
934 | } else { |
939 | bio = BIO_new_mem_buf (p, l); |
935 | bio = BIO_new_mem_buf (p, l); |
940 | } |
936 | } |
… | |
… | |
954 | DESTROY(x509) |
950 | DESTROY(x509) |
955 | OpenSSL::X509 x509 |
951 | OpenSSL::X509 x509 |
956 | CODE: |
952 | CODE: |
957 | if (x509) { |
953 | if (x509) { |
958 | XD("X509_free(%p)\n", x509); |
954 | XD("X509_free(%p)\n", x509); |
959 | X509_free(x509); |
955 | X509_free (x509); |
960 | x509 = 0; |
956 | x509 = 0; |
961 | } |
957 | } |
962 | |
958 | |
963 | |
959 | |
964 | char * |
960 | char * |
… | |
… | |
974 | RETVAL = dofp(x509, mds[ix]); |
970 | RETVAL = dofp(x509, mds[ix]); |
975 | OUTPUT: |
971 | OUTPUT: |
976 | RETVAL |
972 | RETVAL |
977 | |
973 | |
978 | |
974 | |
979 | X509_NAME * |
975 | OpenSSL::Name |
980 | subject(x509) |
976 | subject(x509) |
981 | OpenSSL::X509 x509 |
977 | OpenSSL::X509 x509 |
982 | CODE: |
978 | CODE: |
983 | RETVAL = X509_get_subject_name(x509); |
979 | RETVAL = X509_get_subject_name(x509); |
984 | OUTPUT: |
980 | OUTPUT: |
985 | RETVAL |
981 | RETVAL |
986 | |
982 | |
987 | X509_NAME * |
983 | OpenSSL::Name |
988 | issuer(x509) |
984 | issuer(x509) |
989 | OpenSSL::X509 x509 |
985 | OpenSSL::X509 x509 |
990 | CODE: |
986 | CODE: |
991 | RETVAL = X509_get_issuer_name(x509); |
987 | RETVAL = X509_get_issuer_name(x509); |
992 | OUTPUT: |
988 | OUTPUT: |
… | |
… | |
1092 | OUTPUT: |
1088 | OUTPUT: |
1093 | RETVAL |
1089 | RETVAL |
1094 | |
1090 | |
1095 | void |
1091 | void |
1096 | set_issuer(x509,name) |
1092 | set_issuer(x509,name) |
1097 | X509 *x509 |
1093 | OpenSSL::X509 x509 |
1098 | X509_NAME *name |
1094 | OpenSSL::Name name |
1099 | CODE: |
1095 | CODE: |
1100 | X509_set_issuer_name(x509, X509_NAME_dup(name)); |
1096 | X509_set_issuer_name(x509, X509_NAME_dup(name)); |
1101 | |
1097 | |
1102 | void |
1098 | void |
1103 | set_subject(x509,name) |
1099 | set_subject(x509,name) |
1104 | X509 *x509 |
1100 | OpenSSL::X509 x509 |
1105 | X509_NAME *name |
1101 | OpenSSL::Name name |
1106 | CODE: |
1102 | CODE: |
1107 | X509_set_subject_name(x509, X509_NAME_dup(name)); |
1103 | X509_set_subject_name(x509, X509_NAME_dup(name)); |
1108 | |
1104 | |
1109 | SV * |
1105 | SV * |
1110 | errstring(x509) |
1106 | errstring(x509) |
… | |
… | |
1639 | } |
1635 | } |
1640 | |
1636 | |
1641 | |
1637 | |
1642 | MODULE = OpenSSL PACKAGE = OpenSSL::CRL |
1638 | MODULE = OpenSSL PACKAGE = OpenSSL::CRL |
1643 | |
1639 | |
1644 | void |
1640 | OpenSSL::CRL |
1645 | new_from_string(thing) |
1641 | new_from_string(thing) |
1646 | SV *thing |
1642 | SV *thing |
1647 | ALIAS: |
1643 | ALIAS: |
1648 | new_from_file = 1 |
1644 | new_from_file = 1 |
1649 | PREINIT: |
1645 | PREINIT: |
1650 | BIO *bio; |
1646 | BIO *bio; |
1651 | X509_CRL *crl; |
|
|
1652 | STRLEN l; |
1647 | STRLEN l; |
1653 | char *p, *q = 0; |
1648 | char *p, *q = 0; |
1654 | PPCODE: |
1649 | CODE: |
1655 | p = SvPV(thing, l); |
1650 | p = SvPV(thing, l); |
1656 | if(ix == 1) { |
1651 | if(ix == 1) { |
1657 | bio = BIO_new_file(p, "r"); |
1652 | bio = BIO_new_file(p, "r"); |
1658 | } else { |
1653 | } else { |
1659 | bio = BIO_new_mem_buf (p, l); |
1654 | bio = BIO_new_mem_buf (p, l); |
1660 | } |
1655 | } |
1661 | if(!bio) |
1656 | if(!bio) |
1662 | croak(ssl_error()); |
1657 | croak(ssl_error()); |
1663 | |
1658 | |
1664 | crl = PEM_read_bio_X509_CRL (bio, 0, 0, 0); |
1659 | RETVAL = PEM_read_bio_X509_CRL (bio, 0, 0, 0); |
1665 | BIO_free (bio); |
1660 | BIO_free (bio); |
1666 | if(!crl) |
1661 | if(!RETVAL) |
1667 | croak("PEM_read_bio_X509_CRL: %s", ssl_error()); |
1662 | croak("PEM_read_bio_X509_CRL: %s", ssl_error()); |
1668 | |
1663 | |
1669 | EXTEND(sp, 1); |
1664 | OUTPUT: |
1670 | PUSHs(sv_newmortal()); |
1665 | RETVAL |
1671 | sv_setref_pv(ST(0), "OpenSSL::CRL", (void *) crl); |
|
|
1672 | |
1666 | |
1673 | void |
1667 | void |
1674 | DESTROY(crl) |
1668 | DESTROY(crl) |
1675 | X509_CRL *crl |
1669 | OpenSSL::CRL crl |
1676 | CODE: |
1670 | CODE: |
1677 | if (crl) { |
1671 | if (crl) { |
1678 | XD("X509_CRL_free (%p)\n", crl); |
1672 | XD("X509_CRL_free (%p)\n", crl); |
1679 | X509_CRL_free(crl); |
1673 | X509_CRL_free(crl); |
1680 | crl = 0; |
1674 | crl = 0; |
1681 | } |
1675 | } |
1682 | |
1676 | |
1683 | SV* |
1677 | SV* |
1684 | info(crl) |
1678 | info(crl) |
1685 | X509_CRL *crl |
1679 | OpenSSL::CRL crl |
1686 | PREINIT: |
1680 | PREINIT: |
1687 | BIO *bio; |
1681 | BIO *bio; |
1688 | CODE: |
1682 | CODE: |
1689 | bio = sv_bio_create(); |
1683 | bio = sv_bio_create(); |
1690 | if(!X509_CRL_print(bio,crl)) { |
1684 | if(!X509_CRL_print(bio,crl)) { |