#include <stdio.h>
#include <stdlib.h>
-#include <malloc.h>
+#include <string.h>
#include <openssl/pkcs7.h>
+#include <openssl/asn1_mac.h>
int add_signed_time(PKCS7_SIGNER_INFO *si)
{
ASN1_UTCTIME *get_signed_time(PKCS7_SIGNER_INFO *si)
{
ASN1_TYPE *so;
- ASN1_UTCTIME *ut;
so=PKCS7_get_signed_attribute(si,NID_pkcs9_signingTime);
if (so->type == V_ASN1_UTCTIME)
- {
- ut=so->value.utctime;
- }
- return(ut);
+ return so->value.utctime;
+ return NULL;
}
static int signed_string_nid= -1;
-int add_signed_string(PKCS7_SIGNER_INFO *si, char *str)
+void add_signed_string(PKCS7_SIGNER_INFO *si, char *str)
{
ASN1_OCTET_STRING *os;
signed_string_nid=
OBJ_create("1.2.3.4.5","OID_example","Our example OID");
os=ASN1_OCTET_STRING_new();
- ASN1_OCTET_STRING_set(os,str,strlen(str));
+ ASN1_OCTET_STRING_set(os,(unsigned char*)str,strlen(str));
/* When we add, we do not free */
PKCS7_add_signed_attribute(si,signed_string_nid,
V_ASN1_OCTET_STRING,(char *)os);
return(0);
}
-static signed_seq2string_nid= -1;
+static int signed_seq2string_nid= -1;
/* ########################################### */
int add_signed_seq2string(PKCS7_SIGNER_INFO *si, char *str1, char *str2)
{
unsigned char *p;
ASN1_OCTET_STRING *os1,*os2;
ASN1_STRING *seq;
- char *data;
+ unsigned char *data;
int i,total;
if (signed_seq2string_nid == -1)
os1=ASN1_OCTET_STRING_new();
os2=ASN1_OCTET_STRING_new();
- ASN1_OCTET_STRING_set(os1,str1,strlen(str1));
- ASN1_OCTET_STRING_set(os2,str1,strlen(str1));
+ ASN1_OCTET_STRING_set(os1,(unsigned char*)str1,strlen(str1));
+ ASN1_OCTET_STRING_set(os2,(unsigned char*)str1,strlen(str1));
i =i2d_ASN1_OCTET_STRING(os1,NULL);
i+=i2d_ASN1_OCTET_STRING(os2,NULL);
total=ASN1_object_size(1,i,V_ASN1_SEQUENCE);
return(ret);
}
-ASN1_UTCTIME *sk_get_time(STACK *sk)
+ASN1_UTCTIME *sk_get_time(STACK_OF(X509_ATTRIBUTE) *sk)
{
ASN1_TYPE *so;
- ASN1_UTCTIME *ut;
PKCS7_SIGNER_INFO si;
si.auth_attr=sk;
so=PKCS7_get_signed_attribute(&si,NID_pkcs9_signingTime);
if (so->type == V_ASN1_UTCTIME)
- {
- ut=so->value.utctime;
- }
- return(ut);
+ return so->value.utctime;
+ return NULL;
}
X509_ATTRIBUTE *create_string(char *str)
signed_string_nid=
OBJ_create("1.2.3.4.5","OID_example","Our example OID");
os=ASN1_OCTET_STRING_new();
- ASN1_OCTET_STRING_set(os,str,strlen(str));
+ ASN1_OCTET_STRING_set(os,(unsigned char*)str,strlen(str));
/* When we add, we do not free */
ret=X509_ATTRIBUTE_create(signed_string_nid,
V_ASN1_OCTET_STRING,(char *)os);
return(ret);
}
-int sk_get_string(STACK *sk, char *buf, int len)
+int sk_get_string(STACK_OF(X509_ATTRIBUTE) *sk, char *buf, int len)
{
ASN1_TYPE *so;
ASN1_OCTET_STRING *os;
ASN1_OCTET_STRING *os1,*os2;
ASN1_STRING *seq;
X509_ATTRIBUTE *ret;
- char *data;
+ unsigned char *data;
int i,total;
if (signed_seq2string_nid == -1)
os1=ASN1_OCTET_STRING_new();
os2=ASN1_OCTET_STRING_new();
- ASN1_OCTET_STRING_set(os1,str1,strlen(str1));
- ASN1_OCTET_STRING_set(os2,str1,strlen(str1));
+ ASN1_OCTET_STRING_set(os1,(unsigned char*)str1,strlen(str1));
+ ASN1_OCTET_STRING_set(os2,(unsigned char*)str1,strlen(str1));
i =i2d_ASN1_OCTET_STRING(os1,NULL);
i+=i2d_ASN1_OCTET_STRING(os2,NULL);
total=ASN1_object_size(1,i,V_ASN1_SEQUENCE);
}
/* For this case, I will malloc the return strings */
-int sk_get_seq2string(STACK *sk, char **str1, char **str2)
+int sk_get_seq2string(STACK_OF(X509_ATTRIBUTE) *sk, char **str1, char **str2)
{
ASN1_TYPE *so;
PKCS7_SIGNER_INFO si;