@@ -80,20 +80,20 @@ func (h *ConfidentialChatCompletionsHandler) Handle(w http.ResponseWriter, r *ht
8080 w .Header ().Set ("Cache-Control" , "no-store, no-transform" )
8181
8282 if r .Body == nil || r .Body == http .NoBody || r .ContentLength == 0 {
83- WriteErrorWithLog (w , r , h .logger , domain .ErrInvalidField ("confidential request body is required" ))
83+ rejectRequest (w , r , h .logger , domain . EndpointChatCompletions , domain .ErrInvalidField ("confidential request body is required" ))
8484 return
8585 }
8686 encapsulatedKeys := r .Header .Values (protocol .EncapsulatedKeyHeader )
8787 if len (encapsulatedKeys ) == 0 {
88- WriteErrorWithLog (w , r , h .logger , domain .ErrInvalidField ("confidential endpoint requires an EHBP-encrypted body" ))
88+ rejectRequest (w , r , h .logger , domain . EndpointChatCompletions , domain .ErrInvalidField ("confidential endpoint requires an EHBP-encrypted body" ))
8989 return
9090 }
9191 if len (encapsulatedKeys ) != 1 || ! isCanonicalEHBPKey (encapsulatedKeys [0 ]) {
92- WriteErrorWithLog (w , r , h .logger , domain .ErrInvalidField ("invalid EHBP encapsulated key header" ))
92+ rejectRequest (w , r , h .logger , domain . EndpointChatCompletions , domain .ErrInvalidField ("invalid EHBP encapsulated key header" ))
9393 return
9494 }
9595 if r .ContentLength > confidentialMaxEHBPBody {
96- WriteErrorWithLog (w , r , h .logger , domain .ErrInvalidField ("encrypted request body exceeds the maximum size" ))
96+ rejectRequest (w , r , h .logger , domain . EndpointChatCompletions , domain .ErrInvalidField ("encrypted request body exceeds the maximum size" ))
9797 return
9898 }
9999
@@ -118,47 +118,48 @@ func isCanonicalEHBPKey(encoded string) bool {
118118func (h * ConfidentialChatCompletionsHandler ) handleDecrypted (w http.ResponseWriter , r * http.Request ) {
119119 body , err := io .ReadAll (io .LimitReader (r .Body , confidentialEnvelopeLimit + 1 ))
120120 if err != nil {
121- WriteErrorWithLog (w , r , h .logger , domain .ErrInvalidField ("failed to read confidential request" ))
121+ rejectRequest (w , r , h .logger , domain . EndpointChatCompletions , domain .ErrInvalidField ("failed to read confidential request" ))
122122 return
123123 }
124124 if len (body ) > confidentialEnvelopeLimit {
125- WriteErrorWithLog (w , r , h .logger , domain .ErrInvalidField ("confidential request body exceeds the maximum size" ))
125+ rejectRequest (w , r , h .logger , domain . EndpointChatCompletions , domain .ErrInvalidField ("confidential request body exceeds the maximum size" ))
126126 return
127127 }
128128
129129 envelope , err := decodeConfidentialEnvelope (body )
130130 if err != nil {
131- WriteErrorWithLog (w , r , h .logger , domain .ErrInvalidField (err .Error ()))
131+ rejectRequest (w , r , h .logger , domain . EndpointChatCompletions , domain .ErrInvalidField (err .Error ()))
132132 return
133133 }
134134
135135 now := h .now ().UTC ()
136136 issuedAt , err := time .Parse (time .RFC3339 , envelope .IssuedAt )
137137 if err != nil {
138- WriteErrorWithLog (w , r , h .logger , domain .ErrInvalidField ("issued_at must be an RFC3339 timestamp" ))
138+ rejectRequest (w , r , h .logger , domain . EndpointChatCompletions , domain .ErrInvalidField ("issued_at must be an RFC3339 timestamp" ))
139139 return
140140 }
141141 if issuedAt .Before (now .Add (- confidentialMaxAge )) {
142- WriteErrorWithLog (w , r , h .logger , domain .ErrInvalidField ("confidential request is stale" ))
142+ rejectRequest (w , r , h .logger , domain . EndpointChatCompletions , domain .ErrInvalidField ("confidential request is stale" ))
143143 return
144144 }
145145 if issuedAt .After (now .Add (confidentialFutureSkew )) {
146- WriteErrorWithLog (w , r , h .logger , domain .ErrInvalidField ("confidential request timestamp is in the future" ))
146+ rejectRequest (w , r , h .logger , domain . EndpointChatCompletions , domain .ErrInvalidField ("confidential request timestamp is in the future" ))
147147 return
148148 }
149149
150150 parsedID , err := uuid .Parse (envelope .RequestID )
151151 if err != nil || parsedID == uuid .Nil || parsedID .String () != envelope .RequestID {
152- WriteErrorWithLog (w , r , h .logger , domain .ErrInvalidField ("request_id must be a canonical UUID" ))
152+ rejectRequest (w , r , h .logger , domain . EndpointChatCompletions , domain .ErrInvalidField ("request_id must be a canonical UUID" ))
153153 return
154154 }
155155
156156 switch h .replays .checkAndStore (envelope .RequestID , now ) {
157157 case replayDuplicate :
158- WriteErrorWithLog (w , r , h .logger , domain .ErrConflict ("confidential request was already processed" ))
158+ rejectRequest (w , r , h .logger , domain . EndpointChatCompletions , domain .ErrConflict ("confidential request was already processed" ))
159159 return
160160 case replayCapacityReached :
161- WriteErrorWithLog (w , r , h .logger , domain .ErrProviderUnavailable ("confidential replay protection" ))
161+ rejectRequest (w , r , h .logger , domain .EndpointChatCompletions , domain .ErrProviderUnavailable ("confidential replay protection" ).WithMeta (
162+ "fault" , domain .FaultNexus , "dependency" , "replay_store" , "cause" , domain .CauseReplayStoreFull ))
162163 return
163164 }
164165
0 commit comments