Commit a0754084 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Corrupt signature in place.

parent 79613ea8
Loading
Loading
Loading
Loading
+3 −10
Original line number Diff line number Diff line
@@ -2583,15 +2583,8 @@ int has_stdin_waiting(void)
#endif

/* Corrupt a signature by modifying final byte */
int corrupt_signature(ASN1_STRING *signature)
void corrupt_signature(const ASN1_STRING *signature)
{
        unsigned char *s;
        size_t slen = ASN1_STRING_length(signature);

        s = OPENSSL_memdup(ASN1_STRING_get0_data(signature), slen);
        if (s == NULL)
            return 0;
        s[slen - 1] ^= 0x1;
        ASN1_STRING_set0(signature, s, slen);
        return 1;
        unsigned char *s = signature->data;
        s[signature->length - 1] ^= 0x1;
}
+1 −1
Original line number Diff line number Diff line
@@ -71,7 +71,7 @@ void wait_for_async(SSL *s);
int has_stdin_waiting(void);
# endif

int corrupt_signature(ASN1_STRING *signature);
void corrupt_signature(const ASN1_STRING *signature);

/*
 * Common verification options.
+1 −2
Original line number Diff line number Diff line
@@ -253,8 +253,7 @@ int crl_main(int argc, char **argv)
        ASN1_BIT_STRING *sig;

        X509_CRL_get0_signature(&sig, NULL, x);
        if (!corrupt_signature(sig))
            goto end;
        corrupt_signature(sig);
    }

    if (num) {
+2 −3
Original line number Diff line number Diff line
@@ -950,9 +950,8 @@ static void make_ocsp_response(OCSP_RESPONSE **resp, OCSP_REQUEST *req,
    OCSP_basic_sign(bs, rcert, rkey, rmd, rother, flags);

    if (badsig) {
        ASN1_OCTET_STRING *sig = OCSP_resp_get0_signature(bs);
        if (!corrupt_signature(sig))
            goto end;
        const ASN1_OCTET_STRING *sig = OCSP_resp_get0_signature(bs);
        corrupt_signature(sig);
    }

    *resp = OCSP_response_create(OCSP_RESPONSE_STATUS_SUCCESSFUL, bs);
+1 −2
Original line number Diff line number Diff line
@@ -606,8 +606,7 @@ int x509_main(int argc, char **argv)
    if (badsig) {
        ASN1_BIT_STRING *signature;
        X509_get0_signature(&signature, NULL, x);
        if (!corrupt_signature(signature))
            goto end;
        corrupt_signature(signature);
    }

    if (num) {