Skip to content

Commit 58ab927

Browse files
Merge pull request #163 from alexanderjordanbaker/RetryableVerificaionFailure
Adding RETRYABLE_VERIFICATION_FAILURE for OCSP network failures
2 parents 683c818 + 57073e1 commit 58ab927

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

appstoreserverlibrary/signed_data_verifier.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -244,12 +244,18 @@ def check_ocsp_status(self, cert: crypto.X509, issuer: crypto.X509, root: crypto
244244
)
245245
ocsps = [val for val in authority_values if val.access_method == x509.oid.AuthorityInformationAccessOID.OCSP]
246246
for o in ocsps:
247-
r = requests.post(
248-
o.access_location.value,
249-
headers={"Content-Type": "application/ocsp-request"},
250-
data=req.public_bytes(serialization.Encoding.DER),
251-
)
252-
if r.status_code == 200:
247+
try:
248+
r = requests.post(
249+
o.access_location.value,
250+
headers={"Content-Type": "application/ocsp-request"},
251+
data=req.public_bytes(serialization.Encoding.DER),
252+
timeout=30,
253+
)
254+
except (requests.exceptions.RequestException, OSError) as e:
255+
raise VerificationException(VerificationStatus.RETRYABLE_VERIFICATION_FAILURE) from e
256+
if r.status_code != 200:
257+
raise VerificationException(VerificationStatus.RETRYABLE_VERIFICATION_FAILURE)
258+
else:
253259
ocsp_resp = ocsp.load_der_ocsp_response(r.content)
254260
if ocsp_resp.response_status == ocsp.OCSPResponseStatus.SUCCESSFUL:
255261
certs = [issuer]
@@ -352,6 +358,7 @@ class VerificationStatus(IntEnum):
352358
INVALID_CHAIN_LENGTH = 4
353359
INVALID_CHAIN = 5
354360
INVALID_ENVIRONMENT = 6
361+
RETRYABLE_VERIFICATION_FAILURE = 7
355362

356363

357364
class VerificationException(Exception):

0 commit comments

Comments
 (0)