@@ -159,8 +159,7 @@ static SecureMimeTestsBase ()
159
159
160
160
if ( smime . EmailAddress . Equals ( "[email protected] " , StringComparison . OrdinalIgnoreCase ) ) {
161
161
RevokedCertificate = smime ;
162
- }
163
- else if ( smime . EmailAddress . Equals ( "[email protected] " , StringComparison . OrdinalIgnoreCase ) ) {
162
+ } else if ( smime . EmailAddress . Equals ( "[email protected] " , StringComparison . OrdinalIgnoreCase ) ) {
164
163
RevokedNoChainCertificate = smime ;
165
164
} else if ( smime . PublicKeyAlgorithm == PublicKeyAlgorithm . RsaGeneral ) {
166
165
if ( ! string . IsNullOrEmpty ( smime . EmailAddress ) )
@@ -202,6 +201,8 @@ static SecureMimeTestsBase ()
202
201
203
202
if ( smime . EmailAddress . Equals ( "[email protected] " , StringComparison . OrdinalIgnoreCase ) ) {
204
203
RevokedCertificate = smime ;
204
+ } else if ( smime . EmailAddress . Equals ( "[email protected] " , StringComparison . OrdinalIgnoreCase ) ) {
205
+ RevokedNoChainCertificate = smime ;
205
206
} else if ( smime . PublicKeyAlgorithm == PublicKeyAlgorithm . RsaGeneral ) {
206
207
if ( ! string . IsNullOrEmpty ( smime . EmailAddress ) )
207
208
RsaCertificate = smime ;
@@ -240,7 +241,8 @@ static SecureMimeTestsBase ()
240
241
CurrentCrls = new X509Crl [ ] {
241
242
X509CrlGenerator . Generate ( RootCertificate , RootKey , yesterday , threeMonthsFromNow ) ,
242
243
X509CrlGenerator . Generate ( IntermediateCertificate1 , IntermediateKey1 , yesterday , threeMonthsFromNow ) ,
243
- X509CrlGenerator . Generate ( IntermediateCertificate2 , IntermediateKey2 , yesterday , threeMonthsFromNow , RevokedCertificate . Certificate )
244
+ X509CrlGenerator . Generate ( IntermediateCertificate2 , IntermediateKey2 , yesterday , threeMonthsFromNow , RevokedCertificate . Certificate ) ,
245
+ X509CrlGenerator . Generate ( IntermediateCertificate2 , IntermediateKey2 , yesterday , threeMonthsFromNow , RevokedNoChainCertificate . Certificate )
244
246
} ;
245
247
246
248
CrlRequestUris = new Uri [ ] {
@@ -250,9 +252,9 @@ static SecureMimeTestsBase ()
250
252
} ;
251
253
}
252
254
253
- protected static Mock < HttpMessageHandler > CreateMockHttpMessageHandler ( )
255
+ protected static HttpResponseMessage [ ] RevokedCertificateResponses ( )
254
256
{
255
- var responses = new HttpResponseMessage [ ] {
257
+ return new HttpResponseMessage [ ] {
256
258
new HttpResponseMessage ( HttpStatusCode . OK ) {
257
259
Content = new ByteArrayContent ( CurrentCrls [ 0 ] . GetEncoded ( ) )
258
260
} ,
@@ -263,7 +265,25 @@ protected static Mock<HttpMessageHandler> CreateMockHttpMessageHandler ()
263
265
Content = new ByteArrayContent ( CurrentCrls [ 2 ] . GetEncoded ( ) )
264
266
}
265
267
} ;
268
+ }
266
269
270
+ protected static HttpResponseMessage [ ] RevokedNoChainCertificateResponses ( )
271
+ {
272
+ return new HttpResponseMessage [ ] {
273
+ new HttpResponseMessage ( HttpStatusCode . OK ) {
274
+ Content = new ByteArrayContent ( CurrentCrls [ 0 ] . GetEncoded ( ) )
275
+ } ,
276
+ new HttpResponseMessage ( HttpStatusCode . OK ) {
277
+ Content = new ByteArrayContent ( CurrentCrls [ 1 ] . GetEncoded ( ) )
278
+ } ,
279
+ new HttpResponseMessage ( HttpStatusCode . OK ) {
280
+ Content = new ByteArrayContent ( CurrentCrls [ 3 ] . GetEncoded ( ) )
281
+ }
282
+ } ;
283
+ }
284
+
285
+ protected static Mock < HttpMessageHandler > CreateMockHttpMessageHandler ( HttpResponseMessage [ ] responses )
286
+ {
267
287
var mockHttpMessageHandler = new Mock < HttpMessageHandler > ( MockBehavior . Strict ) ;
268
288
269
289
for ( int i = 0 ; i < CrlRequestUris . Length ; i ++ ) {
@@ -3164,7 +3184,7 @@ public MyTemporarySecureMimeContext (Mock<HttpMessageHandler>? mockHttpMessageHa
3164
3184
{
3165
3185
CheckCertificateRevocation = false ;
3166
3186
3167
- MockHttpMessageHandler = mockHttpMessageHandler ?? CreateMockHttpMessageHandler ( ) ;
3187
+ MockHttpMessageHandler = mockHttpMessageHandler ?? CreateMockHttpMessageHandler ( RevokedCertificateResponses ( ) ) ;
3168
3188
client = new HttpClient ( MockHttpMessageHandler . Object ) ;
3169
3189
}
3170
3190
@@ -3201,13 +3221,13 @@ public void TestVerifyRevokedCertificate ()
3201
3221
VerifyRevokedCertificate ( ctx , ctx . MockHttpMessageHandler , RevokedCertificate , true ) ;
3202
3222
}
3203
3223
3204
- using ( var ctx = new MyTemporarySecureMimeContext ( ) ) {
3224
+ using ( var ctx = new MyTemporarySecureMimeContext ( CreateMockHttpMessageHandler ( RevokedNoChainCertificateResponses ( ) ) ) ) {
3205
3225
ImportTestCertificates ( ctx ) ;
3206
3226
3207
3227
VerifyRevokedCertificate ( ctx , ctx . MockHttpMessageHandler , RevokedNoChainCertificate , false ) ;
3208
3228
}
3209
3229
3210
- using ( var ctx = new MyTemporarySecureMimeContext ( ) ) {
3230
+ using ( var ctx = new MyTemporarySecureMimeContext ( CreateMockHttpMessageHandler ( RevokedNoChainCertificateResponses ( ) ) ) ) {
3211
3231
ImportTestCertificates ( ctx ) ;
3212
3232
3213
3233
VerifyRevokedCertificate ( ctx , ctx . MockHttpMessageHandler , RevokedNoChainCertificate , true ) ;
@@ -3229,13 +3249,13 @@ public async Task TestVerifyRevokedCertificateAsync ()
3229
3249
await VerifyRevokedCertificateAsync ( ctx , ctx . MockHttpMessageHandler , RevokedCertificate , true ) ;
3230
3250
}
3231
3251
3232
- using ( var ctx = new MyTemporarySecureMimeContext ( ) ) {
3252
+ using ( var ctx = new MyTemporarySecureMimeContext ( CreateMockHttpMessageHandler ( RevokedNoChainCertificateResponses ( ) ) ) ) {
3233
3253
ImportTestCertificates ( ctx ) ;
3234
-
3254
+
3235
3255
await VerifyRevokedCertificateAsync ( ctx , ctx . MockHttpMessageHandler , RevokedNoChainCertificate , false ) ;
3236
3256
}
3237
3257
3238
- using ( var ctx = new MyTemporarySecureMimeContext ( ) ) {
3258
+ using ( var ctx = new MyTemporarySecureMimeContext ( CreateMockHttpMessageHandler ( RevokedNoChainCertificateResponses ( ) ) ) ) {
3239
3259
ImportTestCertificates ( ctx ) ;
3240
3260
3241
3261
await VerifyRevokedCertificateAsync ( ctx , ctx . MockHttpMessageHandler , RevokedNoChainCertificate , true ) ;
@@ -3341,11 +3361,11 @@ public MySecureMimeContext () : this ("smime.db", "no.secret")
3341
3361
{
3342
3362
}
3343
3363
3344
- public MySecureMimeContext ( string database , string password ) : base ( database , password )
3364
+ public MySecureMimeContext ( string database , string password , Mock < HttpMessageHandler > ? mockHttpMessageHandler = null ) : base ( database , password )
3345
3365
{
3346
3366
CheckCertificateRevocation = false ;
3347
3367
3348
- MockHttpMessageHandler = CreateMockHttpMessageHandler ( ) ;
3368
+ MockHttpMessageHandler = mockHttpMessageHandler ?? CreateMockHttpMessageHandler ( RevokedCertificateResponses ( ) ) ;
3349
3369
client = new HttpClient ( MockHttpMessageHandler . Object ) ;
3350
3370
}
3351
3371
@@ -3390,15 +3410,15 @@ public void TestVerifyRevokedCertificate ()
3390
3410
3391
3411
File . Delete ( "revoked.db" ) ;
3392
3412
3393
- using ( var ctx = new MySecureMimeContext ( "revoked.db" , "no.secret" ) ) {
3413
+ using ( var ctx = new MySecureMimeContext ( "revoked.db" , "no.secret" , CreateMockHttpMessageHandler ( RevokedNoChainCertificateResponses ( ) ) ) ) {
3394
3414
ImportTestCertificates ( ctx ) ;
3395
3415
3396
3416
VerifyRevokedCertificate ( ctx , ctx . MockHttpMessageHandler , RevokedNoChainCertificate , false ) ;
3397
3417
}
3398
3418
3399
3419
File . Delete ( "revoked.db" ) ;
3400
3420
3401
- using ( var ctx = new MySecureMimeContext ( "revoked.db" , "no.secret" ) ) {
3421
+ using ( var ctx = new MySecureMimeContext ( "revoked.db" , "no.secret" , CreateMockHttpMessageHandler ( RevokedNoChainCertificateResponses ( ) ) ) ) {
3402
3422
ImportTestCertificates ( ctx ) ;
3403
3423
3404
3424
VerifyRevokedCertificate ( ctx , ctx . MockHttpMessageHandler , RevokedNoChainCertificate , true ) ;
@@ -3426,15 +3446,15 @@ public async Task TestVerifyRevokedCertificateAsync ()
3426
3446
3427
3447
File . Delete ( "revoked-async.db" ) ;
3428
3448
3429
- using ( var ctx = new MySecureMimeContext ( "revoked-async.db" , "no.secret" ) ) {
3449
+ using ( var ctx = new MySecureMimeContext ( "revoked-async.db" , "no.secret" , CreateMockHttpMessageHandler ( RevokedNoChainCertificateResponses ( ) ) ) ) {
3430
3450
ImportTestCertificates ( ctx ) ;
3431
3451
3432
3452
await VerifyRevokedCertificateAsync ( ctx , ctx . MockHttpMessageHandler , RevokedNoChainCertificate , false ) ;
3433
3453
}
3434
3454
3435
3455
File . Delete ( "revoked-async.db" ) ;
3436
3456
3437
- using ( var ctx = new MySecureMimeContext ( "revoked-async.db" , "no.secret" ) ) {
3457
+ using ( var ctx = new MySecureMimeContext ( "revoked-async.db" , "no.secret" , CreateMockHttpMessageHandler ( RevokedNoChainCertificateResponses ( ) ) ) ) {
3438
3458
ImportTestCertificates ( ctx ) ;
3439
3459
3440
3460
await VerifyRevokedCertificateAsync ( ctx , ctx . MockHttpMessageHandler , RevokedNoChainCertificate , true ) ;
0 commit comments