aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/evp/evp_pkey.c
diff options
context:
space:
mode:
authorBen Laurie <ben@openssl.org>2000-05-16 23:01:19 +0000
committerBen Laurie <ben@openssl.org>2000-05-16 23:01:19 +0000
commit371acb22e68ff23128485ce134a9931de889e719 (patch)
treed69e9633373dc07fe39e8e07a0dceef7ec3aa4d8 /crypto/evp/evp_pkey.c
parent5de603abc8fe6fedca529ce58d3741b50ff99592 (diff)
downloadopenssl-371acb22e68ff23128485ce134a9931de889e719.tar.gz
Typesafe Thought Police part 4.
Diffstat (limited to 'crypto/evp/evp_pkey.c')
-rw-r--r--crypto/evp/evp_pkey.c45
1 files changed, 23 insertions, 22 deletions
diff --git a/crypto/evp/evp_pkey.c b/crypto/evp/evp_pkey.c
index aada99f747..892d1e91da 100644
--- a/crypto/evp/evp_pkey.c
+++ b/crypto/evp/evp_pkey.c
@@ -76,7 +76,7 @@ EVP_PKEY *EVP_PKCS82PKEY (PKCS8_PRIV_KEY_INFO *p8)
DSA *dsa = NULL;
ASN1_INTEGER *privkey;
ASN1_TYPE *t1, *t2, *param = NULL;
- STACK *ndsa = NULL;
+ STACK_OF(ASN1_TYPE) *ndsa = NULL;
BN_CTX *ctx = NULL;
int plen;
#endif
@@ -119,13 +119,13 @@ EVP_PKEY *EVP_PKCS82PKEY (PKCS8_PRIV_KEY_INFO *p8)
/* Check for broken DSA PKCS#8, UGH! */
if(*p == (V_ASN1_SEQUENCE|V_ASN1_CONSTRUCTED)) {
- if(!(ndsa = ASN1_seq_unpack(p, pkeylen,
- (char *(*)())d2i_ASN1_TYPE,
- ASN1_TYPE_free))) {
+ if(!(ndsa = ASN1_seq_unpack_ASN1_TYPE(p, pkeylen,
+ d2i_ASN1_TYPE,
+ ASN1_TYPE_free))) {
EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);
goto dsaerr;
}
- if(sk_num(ndsa) != 2 ) {
+ if(sk_ASN1_TYPE_num(ndsa) != 2 ) {
EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);
goto dsaerr;
}
@@ -134,8 +134,8 @@ EVP_PKEY *EVP_PKCS82PKEY (PKCS8_PRIV_KEY_INFO *p8)
* SEQUENCE {pub_key, priv_key}
*/
- t1 = (ASN1_TYPE *)sk_value(ndsa, 0);
- t2 = (ASN1_TYPE *)sk_value(ndsa, 1);
+ t1 = sk_ASN1_TYPE_value(ndsa, 0);
+ t2 = sk_ASN1_TYPE_value(ndsa, 1);
if(t1->type == V_ASN1_SEQUENCE) {
p8->broken = PKCS8_EMBEDDED_PARAM;
param = t1;
@@ -193,12 +193,12 @@ EVP_PKEY *EVP_PKCS82PKEY (PKCS8_PRIV_KEY_INFO *p8)
EVP_PKEY_assign_DSA(pkey, dsa);
BN_CTX_free (ctx);
- if(ndsa) sk_pop_free(ndsa, (void(*)(void *)) ASN1_TYPE_free);
+ if(ndsa) sk_ASN1_TYPE_pop_free(ndsa, ASN1_TYPE_free);
else ASN1_INTEGER_free(privkey);
break;
dsaerr:
BN_CTX_free (ctx);
- sk_pop_free(ndsa, (void(*)(void *)) ASN1_TYPE_free);
+ sk_ASN1_TYPE_pop_free(ndsa, ASN1_TYPE_free);
DSA_free(dsa);
EVP_PKEY_free(pkey);
return NULL;
@@ -302,9 +302,10 @@ static int dsa_pkey2pkcs8(PKCS8_PRIV_KEY_INFO *p8, EVP_PKEY *pkey)
ASN1_STRING *params;
ASN1_INTEGER *prkey;
ASN1_TYPE *ttmp;
- STACK *ndsa;
+ STACK_OF(ASN1_TYPE) *ndsa;
unsigned char *p, *q;
int len;
+
p8->pkeyalg->algorithm = OBJ_nid2obj(NID_dsa);
len = i2d_DSAparams (pkey->pkey.dsa, NULL);
if (!(p = Malloc(len))) {
@@ -345,7 +346,7 @@ static int dsa_pkey2pkcs8(PKCS8_PRIV_KEY_INFO *p8, EVP_PKEY *pkey)
p8->pkeyalg->parameter->value.sequence = params;
p8->pkeyalg->parameter->type = V_ASN1_SEQUENCE;
- ndsa = sk_new_null();
+ ndsa = sk_ASN1_TYPE_new_null();
ttmp = ASN1_TYPE_new();
if (!(ttmp->value.integer = BN_to_ASN1_INTEGER (pkey->pkey.dsa->pub_key, NULL))) {
EVPerr(EVP_F_EVP_PKEY2PKCS8,EVP_R_ENCODE_ERROR);
@@ -353,53 +354,53 @@ static int dsa_pkey2pkcs8(PKCS8_PRIV_KEY_INFO *p8, EVP_PKEY *pkey)
return 0;
}
ttmp->type = V_ASN1_INTEGER;
- sk_push(ndsa, (char *)ttmp);
+ sk_ASN1_TYPE_push(ndsa, ttmp);
ttmp = ASN1_TYPE_new();
ttmp->value.integer = prkey;
ttmp->type = V_ASN1_INTEGER;
- sk_push(ndsa, (char *)ttmp);
+ sk_ASN1_TYPE_push(ndsa, ttmp);
p8->pkey->value.octet_string = ASN1_OCTET_STRING_new();
- if (!ASN1_seq_pack(ndsa, i2d_ASN1_TYPE,
+ if (!ASN1_seq_pack_ASN1_TYPE(ndsa, i2d_ASN1_TYPE,
&p8->pkey->value.octet_string->data,
&p8->pkey->value.octet_string->length)) {
EVPerr(EVP_F_EVP_PKEY2PKCS8,ERR_R_MALLOC_FAILURE);
- sk_pop_free(ndsa, (void(*)(void *)) ASN1_TYPE_free);
+ sk_ASN1_TYPE_pop_free(ndsa, ASN1_TYPE_free);
M_ASN1_INTEGER_free(prkey);
return 0;
}
- sk_pop_free(ndsa, (void(*)(void *)) ASN1_TYPE_free);
+ sk_ASN1_TYPE_pop_free(ndsa, ASN1_TYPE_free);
break;
case PKCS8_EMBEDDED_PARAM:
p8->pkeyalg->parameter->type = V_ASN1_NULL;
- ndsa = sk_new_null();
+ ndsa = sk_ASN1_TYPE_new_null();
ttmp = ASN1_TYPE_new();
ttmp->value.sequence = params;
ttmp->type = V_ASN1_SEQUENCE;
- sk_push(ndsa, (char *)ttmp);
+ sk_ASN1_TYPE_push(ndsa, ttmp);
ttmp = ASN1_TYPE_new();
ttmp->value.integer = prkey;
ttmp->type = V_ASN1_INTEGER;
- sk_push(ndsa, (char *)ttmp);
+ sk_ASN1_TYPE_push(ndsa, ttmp);
p8->pkey->value.octet_string = ASN1_OCTET_STRING_new();
- if (!ASN1_seq_pack(ndsa, i2d_ASN1_TYPE,
+ if (!ASN1_seq_pack_ASN1_TYPE(ndsa, i2d_ASN1_TYPE,
&p8->pkey->value.octet_string->data,
&p8->pkey->value.octet_string->length)) {
EVPerr(EVP_F_EVP_PKEY2PKCS8,ERR_R_MALLOC_FAILURE);
- sk_pop_free(ndsa, (void(*)(void *)) ASN1_TYPE_free);
+ sk_ASN1_TYPE_pop_free(ndsa, ASN1_TYPE_free);
M_ASN1_INTEGER_free (prkey);
return 0;
}
- sk_pop_free(ndsa, (void(*)(void *)) ASN1_TYPE_free);
+ sk_ASN1_TYPE_pop_free(ndsa, ASN1_TYPE_free);
break;
}
return 1;