stack.
[openssl.git] / crypto / pkcs7 / pk7_doit.c
index 4222173e36b9360bbc4092c4c55896faad60b963..5481036f35654f26c2a2354cfe552398c244f7af 100644 (file)
@@ -73,7 +73,8 @@ BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio)
        X509_ALGOR *xa;
        const EVP_MD *evp_md;
        const EVP_CIPHER *evp_cipher=NULL;
-       STACK *md_sk=NULL,*rsk=NULL;
+       STACK_OF(X509_ALGOR) *md_sk=NULL;
+       STACK_OF(PKCS7_RECIP_INFO) *rsk=NULL;
        X509_ALGOR *xalg=NULL;
        PKCS7_RECIP_INFO *ri=NULL;
        EVP_PKEY *pkey;
@@ -116,9 +117,9 @@ BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio)
 
        if (md_sk != NULL)
                {
-               for (i=0; i<sk_num(md_sk); i++)
+               for (i=0; i<sk_X509_ALGOR_num(md_sk); i++)
                        {
-                       xa=(X509_ALGOR *)sk_value(md_sk,i);
+                       xa=sk_X509_ALGOR_value(md_sk,i);
                        if ((btmp=BIO_new(BIO_f_md())) == NULL)
                                {
                                PKCS7err(PKCS7_F_PKCS7_DATAINIT,ERR_R_BIO_LIB);
@@ -173,9 +174,9 @@ BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio)
 
                /* Lets do the pub key stuff :-) */
                max=0;
-               for (i=0; i<sk_num(rsk); i++)
+               for (i=0; i<sk_PKCS7_RECIP_INFO_num(rsk); i++)
                        {
-                       ri=(PKCS7_RECIP_INFO *)sk_value(rsk,i);
+                       ri=sk_PKCS7_RECIP_INFO_value(rsk,i);
                        if (ri->cert == NULL)
                                {
                                PKCS7err(PKCS7_F_PKCS7_DATAINIT,PKCS7_R_MISSING_CERIPEND_INFO);
@@ -191,9 +192,9 @@ BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio)
                        PKCS7err(PKCS7_F_PKCS7_DATAINIT,ERR_R_MALLOC_FAILURE);
                        goto err;
                        }
-               for (i=0; i<sk_num(rsk); i++)
+               for (i=0; i<sk_PKCS7_RECIP_INFO_num(rsk); i++)
                        {
-                       ri=(PKCS7_RECIP_INFO *)sk_value(rsk,i);
+                       ri=sk_PKCS7_RECIP_INFO_value(rsk,i);
                        pkey=X509_get_pubkey(ri->cert);
                        jj=EVP_PKEY_encrypt(tmp,key,keylen,pkey);
                        EVP_PKEY_free(pkey);
@@ -265,7 +266,8 @@ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert)
        const EVP_CIPHER *evp_cipher=NULL;
        EVP_CIPHER_CTX *evp_ctx=NULL;
        X509_ALGOR *enc_alg=NULL;
-       STACK *md_sk=NULL,*rsk=NULL;
+       STACK_OF(X509_ALGOR) *md_sk=NULL;
+       STACK_OF(PKCS7_RECIP_INFO) *rsk=NULL;
        X509_ALGOR *xalg=NULL;
        PKCS7_RECIP_INFO *ri=NULL;
 /*     EVP_PKEY *pkey; */
@@ -315,9 +317,9 @@ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert)
        /* We will be checking the signature */
        if (md_sk != NULL)
                {
-               for (i=0; i<sk_num(md_sk); i++)
+               for (i=0; i<sk_X509_ALGOR_num(md_sk); i++)
                        {
-                       xa=(X509_ALGOR *)sk_value(md_sk,i);
+                       xa=sk_X509_ALGOR_value(md_sk,i);
                        if ((btmp=BIO_new(BIO_f_md())) == NULL)
                                {
                                PKCS7err(PKCS7_F_PKCS7_DATADECODE,ERR_R_BIO_LIB);
@@ -366,8 +368,8 @@ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert)
                 * (if any)
                 */
 
-               for (i=0; i<sk_num(rsk); i++) {
-                       ri=(PKCS7_RECIP_INFO *)sk_value(rsk,i);
+               for (i=0; i<sk_PKCS7_RECIP_INFO_num(rsk); i++) {
+                       ri=sk_PKCS7_RECIP_INFO_value(rsk,i);
                        if(!X509_NAME_cmp(ri->issuer_and_serial->issuer,
                                        pcert->cert_info->issuer) &&
                             !ASN1_INTEGER_cmp(pcert->cert_info->serialNumber,
@@ -464,7 +466,7 @@ int PKCS7_dataFinal(PKCS7 *p7, BIO *bio)
        PKCS7_SIGNER_INFO *si;
        EVP_MD_CTX *mdc,ctx_tmp;
        STACK_OF(X509_ATTRIBUTE) *sk;
-       STACK *si_sk=NULL;
+       STACK_OF(PKCS7_SIGNER_INFO) *si_sk=NULL;
        unsigned char *p,*pp=NULL;
        int x;
        ASN1_OCTET_STRING *os=NULL;
@@ -503,10 +505,9 @@ int PKCS7_dataFinal(PKCS7 *p7, BIO *bio)
                        PKCS7err(PKCS7_F_PKCS7_DATASIGN,ERR_R_BIO_LIB);
                        goto err;
                        }
-               for (i=0; i<sk_num(si_sk); i++)
+               for (i=0; i<sk_PKCS7_SIGNER_INFO_num(si_sk); i++)
                        {
-                       si=(PKCS7_SIGNER_INFO *)
-                               sk_value(si_sk,i);
+                       si=sk_PKCS7_SIGNER_INFO_value(si_sk,i);
                        if (si->pkey == NULL) continue;
 
                        j=OBJ_obj2nid(si->digest_alg->algorithm);
@@ -766,16 +767,16 @@ err:
 
 PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx)
        {
-       STACK *rsk;
+       STACK_OF(PKCS7_RECIP_INFO) *rsk;
        PKCS7_RECIP_INFO *ri;
        int i;
 
        i=OBJ_obj2nid(p7->type);
        if (i != NID_pkcs7_signedAndEnveloped) return(NULL);
        rsk=p7->d.signed_and_enveloped->recipientinfo;
-       ri=(PKCS7_RECIP_INFO *)sk_value(rsk,0);
-       if (sk_num(rsk) <= idx) return(NULL);
-       ri=(PKCS7_RECIP_INFO *)sk_value(rsk,idx);
+       ri=sk_PKCS7_RECIP_INFO_value(rsk,0);
+       if (sk_PKCS7_RECIP_INFO_num(rsk) <= idx) return(NULL);
+       ri=sk_PKCS7_RECIP_INFO_value(rsk,idx);
        return(ri->issuer_and_serial);
        }