where the new functions are mentioned.
Changes between 0.9.4 and 0.9.5 [xx XXX 2000]
- *) Change function names to the new get0/get1 naming convention.
+ *) Change names of new functions to the new get1/get0 naming
+ convention: After 'get1', the caller owns a reference count
+ and has to call ..._free; 'get0' returns a pointer to some
+ data structure without incrementing reference counters.
+ (Some of the existing 'get' functions increment a reference
+ counter, some don't.)
+ Similarly, 'set1' and 'add1' functions increase reference
+ counters or duplicate objects.
[Steve Henson]
*) Allow for the possibility of temp RSA key generation failure:
*) Rewrite ssl3_read_n (ssl/s3_pkt.c) avoiding a couple of bugs.
[Bodo Moeller]
- *) New function X509_CTX_rget_chain(), this returns the chain
+ *) New function X509_CTX_rget_chain() (renamed to X509_CTX_get1_chain
+ in the 0.9.5 release), this returns the chain
from an X509_CTX structure with a dup of the stack and all
the X509 reference counts upped: so the stack will exist
after X509_CTX_cleanup() has been called. Modify pkcs12.c
it clearly returns an error if you try to read the wrong kind of key.
Added a -pubkey option to the 'x509' utility to output the public key.
- Also rename the EVP_PKEY_get_*() to EVP_PKEY_rget_*() and add
- EVP_PKEY_rset_*() functions that do the same as the EVP_PKEY_assign_*()
- except they up the reference count of the added key (they don't "swallow"
- the supplied key).
+ Also rename the EVP_PKEY_get_*() to EVP_PKEY_rget_*()
+ (renamed to EVP_PKEY_get1_*() in the OpenSSL 0.9.5 release) and add
+ EVP_PKEY_rset_*() functions (renamed to EVP_PKEY_set1_*())
+ that do the same as the EVP_PKEY_assign_*() except they up the
+ reference count of the added key (they don't "swallow" the
+ supplied key).
[Steve Henson]
*) Fixes to crypto/x509/by_file.c the code to read in certificates and
BIO_printf(bio_err, "unrecognized purpose\n");
goto end;
}
- xptmp = X509_PURPOSE_iget(i);
+ xptmp = X509_PURPOSE_get0(i);
purpose = X509_PURPOSE_get_id(xptmp);
}
else if (strcmp(*argv,"-untrusted") == 0)
BIO_printf(bio_err,"recognized usages:\n");
for(i = 0; i < X509_PURPOSE_get_count(); i++) {
X509_PURPOSE *ptmp;
- ptmp = X509_PURPOSE_iget(i);
+ ptmp = X509_PURPOSE_get0(i);
BIO_printf(bio_err, "\t%-10s\t%s\n", X509_PURPOSE_get0_sname(ptmp),
X509_PURPOSE_get0_name(ptmp));
}
}
}
- if(alias) X509_alias_rset(x, (unsigned char *)alias, -1);
+ if(alias) X509_alias_set1(x, (unsigned char *)alias, -1);
if(clrtrust) X509_trust_clear(x);
if(clrreject) X509_reject_clear(x);
else if (aliasout == i)
{
unsigned char *alstr;
- alstr = X509_alias_iget(x, NULL);
+ alstr = X509_alias_get0(x, NULL);
if(alstr) BIO_printf(STDout,"%s\n", alstr);
else BIO_puts(STDout,"<No Alias>\n");
}
BIO_printf(STDout, "Certificate purposes:\n");
for(j = 0; j < X509_PURPOSE_get_count(); j++)
{
- ptmp = X509_PURPOSE_iget(j);
+ ptmp = X509_PURPOSE_get0(j);
purpose_print(STDout, x, ptmp);
}
}
return x->aux;
}
-int X509_alias_rset(X509 *x, unsigned char *name, int len)
+int X509_alias_set1(X509 *x, unsigned char *name, int len)
{
X509_CERT_AUX *aux;
if(!(aux = aux_get(x))) return 0;
return ASN1_STRING_set(aux->alias, name, len);
}
-unsigned char *X509_alias_iget(X509 *x, int *len)
+unsigned char *X509_alias_get0(X509 *x, int *len)
{
if(!x->aux || !x->aux->alias) return NULL;
if(len) *len = x->aux->alias->length;
int i2d_X509_CERT_AUX(X509_CERT_AUX *a,unsigned char **pp);
X509_CERT_AUX * d2i_X509_CERT_AUX(X509_CERT_AUX **a,unsigned char **pp,
long length);
-int X509_alias_rset(X509 *x, unsigned char *name, int len);
-unsigned char * X509_alias_iget(X509 *x, int *len);
+int X509_alias_set1(X509 *x, unsigned char *name, int len);
+unsigned char * X509_alias_get0(X509 *x, int *len);
int (*X509_TRUST_set_default(int (*trust)(int , X509 *, int)))(int, X509 *, int);
int X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj);
int X509_add1_reject_object(X509 *x, ASN1_OBJECT *obj);
int X509_check_trust(X509 *x, int id, int flags);
int X509_TRUST_get_count(void);
-X509_TRUST * X509_TRUST_iget(int idx);
+X509_TRUST * X509_TRUST_get0(int idx);
int X509_TRUST_get_by_id(int id);
int X509_TRUST_add(int id, int flags, int (*ck)(X509_TRUST *, X509 *, int),
char *name, int arg1, void *arg2);
if(id == -1) return 1;
if(!(idx = X509_TRUST_get_by_id(id)))
return default_trust(id, x, flags);
- pt = X509_TRUST_iget(idx);
+ pt = X509_TRUST_get0(idx);
return pt->check_trust(pt, x, flags);
}
return sk_X509_TRUST_num(trtable) + X509_TRUST_COUNT;
}
-X509_TRUST * X509_TRUST_iget(int idx)
+X509_TRUST * X509_TRUST_get0(int idx)
{
if(idx < 0) return NULL;
if(idx < X509_TRUST_COUNT) return trstandard + idx;
return 0;
}
trtmp->flags = X509_TRUST_DYNAMIC;
- } else trtmp = X509_TRUST_iget(idx);
+ } else trtmp = X509_TRUST_get0(idx);
/* Free existing name if dynamic */
if(trtmp->flags & X509_TRUST_DYNAMIC_NAME) Free(trtmp->name);
/* If trust not set then get from purpose default */
if(!trust) {
X509_PURPOSE *ptmp;
- ptmp = X509_PURPOSE_iget(idx);
+ ptmp = X509_PURPOSE_get0(idx);
trust = ptmp->trust;
}
}
if(id == -1) return 1;
idx = X509_PURPOSE_get_by_id(id);
if(idx == -1) return -1;
- pt = X509_PURPOSE_iget(idx);
+ pt = X509_PURPOSE_get0(idx);
return pt->check_purpose(pt, x, ca);
}
return sk_X509_PURPOSE_num(xptable) + X509_PURPOSE_COUNT;
}
-X509_PURPOSE * X509_PURPOSE_iget(int idx)
+X509_PURPOSE * X509_PURPOSE_get0(int idx)
{
if(idx < 0) return NULL;
if(idx < X509_PURPOSE_COUNT) return xstandard + idx;
int i;
X509_PURPOSE *xptmp;
for(i = 0; i < X509_PURPOSE_get_count(); i++) {
- xptmp = X509_PURPOSE_iget(i);
+ xptmp = X509_PURPOSE_get0(i);
if(!strcmp(xptmp->sname, sname)) return i;
}
return -1;
return 0;
}
ptmp->flags = X509_PURPOSE_DYNAMIC;
- } else ptmp = X509_PURPOSE_iget(idx);
+ } else ptmp = X509_PURPOSE_get0(idx);
/* Free existing name if dynamic */
if(ptmp->flags & X509_PURPOSE_DYNAMIC_NAME) {
int X509_check_purpose(X509 *x, int id, int ca);
int X509_PURPOSE_get_count(void);
-X509_PURPOSE * X509_PURPOSE_iget(int idx);
+X509_PURPOSE * X509_PURPOSE_get0(int idx);
int X509_PURPOSE_get_by_sname(char *sname);
int X509_PURPOSE_get_by_id(int id);
int X509_PURPOSE_add(int id, int trust, int flags,
X509_NAME_add_entry_by_txt 1912
sk_X509_TRUST_pop 1913
X509_NAME_add_entry_by_NID 1914
-X509_PURPOSE_iget 1915
+X509_PURPOSE_get0 1915
sk_ACCESS_DESCRIPTION_shift 1916
PEM_read_X509_AUX 1917
d2i_AUTHORITY_INFO_ACCESS 1918
sk_X509_PURPOSE_zero 1930
X509_TRUST_add 1931
ASN1_VISIBLESTRING_new 1932
-X509_alias_rset 1933
+X509_alias_set1 1933
ASN1_PRINTABLESTRING_free 1934
EVP_PKEY_get1_DSA 1935
ASN1_BMPSTRING_new 1936
d2i_RSA_PUBKEY 2044
sk_ASN1_STRING_TABLE_set 2045
X509_TRUST_get0_name 2046
-X509_TRUST_iget 2047
+X509_TRUST_get0 2047
AUTHORITY_INFO_ACCESS_free 2048
ASN1_IA5STRING_new 2049
d2i_DSA_PUBKEY 2050
X509_NAME_ENTRY_create_by_txt 2071
ASN1_STRING_get_default_mask 2072
sk_X509_TRUST_dup 2073
-X509_alias_iget 2074
+X509_alias_get0 2074
ASN1_STRING_data 2075
sk_X509_TRUST_insert 2076
i2d_ACCESS_DESCRIPTION 2077