Crypt-OpenSSL-PKCS12

 view release on metacpan or  search on metacpan

PKCS12.xs  view on Meta::CPAN

  SV *pwd

  PREINIT:
  BIO *bio;
  STACK_OF(PKCS7) *asafes = NULL;
  STRLEN pwd_len = 0;
  const char *pwd_str = "";

  CODE:

  if (SvOK(pwd)) {
    pwd_str = SvPV(pwd, pwd_len);
    if (pwd_len > (STRLEN)INT_MAX)
      croak("password length exceeds INT_MAX");
  }

  CHECK_OPEN_SSL(bio = BIO_new(BIO_s_mem()));

  if ((asafes = PKCS12_unpack_authsafes(pkcs12)) == NULL)
        RETVAL = newSVpvn("",0);

  dump_certs_keys_p12(aTHX_ bio, pkcs12, pwd_str, (int)pwd_len, CLCERTS|NOKEYS, NULL, NULL);

  RETVAL = extractBioString(aTHX_ bio);

  OUTPUT:
  RETVAL

SV*
ca_certificate(pkcs12, pwd = &PL_sv_undef)
  Crypt::OpenSSL::PKCS12 pkcs12
  SV *pwd

  PREINIT:
  BIO *bio;
  STACK_OF(PKCS7) *asafes = NULL;
  STRLEN pwd_len = 0;
  const char *pwd_str = "";

  CODE:

  if (SvOK(pwd)) {
    pwd_str = SvPV(pwd, pwd_len);
    if (pwd_len > (STRLEN)INT_MAX)
      croak("password length exceeds INT_MAX");
  }

  CHECK_OPEN_SSL(bio = BIO_new(BIO_s_mem()));

  if ((asafes = PKCS12_unpack_authsafes(pkcs12)) == NULL)
        RETVAL = newSVpvn("",0);

  dump_certs_keys_p12(aTHX_ bio, pkcs12, pwd_str, (int)pwd_len, CACERTS|NOKEYS, NULL, NULL);

  RETVAL = extractBioString(aTHX_ bio);

  OUTPUT:
  RETVAL

SV*
private_key(pkcs12, pwd = &PL_sv_undef)
  Crypt::OpenSSL::PKCS12 pkcs12
  SV *pwd

  PREINIT:
  BIO *bio;
  STRLEN pwd_len = 0;
  const char *pwd_str = "";

  CODE:

  if (SvOK(pwd)) {
    pwd_str = SvPV(pwd, pwd_len);
    if (pwd_len > (STRLEN)INT_MAX)
      croak("password length exceeds INT_MAX");
  }

  CHECK_OPEN_SSL(bio = BIO_new(BIO_s_mem()));

  PKCS12_unpack_authsafes(pkcs12);

  dump_certs_keys_p12(aTHX_ bio, pkcs12, pwd_str, (int)pwd_len, NOCERTS, NULL, NULL);

  RETVAL = extractBioString(aTHX_ bio);

  OUTPUT:
  RETVAL

HV* info_as_hash(pkcs12, pwd = &PL_sv_undef)
  Crypt::OpenSSL::PKCS12 pkcs12
  SV *pwd

  PREINIT:
  BIO *bio;
  STACK_OF(PKCS7) *asafes = NULL;
  STRLEN pwd_len = 0;
  const char *pwd_str = "";

  CONST_ASN1_INTEGER *tmaciter;
#if OPENSSL_VERSION_NUMBER > 0x10100000L
  SV *value;
  CONST_X509_ALGOR *macalgid;
  CONST_ASN1_OBJECT *macobj;
  CONST_ASN1_OCTET_STRING *tmac;
  CONST_ASN1_OCTET_STRING *tsalt;
#endif

  CODE:
  if (SvOK(pwd)) {
    pwd_str = SvPV(pwd, pwd_len);
    if (pwd_len > (STRLEN)INT_MAX)
      croak("password length exceeds INT_MAX");
  }
  RETVAL = newHV();

  CHECK_OPEN_SSL(bio = BIO_new(BIO_s_mem()));

  if ((asafes = PKCS12_unpack_authsafes(pkcs12)) == NULL)
        RETVAL = newHV();
  HV * mac = newHV();
#if OPENSSL_VERSION_NUMBER > 0x10100000L



( run in 1.042 second using v1.01-cache-2.11-cpan-6aa56a78535 )