De volledige code staat hier:
http://opensource.apple.c.../lib/sslKeyExchange.c?txt
Zoek naar de regels waar er staat:
Hele stuk:
Het slaat de check over of het certificaat wel bij de private key hoort. Dit is het fundament waarop het SSL stukje berust of je wel met de eigenaar van het certificaat een verbinding hebt opgezet.
Meer uitleg plus test server hier (Adam Langley van Google):
https://www.imperialviolet.org/2014/02/22/applebug.html
http://opensource.apple.c.../lib/sslKeyExchange.c?txt
Zoek naar de regels waar er staat:
code:
1
2
| goto fail; goto fail; |
Hele stuk:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| hashOut.length = SSL_SHA1_DIGEST_LEN;
if ((err = SSLFreeBuffer(&hashCtx)) != 0)
goto fail;
if ((err = ReadyHash(&SSLHashSHA1, &hashCtx)) != 0)
goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &clientRandom)) != 0)
goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
goto fail;
if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
goto fail;
goto fail;
if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
goto fail;
err = sslRawVerify(ctx,
ctx->peerPubKey,
dataToSign, /* plaintext */
dataToSignLen, /* plaintext length */
signature,
signatureLen);
if(err) {
sslErrorLog("SSLDecodeSignedServerKeyExchange: sslRawVerify "
"returned %d\n", (int)err);
goto fail;
}
fail:
SSLFreeBuffer(&signedHashes);
SSLFreeBuffer(&hashCtx);
return err;
} |
Het slaat de check over of het certificaat wel bij de private key hoort. Dit is het fundament waarop het SSL stukje berust of je wel met de eigenaar van het certificaat een verbinding hebt opgezet.
Meer uitleg plus test server hier (Adam Langley van Google):
https://www.imperialviolet.org/2014/02/22/applebug.html
I've visited the Mothership @ Cupertino