# class OpenSSL::PKCS7::SignerInfo

### Public Class Methods

new (p1, p2, p3)
Source

    static VALUE
    ossl_pkcs7si_initialize(VALUE self, VALUE cert, VALUE key, VALUE digest)
    {
        PKCS7_SIGNER_INFO *p7si;
        EVP_PKEY *pkey;
        X509 *x509;
        const EVP_MD *md;

        pkey = GetPrivPKeyPtr(key); /* NO NEED TO DUP */
        x509 = GetX509CertPtr(cert); /* NO NEED TO DUP */
        md = ossl_evp_get_digestbyname(digest);
        GetPKCS7si(self, p7si);
        if (!(PKCS7_SIGNER_INFO_set(p7si, x509, pkey, (EVP_MD*)md))) {
            ossl_raise(ePKCS7Error, NULL);
        }

        return self;
    }

### Public Instance Methods

issuer ()
Source

    static VALUE
    ossl_pkcs7si_get_issuer(VALUE self)
    {
        PKCS7_SIGNER_INFO *p7si;

        GetPKCS7si(self, p7si);

        return ossl_x509name_new(p7si->issuer_and_serial->issuer);
    }

serial ()
Source

    static VALUE
    ossl_pkcs7si_get_serial(VALUE self)
    {
        PKCS7_SIGNER_INFO *p7si;

        GetPKCS7si(self, p7si);

        return asn1integer_to_num(p7si->issuer_and_serial->serial);
    }

signed_time ()
Source

    static VALUE
    ossl_pkcs7si_get_signed_time(VALUE self)
    {
        PKCS7_SIGNER_INFO *p7si;
        ASN1_TYPE *asn1obj;

        GetPKCS7si(self, p7si);

        if (!(asn1obj = PKCS7_get_signed_attribute(p7si, NID_pkcs9_signingTime))) {
            ossl_raise(ePKCS7Error, NULL);
        }
        if (asn1obj->type == V_ASN1_UTCTIME) {
            return asn1time_to_time(asn1obj->value.utctime);
        }
        /*
         * OR
         * ossl_raise(ePKCS7Error, "...");
         * ?
         */

        return Qnil;
    }