OLD | NEW |
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ | 1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ |
2 /* | 2 /* |
3 * SSL3 Protocol | 3 * SSL3 Protocol |
4 * | 4 * |
5 * This Source Code Form is subject to the terms of the Mozilla Public | 5 * This Source Code Form is subject to the terms of the Mozilla Public |
6 * License, v. 2.0. If a copy of the MPL was not distributed with this | 6 * License, v. 2.0. If a copy of the MPL was not distributed with this |
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | 7 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
8 | 8 |
9 /* TODO(ekr): Implement HelloVerifyRequest on server side. OK for now. */ | 9 /* TODO(ekr): Implement HelloVerifyRequest on server side. OK for now. */ |
10 | 10 |
(...skipping 6928 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6939 | 6939 |
6940 case kt_dh: { | 6940 case kt_dh: { |
6941 SECItem dh_p = {siBuffer, NULL, 0}; | 6941 SECItem dh_p = {siBuffer, NULL, 0}; |
6942 SECItem dh_g = {siBuffer, NULL, 0}; | 6942 SECItem dh_g = {siBuffer, NULL, 0}; |
6943 SECItem dh_Ys = {siBuffer, NULL, 0}; | 6943 SECItem dh_Ys = {siBuffer, NULL, 0}; |
6944 | 6944 |
6945 rv = ssl3_ConsumeHandshakeVariable(ss, &dh_p, 2, &b, &length); | 6945 rv = ssl3_ConsumeHandshakeVariable(ss, &dh_p, 2, &b, &length); |
6946 if (rv != SECSuccess) { | 6946 if (rv != SECSuccess) { |
6947 goto loser; /* malformed. */ | 6947 goto loser; /* malformed. */ |
6948 } | 6948 } |
6949 » if (dh_p.len < 512/8) { | 6949 » if (dh_p.len < 1024/8 || |
| 6950 » (dh_p.len == 1024/8 && (dh_p.data[0] & 0x80) == 0)) { |
6950 errCode = SSL_ERROR_WEAK_SERVER_EPHEMERAL_DH_KEY; | 6951 errCode = SSL_ERROR_WEAK_SERVER_EPHEMERAL_DH_KEY; |
6951 goto alert_loser; | 6952 goto alert_loser; |
6952 } | 6953 } |
6953 rv = ssl3_ConsumeHandshakeVariable(ss, &dh_g, 2, &b, &length); | 6954 rv = ssl3_ConsumeHandshakeVariable(ss, &dh_g, 2, &b, &length); |
6954 if (rv != SECSuccess) { | 6955 if (rv != SECSuccess) { |
6955 goto loser; /* malformed. */ | 6956 goto loser; /* malformed. */ |
6956 } | 6957 } |
6957 if (dh_g.len > dh_p.len || !ssl3_BigIntGreaterThanOne(&dh_g)) | 6958 if (dh_g.len > dh_p.len || !ssl3_BigIntGreaterThanOne(&dh_g)) |
6958 goto alert_loser; | 6959 goto alert_loser; |
6959 rv = ssl3_ConsumeHandshakeVariable(ss, &dh_Ys, 2, &b, &length); | 6960 rv = ssl3_ConsumeHandshakeVariable(ss, &dh_Ys, 2, &b, &length); |
(...skipping 5928 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12888 PORT_Free(ss->ssl3.hs.recvdFragments.buf); | 12889 PORT_Free(ss->ssl3.hs.recvdFragments.buf); |
12889 } | 12890 } |
12890 } | 12891 } |
12891 | 12892 |
12892 ss->ssl3.initialized = PR_FALSE; | 12893 ss->ssl3.initialized = PR_FALSE; |
12893 | 12894 |
12894 SECITEM_FreeItem(&ss->ssl3.nextProto, PR_FALSE); | 12895 SECITEM_FreeItem(&ss->ssl3.nextProto, PR_FALSE); |
12895 } | 12896 } |
12896 | 12897 |
12897 /* End of ssl3con.c */ | 12898 /* End of ssl3con.c */ |
OLD | NEW |