#include <openssl/x509v3.h>
#include <openssl/pkcs12.h>
-X509 *
+MONO_API X509 *
mono_btls_x509_from_data (const void *buf, int len, MonoBtlsX509Format format)
{
BIO *bio;
return cert;
}
-X509 *
+MONO_API X509 *
mono_btls_x509_up_ref (X509 *x509)
{
X509_up_ref (x509);
return x509;
}
-void
+MONO_API void
mono_btls_x509_free (X509 *x509)
{
X509_free (x509);
}
-X509 *
+MONO_API X509 *
mono_btls_x509_dup (X509 *x509)
{
return X509_dup (x509);
}
-MonoBtlsX509Name *
+MONO_API MonoBtlsX509Name *
mono_btls_x509_get_subject_name (X509 *x509)
{
return mono_btls_x509_name_copy (X509_get_subject_name (x509));
}
-MonoBtlsX509Name *
+MONO_API MonoBtlsX509Name *
mono_btls_x509_get_issuer_name (X509 *x509)
{
return mono_btls_x509_name_copy (X509_get_issuer_name (x509));
}
-int
+MONO_API int
mono_btls_x509_get_subject_name_string (X509 *name, char *buffer, int size)
{
*buffer = 0;
return X509_NAME_oneline (X509_get_subject_name (name), buffer, size) != NULL;
}
-int
+MONO_API int
mono_btls_x509_get_issuer_name_string (X509 *name, char *buffer, int size)
{
*buffer = 0;
return X509_NAME_oneline (X509_get_issuer_name (name), buffer, size) != NULL;
}
-int
+MONO_API int
mono_btls_x509_get_raw_data (X509 *x509, BIO *bio, MonoBtlsX509Format format)
{
switch (format) {
}
}
-int
+MONO_API int
mono_btls_x509_cmp (const X509 *a, const X509 *b)
{
return X509_cmp (a, b);
}
-int
+MONO_API int
mono_btls_x509_get_hash (X509 *x509, const void **data)
{
X509_check_purpose (x509, -1, 0);
return SHA_DIGEST_LENGTH;
}
-long
+MONO_API int64_t
mono_btls_x509_get_not_before (X509 *x509)
{
return mono_btls_util_asn1_time_to_ticks (X509_get_notBefore (x509));
}
-long
+MONO_API int64_t
mono_btls_x509_get_not_after (X509 *x509)
{
return mono_btls_util_asn1_time_to_ticks (X509_get_notAfter (x509));
}
-int
+MONO_API int
mono_btls_x509_get_public_key (X509 *x509, BIO *bio)
{
EVP_PKEY *pkey;
return ret;
}
-int
+MONO_API int
mono_btls_x509_get_serial_number (X509 *x509, char *buffer, int size, int mono_style)
{
ASN1_INTEGER *serial;
- char *pos;
+ unsigned char *temp, *p;
int len, idx;
serial = X509_get_serialNumber (x509);
return serial->length;
}
- pos = buffer;
- len = 0;
+ temp = OPENSSL_malloc (serial->length + 1);
+ if (!temp)
+ return 0;
+
+ p = temp;
+ len = i2c_ASN1_INTEGER (serial, &p);
- for (idx = serial->length - 1; idx >= 0; idx--) {
- *pos++ = serial->data [idx];
- len++;
+ if (!len) {
+ OPENSSL_free (temp);
+ return 0;
}
- if (serial->data [0] >= 0x80) {
- *pos++ = 0;
- len++;
+ for (idx = 0; idx < len; idx++) {
+ buffer [idx] = *(--p);
}
+ buffer [len] = 0;
+ OPENSSL_free (temp);
return len;
}
-int
+MONO_API int
mono_btls_x509_get_public_key_algorithm (X509 *x509, char *buffer, int size)
{
X509_PUBKEY *pkey;
return OBJ_obj2txt (buffer, size, ppkalg, 1);
}
-int
+MONO_API int
mono_btls_x509_get_version (X509 *x509)
{
return (int)X509_get_version (x509) + 1;
}
-int
+MONO_API int
mono_btls_x509_get_signature_algorithm (X509 *x509, char *buffer, int size)
{
const ASN1_OBJECT *obj;
return OBJ_obj2txt (buffer, size, obj, 1);
}
-int
+MONO_API int
mono_btls_x509_get_public_key_asn1 (X509 *x509, char *out_oid, int oid_len, uint8_t **buffer, int *size)
{
X509_PUBKEY *pkey;
}
-int
+MONO_API int
mono_btls_x509_get_public_key_parameters (X509 *x509, char *out_oid, int oid_len, uint8_t **buffer, int *size)
{
X509_PUBKEY *pkey;
}
}
-EVP_PKEY *
+MONO_API EVP_PKEY *
mono_btls_x509_get_pubkey (X509 *x509)
{
return X509_get_pubkey (x509);
}
-int
+MONO_API int
mono_btls_x509_get_subject_key_identifier (X509 *x509, uint8_t **buffer, int *size)
{
ASN1_OCTET_STRING *skid;
return 1;
}
-int
+MONO_API int
mono_btls_x509_print (X509 *x509, BIO *bio)
{
return X509_print_ex (bio, x509, XN_FLAG_COMPAT, X509_FLAG_COMPAT);
}
}
-int
+MONO_API int
mono_btls_x509_add_trust_object (X509 *x509, MonoBtlsX509Purpose purpose)
{
ASN1_OBJECT *trust;
return X509_add1_trust_object (x509, trust);
}
-int
+MONO_API int
mono_btls_x509_add_reject_object (X509 *x509, MonoBtlsX509Purpose purpose)
{
ASN1_OBJECT *reject;
return X509_add1_reject_object (x509, reject);
}
-int
+MONO_API int
mono_btls_x509_add_explicit_trust (X509 *x509, MonoBtlsX509TrustKind kind)
{
int ret = 0;