Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9c64d590 authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change 23425 into eclair

* changes:
  Store CA certificate chain into one single key entry with PEM format.
parents 9b6a8ab8 09960230
Loading
Loading
Loading
Loading
+3 −9
Original line number Diff line number Diff line
@@ -163,17 +163,11 @@ public class CertTool {
                return ret;
            }
        }
        while ((pemData = this.popPkcs12CertificateStack(handle)) != null) {
            if (i++ > 0) {
                if ((ret = sKeystore.put(CA_CERTIFICATE, keyname + i, pemData)) != 0) {
                    return ret;
                }
            } else {
        if ((pemData = this.popPkcs12CertificateStack(handle)) != null) {
            if ((ret = sKeystore.put(CA_CERTIFICATE, keyname, pemData)) != 0) {
                return ret;
            }
        }
        }
        return 0;
    }

+14 −8
Original line number Diff line number Diff line
@@ -212,13 +212,14 @@ static int convert_to_pem(void *data, int is_cert, char *buf, int size)
    }
err:
    if (bio) BIO_free(bio);
    return (len == 0) ? -1 : 0;
    return len;
}

int get_pkcs12_certificate(PKCS12_KEYSTORE *p12store, char *buf, int size)
{
    if ((p12store != NULL) && (p12store->cert != NULL)) {
        return convert_to_pem((void*)p12store->cert, 1, buf, size);
        int len = convert_to_pem((void*)p12store->cert, 1, buf, size);
        return (len == 0) ? -1 : 0;
    }
    return -1;
}
@@ -226,7 +227,8 @@ int get_pkcs12_certificate(PKCS12_KEYSTORE *p12store, char *buf, int size)
int get_pkcs12_private_key(PKCS12_KEYSTORE *p12store, char *buf, int size)
{
    if ((p12store != NULL) && (p12store->pkey != NULL)) {
        return convert_to_pem((void*)p12store->pkey, 0, buf, size);
        int len = convert_to_pem((void*)p12store->pkey, 0, buf, size);
        return (len == 0) ? -1 : 0;
    }
    return -1;
}
@@ -234,12 +236,16 @@ int get_pkcs12_private_key(PKCS12_KEYSTORE *p12store, char *buf, int size)
int pop_pkcs12_certs_stack(PKCS12_KEYSTORE *p12store, char *buf, int size)
{
    X509 *cert = NULL;
    int len = 0;

    if ((p12store != NULL) && (p12store->certs != NULL) &&
        ((cert = sk_X509_pop(p12store->certs)) != NULL)) {
        int ret = convert_to_pem((void*)cert, 1, buf, size);
    if ((p12store != NULL) && (p12store->certs != NULL)) {
        while (((cert = sk_X509_pop(p12store->certs)) != NULL) && (len < size)) {
            int s = convert_to_pem((void*)cert, 1, buf + len, size - len);
            if (s == 0) return -1;
            len += s;
            X509_free(cert);
        return ret;
        }
        return (len == 0) ? -1 : 0;
    }
    return -1;
}