-
Notifications
You must be signed in to change notification settings - Fork 97
Expand file tree
/
Copy pathSecurity.Cryptography.xml
More file actions
3318 lines (3291 loc) · 191 KB
/
Copy pathSecurity.Cryptography.xml
File metadata and controls
3318 lines (3291 loc) · 191 KB
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0"?>
<doc>
<assembly>
<name>Security.Cryptography</name>
</assembly>
<members>
<member name="T:Security.Cryptography.AesCng">
<summary>
<para>
The AesCng class provides a wrapper for the CNG implementation of the AES algorithm. It
provides the same interface as the other AES implementations shipped with the .NET Framework,
including <see cref="T:System.Security.Cryptography.AesManaged"/> and <see cref="T:System.Security.Cryptography.AesCryptoServiceProvider"/>.
</para>
<para>
AesCng uses the BCrypt layer of CNG to do its work, and requires Windows Vista and the .NET
Framework 3.5.
</para>
<para>
Since most of the AesCng APIs are inherited from the <see cref="T:System.Security.Cryptography.Aes"/> base class, see the
documentation for Aes for a complete API description.
</para>
</summary>
</member>
<member name="T:Security.Cryptography.ICngSymmetricAlgorithm">
<summary>
Interface for symmetric algorithms implemented over the CNG layer of Windows to provide CNG
implementation details through.
</summary>
</member>
<member name="T:Security.Cryptography.ICngAlgorithm">
<summary>
Interface for algorithms implemented over the CNG layer of Windows to provide CNG implementation
details through.
</summary>
</member>
<member name="P:Security.Cryptography.ICngAlgorithm.Provider">
<summary>
Gets the algorithm or key storage provider being used for the implementation of the CNG
algorithm.
</summary>
</member>
<member name="P:Security.Cryptography.ICngSymmetricAlgorithm.CngMode">
<summary>
Get or set the CNG chaining mode the algorithm is using.
</summary>
</member>
<member name="M:Security.Cryptography.AesCng.#ctor">
<summary>
Constructs an AesCng object. The default settings for this object are:
<list type="bullet">
<item>Algorithm provider - Microsoft Primitive Algorithm Provider</item>
<item>Block size - 128 bits</item>
<item>Feedback size - 8 bits</item>
<item>Key size - 256 bits</item>
<item>Cipher mode - CipherMode.CBC</item>
<item>Padding mode - PaddingMode.PKCS7</item>
</list>
</summary>
</member>
<member name="M:Security.Cryptography.AesCng.#ctor(System.Security.Cryptography.CngProvider)">
<summary>
Constructs an AesCng object using the specified algorithm provider. The default settings for
this object are:
<list type="bullet">
<item>Algorithm provider - Microsoft Primitive Algorithm Provider</item>
<item>Block size - 128 bits</item>
<item>Feedback size - 8 bits</item>
<item>Key size - 256 bits</item>
<item>Cipher mode - CipherMode.CBC</item>
<item>Padding mode - PaddingMode.PKCS7</item>
</list>
</summary>
<exception cref="T:System.ArgumentNullException">if <paramref name="algorithmProvider"/> is null</exception>
<param name="algorithmProvider">algorithm provider to use for AES computation</param>
</member>
<member name="P:Security.Cryptography.AesCng.Mode">
<summary>
Gets or sets the cipher mode to use during encryption or decryption. Supported modes are:
<list type="bullet">
<item>CipherMode.CBC</item>
<item>CipherMode.ECB</item>
<item>CipherMode.CFB</item>
</list>
</summary>
</member>
<member name="T:Security.Cryptography.AuthenticatedAes">
<summary>
The AuthenticatedAes abstract base class forms the base class for concrete implementations of
authenticated AES algorithms. For instance, AES with CCM or GCM chaining modes provides
authentication, and therefore derive from AuthenticatedAes.
</summary>
</member>
<member name="T:Security.Cryptography.AuthenticatedSymmetricAlgorithm">
<summary>
<para>
The AuthenticatedSymmetricAlgorithm abstract base class forms the base class for symmetric
algorithms which support authentication as well as encryption. Authenticated symmetric
algorithms produce an authentication tag in addition to ciphertext, which allows data to be
both authenticated and protected for privacy. For instance, AES with CCM or GCM chaining modes
provides authentication, and therefore derive from AuthenticatedSymmetricAlgorithm.
</para>
<para>
AuthenticatedSymmetricAlgorithm derives from <see cref="T:System.Security.Cryptography.SymmetricAlgorithm"/>, so all of the
SymmetricAlgorithm APIs also apply to AuthenticatedSymmericAlgorithm objects.
</para>
</summary>
</member>
<member name="F:Security.Cryptography.AuthenticatedSymmetricAlgorithm.LegalTagSizesValue">
<summary>
The LegalTagSizes field is set by authenticated symmetric algorithm implementations to be the
set of valid authentication tag sizes expressed in bits.
</summary>
</member>
<member name="F:Security.Cryptography.AuthenticatedSymmetricAlgorithm.TagSizeValue">
<summary>
The TagSizeValue field contains the current authentication tag size used by the authenticated
symmetric algorithm, expressed in bits.
</summary>
</member>
<member name="M:Security.Cryptography.AuthenticatedSymmetricAlgorithm.Create">
<summary>
Creates an instance of the default AuthenticatedSymmetricAlgorithm registered in
<see cref="T:Security.Cryptography.CryptoConfig2"/>. By default, this is the <see cref="T:Security.Cryptography.AuthenticatedAesCng"/>
algorithm.
</summary>
</member>
<member name="M:Security.Cryptography.AuthenticatedSymmetricAlgorithm.Create(System.String)">
<summary>
Create an instance of the specified AuthenticatedSymmetricAlgorithm type. If the type cannot
be found in <see cref="T:Security.Cryptography.CryptoConfig2"/>, Create returns null.
</summary>
<param name="algorithm">name of the authenticated symmetric algorithm to create</param>
<exception cref="T:System.ArgumentNullException">if <paramref name="algorithm"/> is null</exception>
</member>
<member name="M:Security.Cryptography.AuthenticatedSymmetricAlgorithm.CreateAuthenticatedEncryptor">
<summary>
Create an authenticated encryptor using the key, nonce, and authenticated data from the
properties of this algorithm object.
</summary>
</member>
<member name="M:Security.Cryptography.AuthenticatedSymmetricAlgorithm.CreateAuthenticatedEncryptor(System.Byte[],System.Byte[])">
<summary>
Create an authenticated encryptor using the specified key and nonce, and using the
authenticated data from the property of this algorithm object.
</summary>
<param name="rgbKey">key to use for the encryption operation</param>
<param name="rgbIV">nonce to use for the encryption operation</param>
</member>
<member name="M:Security.Cryptography.AuthenticatedSymmetricAlgorithm.CreateAuthenticatedEncryptor(System.Byte[],System.Byte[],System.Byte[])">
<summary>
Create an authenticated encryptor using the specified key, nonce, and authenticated data.
</summary>
<param name="rgbKey">key to use for the encryption operation</param>
<param name="rgbIV">nonce to use for the encryption operation</param>
<param name="rgbAuthenticatedData">optional extra authenticated data to use for the encryption operation</param>
</member>
<member name="M:Security.Cryptography.AuthenticatedSymmetricAlgorithm.CreateDecryptor">
<summary>
Create a decryptor using the key, nonce, authenticated data, and authentication tag from the
properties of this algorithm object.
</summary>
</member>
<member name="M:Security.Cryptography.AuthenticatedSymmetricAlgorithm.CreateDecryptor(System.Byte[],System.Byte[])">
<summary>
Create a decryptor with the given key and nonce, using the authenticated data and
authentication tag from the properties of the algorithm object.
</summary>
<param name="rgbKey">key to use for the decryption operation</param>
<param name="rgbIV">nonce to use for the decryption operation</param>
</member>
<member name="M:Security.Cryptography.AuthenticatedSymmetricAlgorithm.CreateDecryptor(System.Byte[],System.Byte[],System.Byte[],System.Byte[])">
<summary>
Create a decryption transform with the given key, nonce, authenticated data, and
authentication tag.
</summary>
<param name="rgbKey">key to use for the decryption operation</param>
<param name="rgbIV">nonce to use for the decryption operation</param>
<param name="rgbAuthenticatedData">optional extra authenticated data to use for the decryption operation</param>
<param name="rgbTag">authenticated tag to verify while decrypting</param>
</member>
<member name="M:Security.Cryptography.AuthenticatedSymmetricAlgorithm.CreateEncryptor">
<summary>
Create an encryptor using the given key and nonce, and the authenticated data from this
algorithm.
</summary>
</member>
<member name="M:Security.Cryptography.AuthenticatedSymmetricAlgorithm.CreateEncryptor(System.Byte[],System.Byte[])">
<summary>
Create an encryptor using the given key and nonce, and the authenticated data from this
algorithm.
</summary>
</member>
<member name="M:Security.Cryptography.AuthenticatedSymmetricAlgorithm.ValidTagSize(System.Int32)">
<summary>
Determine if an authentication tag size (in bits) is valid for use with this algorithm.
</summary>
<param name="tagSize">authentication tag size in bits to check</param>
</member>
<member name="P:Security.Cryptography.AuthenticatedSymmetricAlgorithm.AuthenticatedData">
<summary>
<para>
Gets or sets the authenticated data buffer.
</para>
<para>
This data is included in calculations of the authentication tag, but is not included in
the ciphertext. A value of null means that there is no additional authenticated data.
</para>
</summary>
</member>
<member name="P:Security.Cryptography.AuthenticatedSymmetricAlgorithm.IV">
<summary>
Get or set the IV (nonce) to use with transorms created with this object.
</summary>
<exception cref="T:System.ArgumentNullException">if set to null</exception>
</member>
<member name="P:Security.Cryptography.AuthenticatedSymmetricAlgorithm.LegalTagSizes">
<summary>
Gets the ranges of legal sizes for authentication tags produced by this algorithm, expressed
in bits.
</summary>
</member>
<member name="P:Security.Cryptography.AuthenticatedSymmetricAlgorithm.Tag">
<summary>
Gets or sets the authentication tag to use when verifying a decryption operation. This
value is only read for decryption operaions, and is not used for encryption operations. To
find the value of the tag generated on encryption, check the Tag property of the
IAuthenticatedCryptoTransform encryptor object.
</summary>
<exception cref="T:System.ArgumentNullException">if the tag is set to null</exception>
<exception cref="T:System.ArgumentException">if the tag is not a legal size</exception>
</member>
<member name="P:Security.Cryptography.AuthenticatedSymmetricAlgorithm.TagSize">
<summary>
Get or set the size (in bits) of the authentication tag
</summary>
<exception cref="T:System.ArgumentException">if the value is not a legal tag size</exception>
</member>
<member name="M:Security.Cryptography.AuthenticatedAes.Create">
<summary>
Creates an instance of the default AuthenticatedAes registered in <see cref="T:Security.Cryptography.CryptoConfig2"/>.
By default, this is the <see cref="T:Security.Cryptography.AuthenticatedAesCng"/> algorithm.
</summary>
</member>
<member name="M:Security.Cryptography.AuthenticatedAes.Create(System.String)">
<summary>
Create an instance of the specified AuthenticatedAes type. If the type cannot be found in
<see cref="T:Security.Cryptography.CryptoConfig2"/>, Create returns null.
</summary>
<param name="algorithm">name of the authenticated symmetric algorithm to create</param>
<exception cref="T:System.ArgumentNullException">if <paramref name="algorithm"/> is null</exception>
</member>
<member name="T:Security.Cryptography.AuthenticatedAesCng">
<summary>
<para>
The AuthenticatedAesCng class provides a wrapper for the CNG implementation of the
authenticated AES algorithm. AesCng uses the BCrypt layer of CNG to do its work, and requires
Windows Vista SP1 and the .NET Framework 3.5.
</para>
<para>
More information on using AuthenticatedAesCng can be found here:
http://blogs.msdn.com/shawnfa/archive/2009/03/17/authenticated-symmetric-encryption-in-net.aspx
</para>
<para>
Since most of the AuthenticatedAesCng APIs are inherited from the
<see cref="T:Security.Cryptography.AuthenticatedSymmetricAlgorithm"/> base class, see the documentation for
AuthenticatedSymmetricAlgorithm for a complete API description.
</para>
<para>
Example usage - encrypting and authenticating data using GCM
<example>
// Encrypt and authenticate data stored in byte array plaintext, using a key and IV.
// Additionally, provide data that is required to validate the authentication tag, but
// which does not get added into the ciphertext.
using (AuthenticatedAesCng aes = new AuthenticatedAesCng())
{
aes.Key = GetEncryptionKey();
aes.IV = GetNonce();
aes.CngMode = CngChainingMode.Gcm;
// This data is required to verify the authentication tag, but will not go into the
// ciphertext
aes.AuthenticatedData = GetAdditionalAuthenticationData();
// Do the encryption
using (MemoryStream ms = new MemoryStream())
using (IAuthenticatedCryptoTransform encryptor = aes.CreateAuthenticatedEncryptor())
using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
// Encrypt the plaintext
byte[] plaintext = GetPlaintext();
cs.Write(paintext, 0, paintext.Length);
// Complete the encryption operation, and generate the authentication tag
cs.FlushFinalBlock();
// Get the generated ciphertext and authentication tag
byte[] ciphertext = ms.ToArray();
byte[] authenticationTag = encryptor.GetTag();
}
}
</example>
</para>
<para>
Example usage - Decrypting and verifying data using GCM
<example>
// Decrypt and authenticate data stored in byte array ciphertext, using a key and IV.
// Additionally, provide data that is required to validate the authentication tag, but
which does not get added into the ciphertext.
using (AuthenticatedAesCng aes = new AuthenticatedAesCng())
{
aes.Key = GetEncryptionKey();
aes.IV = GetNonce();
aes.CngMode = CngChainingMode.Gcm;
// This data is required to verify the authentication tag, but will not go into the
// ciphertext
aes.AuthenticatedData = GetAdditionalAuthenticationData();
// The authentication tag was generated during the encryption operation.
aes.Tag = GetAuthenticationTag();
// Do the decryption and authentication
using (MemoryStream ms = new MemoryStream())
using (ICryptoTransform decryptor = aes.CreateDecryptor())
using (CryptoStream cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Write))
{
// Decrypt the ciphertext
byte[] ciphertext = GetCiphertext();
cs.Write(ciphertext, 0, ciphertext.Length);
// If the authentication tag does not validate, this call will throw a
// CryptographicException.
cs.FlushFinalBlock();
// Get the decrypted and authenticated plaintext
byte[] decrypted = ms.ToArray();
}
}
</example>
</para>
</summary>
</member>
<member name="M:Security.Cryptography.AuthenticatedAesCng.#ctor">
<summary>
Constructs an AuthenticatedAesCng object. The default settings for this object are:
<list type="bullet">
<item>Provider - Microsoft Primitive Algorithm Provider</item>
<item>CngMode - CngChainingMode.Gcm</item>
</list>
</summary>
</member>
<member name="M:Security.Cryptography.AuthenticatedAesCng.#ctor(System.Security.Cryptography.CngProvider)">
<summary>
Construct an AuthenticatedAesCng using a specific algorithm provider. The default settings
for this object are:
<list type="bullet">
<item>CngMode - CngChainingMode.Gcm</item>
</list>
</summary>
<param name="provider">algorithm provider to use for AES computation</param>
<exception cref="T:System.ArgumentNullException">if <paramref name="provider"/> is null</exception>
</member>
<member name="P:Security.Cryptography.AuthenticatedAesCng.ChainingSupported">
<summary>
Gets a value determining if the AES object supports chaining multiple encryption calls, or if
all encryption or decryption must be done at once. Generally, this value won't matter to code
running against the AuthenticatedAesCng object, since the transforms produced by
AuthenticatedAesCng will take chaining support into account to ensure that only one call to
CNG is made if that is required.
</summary>
</member>
<member name="P:Security.Cryptography.AuthenticatedAesCng.CngMode">
<summary>
Gets or sets the CNG cipher mode to use during encryption or decryption. This mode must be an
authenticating chaining mode, currently:
<list type="bullet">
<item>CngChainingMode.Ccm</item>
<item>CngChainingMode.Gcm</item>
</list>
</summary>
</member>
<member name="T:Security.Cryptography.BCryptAuthenticatedSymmetricAlgorithm">
<summary>
Generic implementation of an authenticated symmetric algorithm which is provided by the BCrypt
layer of CNG. Concrete AuthenticatedSymmetricAlgorithm classes should contain an instance of this
type and delegate all of their work to that object.
Most of the real encryption work occurs in the BCryptAuthenticatedCryptoTransform class. (see
code:code:Microsoft.Security.Cryptography.BCryptAuthenticatedSymmetricCryptoTransform).
</summary>
</member>
<member name="M:Security.Cryptography.BCryptAuthenticatedSymmetricAlgorithm.SetupAlgorithm">
<summary>
Build an algorithm handle setup according to the parameters of this AES object
</summary>
</member>
<member name="M:Security.Cryptography.BCryptAuthenticatedSymmetricAlgorithm.UpdateLegalTagSizes">
<summary>
Update the legal tag sizes for this algorithm
</summary>
</member>
<member name="M:Security.Cryptography.BCryptAuthenticatedSymmetricAlgorithm.UpdateLegalTagSizes(Security.Cryptography.SafeBCryptAlgorithmHandle)">
<summary>
Update the legal tag sizes for this algortithm from an already opened algorithm handle
</summary>
</member>
<member name="P:Security.Cryptography.BCryptAuthenticatedSymmetricAlgorithm.ChainingSupported">
<summary>
Determine if the current mode supports calculating the authenticated cipher across multiple
transform calls, or must the entire cipher be calculated at once.
</summary>
</member>
<member name="P:Security.Cryptography.BCryptAuthenticatedSymmetricAlgorithm.CngMode">
<summary>
Chaining mode to use for chaining in the authenticated algorithm. This value should be one
of the CNG modes that is an authenticated chaining mode such as CCM or GCM.
</summary>
</member>
<member name="P:Security.Cryptography.BCryptAuthenticatedSymmetricAlgorithm.Provider">
<summary>
Algorithm provider which is implementing the authenticated transform
</summary>
</member>
<member name="T:Security.Cryptography.BCryptAuthenticatedSymmetricCryptoTransform">
<summary>
Generic crypto transform, which implements authenticated symmetric encryption and decryption for
algorithms implemented in the BCrypt layer of CNG. This type is used as the workhorse for the
BCryptAuthenticatedSymmetricAlgorithm generic BCrypt authenticated symmetric algorithm
implementation.
</summary>
</member>
<member name="T:Security.Cryptography.IAuthenticatedCryptoTransform">
<summary>
Interface for crypto transforms that support generating an authentication tag.
</summary>
</member>
<member name="T:Security.Cryptography.ICryptoTransform2">
<summary>
Extended crypto transform interface which provides extra information about the capabilities of a
specific transform.
</summary>
</member>
<member name="P:Security.Cryptography.ICryptoTransform2.CanChainBlocks">
<summary>
<para>
Can the transform be used in a chained mode - where it is invoked multiple times before
the final ciphertext and tag are retrieved. (For example, can it transform each block in
the input in seperate calls, or must they all come in through a single call.)
</para>
<para>
This is different from CanTransformMultipleBlocks in that CanTransformMultipleBlocks
indicates if a transform can handle multiple blocks of input in a single call, while
CanChainBlocks indicates if a transform can chain multiple blocks of input across multiple
calls to TransformBlock/TransformFinalBlock.
</para>
</summary>
</member>
<member name="M:Security.Cryptography.IAuthenticatedCryptoTransform.GetTag">
<summary>
Get the authentication tag produced by the transform. This is only valid in the encryption
case and only after the final block has been transformed.
</summary>
<exception cref="T:System.InvalidOperationException">
If the crypto transform is a decryptor, or if the final block has not yet been transformed.
</exception>
</member>
<member name="M:Security.Cryptography.BCryptAuthenticatedSymmetricCryptoTransform.#ctor(Security.Cryptography.SafeBCryptAlgorithmHandle,System.Byte[],System.Byte[],System.Byte[],System.Boolean,System.Int32)">
<summary>
Create an encrypting authenticated symmetric algorithm transform. This type takes ownership
of the incoming algorithm handle, which should no longer be used by the calling code after
it has called this constructor.
</summary>
</member>
<member name="M:Security.Cryptography.BCryptAuthenticatedSymmetricCryptoTransform.#ctor(Security.Cryptography.SafeBCryptAlgorithmHandle,System.Byte[],System.Byte[],System.Byte[],System.Byte[],System.Boolean)">
<summary>
Create a decrypting authenticated symmetric algorithm transform. This type takes ownership
of the incoming algorithm handle, which should no longer be used by the calling code after
it has called this constructor.
</summary>
</member>
<member name="M:Security.Cryptography.BCryptAuthenticatedSymmetricCryptoTransform.GetTag">
<summary>
Get the authentication tag generated from encryption.
</summary>
</member>
<member name="M:Security.Cryptography.BCryptAuthenticatedSymmetricCryptoTransform.TransformBlock(System.Byte[],System.Int32,System.Int32,System.Byte[],System.Int32)">
<summary>
Transforms some blocks of input data, but don't finalize the transform
</summary>
</member>
<member name="M:Security.Cryptography.BCryptAuthenticatedSymmetricCryptoTransform.TransformFinalBlock(System.Byte[],System.Int32,System.Int32)">
<summary>
Transform the final block and finalize the encryption or decryption operation.
</summary>
</member>
<member name="M:Security.Cryptography.BCryptAuthenticatedSymmetricCryptoTransform.CngTransform(System.Byte[],System.Int32,System.Int32)">
<summary>
Transform given blocks of data
</summary>
</member>
<member name="P:Security.Cryptography.BCryptAuthenticatedSymmetricCryptoTransform.CanChainBlocks">
<summary>
Can the transform chain multiple blocks of ciphertext, or must they all come at once.
</summary>
</member>
<member name="P:Security.Cryptography.BCryptAuthenticatedSymmetricCryptoTransform.CanReuseTransform">
<summary>
Gets a value indicating whether the transform can be reused.
</summary>
</member>
<member name="P:Security.Cryptography.BCryptAuthenticatedSymmetricCryptoTransform.CanTransformMultipleBlocks">
<summary>
Gets a value indicating whether the transform can process multiple blocks at once.
</summary>
</member>
<member name="P:Security.Cryptography.BCryptAuthenticatedSymmetricCryptoTransform.InputBlockSize">
<summary>
Gets the input block length in bytes.
</summary>
</member>
<member name="P:Security.Cryptography.BCryptAuthenticatedSymmetricCryptoTransform.OutputBlockSize">
<summary>
Gets the output block length in bytes.
</summary>
</member>
<member name="T:Security.Cryptography.BCryptHMAC">
<summary>
Generic implementation of HMAC which is implemented by the BCrypt layer of Cng. Concrete HMAC
classes should contain an instance of the BCryptHMAC type and delegate their work to that object.
</summary>
</member>
<member name="T:Security.Cryptography.AsymmetricPaddingMode">
<summary>
Padding modes
</summary>
</member>
<member name="F:Security.Cryptography.AsymmetricPaddingMode.None">
<summary>
No padding
</summary>
</member>
<member name="F:Security.Cryptography.AsymmetricPaddingMode.Pkcs1">
<summary>
PKCS #1 padding
</summary>
</member>
<member name="F:Security.Cryptography.AsymmetricPaddingMode.Oaep">
<summary>
Optimal Asymmetric Encryption Padding
</summary>
</member>
<member name="F:Security.Cryptography.AsymmetricPaddingMode.Pss">
<summary>
Probabilistic Signature Scheme padding
</summary>
</member>
<member name="T:Security.Cryptography.BCryptNative">
<summary>
Native wrappers for bcrypt CNG APIs.
The general pattern for this interop layer is that the BCryptNative type exports a wrapper method
for consumers of the interop methods. This wrapper method puts a managed face on the raw
P/Invokes, by translating from native structures to managed types and converting from error
codes to exceptions.
</summary>
</member>
<member name="M:Security.Cryptography.BCryptNative.FinishHash(Security.Cryptography.SafeBCryptHashHandle)">
<summary>
Get the results of a hashing operation
</summary>
</member>
<member name="M:Security.Cryptography.BCryptNative.GenerateRandomBytes(Security.Cryptography.SafeBCryptAlgorithmHandle,System.Byte[])">
<summary>
Fill a buffer with radom bytes
</summary>
</member>
<member name="M:Security.Cryptography.BCryptNative.GetInt32Property``1(``0,System.String)">
<summary>
Get an integer valued named property from a BCrypt object.
</summary>
</member>
<member name="M:Security.Cryptography.BCryptNative.GetStringProperty``1(``0,System.String)">
<summary>
Get a string valued named property from a BCrypt object
</summary>
</member>
<member name="M:Security.Cryptography.BCryptNative.GetValueTypeProperty``2(``0,System.String)">
<summary>
Get a property from a BCrypt which is returned as a structure
</summary>
</member>
<member name="M:Security.Cryptography.BCryptNative.GetProperty``1(``0,System.String)">
<summary>
Get the value of a named property from a BCrypt object
</summary>
</member>
<member name="M:Security.Cryptography.BCryptNative.HashData(Security.Cryptography.SafeBCryptHashHandle,System.Byte[])">
<summary>
Add some data to a hash in progress
</summary>
</member>
<member name="M:Security.Cryptography.BCryptNative.ImportSymmetricKey(Security.Cryptography.SafeBCryptAlgorithmHandle,System.Byte[])">
<summary>
Import a raw symmetric key into a key handle
</summary>
</member>
<member name="M:Security.Cryptography.BCryptNative.InitializeAuthnenticatedCipherModeInfo(Security.Cryptography.BCryptNative.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO@)">
<summary>
Initialize a BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO structure (in place of the
BCRYPT_INIT_AUTH_MODE_INFO macro)
</summary>
</member>
<member name="M:Security.Cryptography.BCryptNative.MapChainingMode(System.Security.Cryptography.CipherMode)">
<summary>
Map a managed cipher mode to a BCrypt chaining mode
</summary>
</member>
<member name="M:Security.Cryptography.BCryptNative.MapChainingMode(System.String)">
<summary>
Map a BCrypt chaining mode to a managed cipher mode
</summary>
</member>
<member name="M:Security.Cryptography.BCryptNative.OpenAlgorithm(System.String,System.String)">
<summary>
Open a handle to a BCrypt algorithm provider
</summary>
</member>
<member name="M:Security.Cryptography.BCryptNative.SetInt32Property``1(``0,System.String,System.Int32)">
<summary>
Set an integer valued property on a BCrypt object
</summary>
</member>
<member name="M:Security.Cryptography.BCryptNative.SetStringProperty``1(``0,System.String,System.String)">
<summary>
Set a string valued property on a BCrypt object
</summary>
</member>
<member name="M:Security.Cryptography.BCryptNative.SetProperty``1(``0,System.String,System.Byte[])">
<summary>
Set a named property value on a BCrypt object
</summary>
</member>
<member name="M:Security.Cryptography.BCryptNative.SymmetricDecrypt(Security.Cryptography.SafeBCryptKeyHandle,System.Byte[],System.Byte[])">
<summary>
Decrypt some blocks of data
</summary>
</member>
<member name="M:Security.Cryptography.BCryptNative.SymmetricDecrypt(Security.Cryptography.SafeBCryptKeyHandle,System.Byte[],System.Byte[],Security.Cryptography.BCryptNative.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO@)">
<summary>
Decrypt some blocks of data using authentication info
</summary>
</member>
<member name="M:Security.Cryptography.BCryptNative.SymmetricEncrypt(Security.Cryptography.SafeBCryptKeyHandle,System.Byte[],System.Byte[])">
<summary>
Encrypt some blocks of data
</summary>
</member>
<member name="M:Security.Cryptography.BCryptNative.SymmetricEncrypt(Security.Cryptography.SafeBCryptKeyHandle,System.Byte[],System.Byte[],Security.Cryptography.BCryptNative.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO@)">
<summary>
Encrypt some blocks of data using authentication information
</summary>
</member>
<member name="T:Security.Cryptography.BCryptNative.AlgorithmName">
<summary>
Well known algorithm names
</summary>
</member>
<member name="T:Security.Cryptography.BCryptNative.AlgorithmProviderOptions">
<summary>
Flags for BCryptOpenAlgorithmProvider
</summary>
</member>
<member name="T:Security.Cryptography.BCryptNative.AuthenticatedCipherModeInfoFlags">
<summary>
Flags for use with the BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO structure
</summary>
</member>
<member name="T:Security.Cryptography.BCryptNative.ChainingMode">
<summary>
Well known chaining modes
</summary>
</member>
<member name="T:Security.Cryptography.BCryptNative.ErrorCode">
<summary>
Result codes from BCrypt APIs
</summary>
</member>
<member name="T:Security.Cryptography.BCryptNative.KeyBlobMagicNumber">
<summary>
Magic numbers for different key blobs
</summary>
</member>
<member name="T:Security.Cryptography.BCryptNative.KeyBlobType">
<summary>
Well known key blob tyes
</summary>
</member>
<member name="T:Security.Cryptography.BCryptNative.ObjectPropertyName">
<summary>
Well known BCrypt object property names
</summary>
</member>
<member name="T:Security.Cryptography.BCryptNative.ProviderName">
<summary>
Well known BCrypt provider names
</summary>
</member>
<member name="T:Security.Cryptography.BCryptNative.BCryptPropertyGetter`1">
<summary>
Adapter to wrap specific BCryptGetProperty P/Invokes with a generic BCrypt handle type
</summary>
</member>
<member name="T:Security.Cryptography.BCryptNative.BCryptPropertySetter`1">
<summary>
Adapter to wrap specific BCryptSetProperty P/Invokes with a generic BCrypt handle type
</summary>
</member>
<member name="T:Security.Cryptography.SafeBCryptAlgorithmHandle">
<summary>
SafeHandle for a native BCRYPT_ALG_HANDLE
</summary>
</member>
<member name="T:Security.Cryptography.SafeBCryptHashHandle">
<summary>
SafeHandle for a BCRYPT_HASH_HANDLE.
</summary>
</member>
<member name="T:Security.Cryptography.SafeHandleWithBuffer">
<summary>
Safe handle base class for safe handles which are associated with an additional data buffer that
must be kept alive for the same amount of time as the handle itself.
This is required rather than having a seperate safe handle own the key data buffer blob so
that we can ensure that the key handle is disposed of before the key data buffer is freed.
</summary>
</member>
<member name="M:Security.Cryptography.SafeHandleWithBuffer.ReleaseBuffer">
<summary>
Release the buffer associated with the handle
</summary>
</member>
<member name="M:Security.Cryptography.SafeHandleWithBuffer.ReleaseNativeHandle">
<summary>
Release just the native handle associated with the safe handle
</summary>
<returns></returns>
</member>
<member name="P:Security.Cryptography.SafeHandleWithBuffer.DataBuffer">
<summary>
Buffer that holds onto the key data object. This data must be allocated with CoAllocTaskMem,
or the ReleaseBuffer method must be overriden to match the deallocation function with the
allocation function. Once the buffer is assigned into the DataBuffer property, the safe
handle owns the buffer and users of this property should not attempt to free the memory.
This property should be set only once, otherwise the first data buffer will leak.
</summary>
</member>
<member name="T:Security.Cryptography.SafeBCryptKeyHandle">
<summary>
SafeHandle for a native BCRYPT_KEY_HANDLE.
</summary>
</member>
<member name="T:Security.Cryptography.BCryptSymmetricAlgorithm">
<summary>
Generic implementation of a symmetric algorithm which is provided by the BCrypt layer of CNG.
Concrete SymmetricAlgorithm classes should contain an instance of this type and delegate all of
their work to that object.
Most of the real encryption work occurs in the BCryptSymmetricCryptoTransform class. (see
code:code:Microsoft.Security.Cryptography.BCryptSymmetricCryptoTransform).
</summary>
</member>
<member name="M:Security.Cryptography.BCryptSymmetricAlgorithm.SetupAlgorithm">
<summary>
Setup a BCrypt algorithm with our current parameters
</summary>
</member>
<member name="T:Security.Cryptography.BCryptSymmetricCryptoTransform">
<summary>
Generic crypto transform, which implements symmetric encryption and decryption for algorithms
implemented in the BCrypt layer of CNG. This type is used as the workhorse for the
BCryptSymmetricAlgorithm generic BCrypt symmetric algorithm implementation.
</summary>
</member>
<member name="M:Security.Cryptography.BCryptSymmetricCryptoTransform.#ctor(Security.Cryptography.SafeBCryptAlgorithmHandle,System.Byte[],System.Byte[],System.Security.Cryptography.PaddingMode,System.Boolean)">
<summary>
Create an instance of an ICryptoTransform that can be used for BCrypt symmetric algorithms.
This object takes ownership of the algorithm handle passed in, and is responsible for
releasing it when it is no longer needed. The algorithm handle should no longer be used by
other code once it is passed to this constructor.
</summary>
</member>
<member name="M:Security.Cryptography.BCryptSymmetricCryptoTransform.DecryptBlocks(System.Byte[],System.Int32,System.Int32,System.Byte[],System.Int32,System.Boolean)">
<summary>
Decrypt ciphertext into plaintext without depadding the output
</summary>
</member>
<member name="M:Security.Cryptography.BCryptSymmetricCryptoTransform.EncryptBlocks(System.Byte[],System.Int32,System.Int32,System.Byte[],System.Int32)">
<summary>
Encrypt plaintext into ciphertext without applying padding
</summary>
</member>
<member name="M:Security.Cryptography.BCryptSymmetricCryptoTransform.ProcessIV(System.Byte[],System.Int32,System.Security.Cryptography.CipherMode)">
<summary>
Process the user's IV into one that's acceptable to pass to BCrypt.
We need to:
1. Make a copy of the IV so that it's not modified (BCrypt will modify the IV buffer on
calls to BCryptEncrypt / BCryptDecrypt, and we don't want the user's IV array to change).
2. Ensure we have an IV if we're not in ECB mode
3. Truncate the IV to the block size (for compatibility with v1.x)
4. Return null for ECB
</summary>
</member>
<member name="T:Security.Cryptography.BlockPaddingMethod">
<summary>
Base class for paddings to derive from
</summary>
</member>
<member name="M:Security.Cryptography.BlockPaddingMethod.Create(System.Security.Cryptography.PaddingMode,System.Int32)">
<summary>
Create a block padding method which can handle the given padding mode
</summary>
</member>
<member name="M:Security.Cryptography.BlockPaddingMethod.CountPaddingBytes(System.Int32)">
<summary>
Figure out the number of padding bytes to create
</summary>
</member>
<member name="M:Security.Cryptography.BlockPaddingMethod.PadBlock(System.Byte[],System.Int32,System.Int32)">
<summary>
Apply padding to an input block.
</summary>
</member>
<member name="M:Security.Cryptography.BlockPaddingMethod.DepadBlock(System.Byte[],System.Int32,System.Int32)">
<summary>
Remove padding from a block
</summary>
</member>
<member name="P:Security.Cryptography.BlockPaddingMethod.BlockSize">
<summary>
Size, in bytes, of blocks to pad
</summary>
</member>
<member name="P:Security.Cryptography.BlockPaddingMethod.AddsExtraBlocks">
<summary>
Does the padding method add an extra block to the end of the input if the input block does
not need any padding.
</summary>
</member>
<member name="P:Security.Cryptography.BlockPaddingMethod.CanRemovePadding">
<summary>
Can the padding method be reversed to remove the padding on decryption.
</summary>
</member>
<member name="T:Security.Cryptography.AnsiPadding">
<summary>
ANSI X923 padding fills the remaining block with zeros, with the final byte being the total
number of padding bytes added. If the last block is already complete, a new block is added.
xx 00 00 00 00 00 00 07
</summary>
</member>
<member name="T:Security.Cryptography.IsoPadding">
<summary>
ISO 10126 padding fills the remaining block with random bytes, with the final byte being the total
number of padding bytes added. If the last block is already complete, a new block is added.
xx rr rr rr rr rr rr 07
</summary>
</member>
<member name="T:Security.Cryptography.NoPadding">
<summary>
None padding does not add or remove anything from the input text. This implies that the input
plaintext must already be a multiple of the block size.
</summary>
</member>
<member name="T:Security.Cryptography.PkcsPadding">
<summary>
PKCS7 padding fills up the remainder of the block with bytes which are the same value as the
number of padding bytes applied. If the last block is already complete, a new block is added.
xx 07 07 07 07 07 07 07
</summary>
</member>
<member name="T:Security.Cryptography.ZerosPadding">
<summary>
Zeros padding fills out the final block with 0 bytes. It does not add an extra block if the
final block is already complete. Note that since we cannot tell if the plaintext ends in a 00
byte, or if that byte is part of the padding, zeros padding cannot be removed.
xx 00 00 00 00 00 00 00
</summary>
</member>
<member name="T:Security.Cryptography.OidGroup">
<summary>
The OidGroup enumeration has values for each of the built in Windows groups that OIDs can be
categorized into.
</summary>
</member>
<member name="F:Security.Cryptography.OidGroup.AllGroups">
<summary>
When used for searching for or enumerating over OIDs, specifies that the search or enumeration
should include OIDs found in all of the groups.
</summary>
</member>
<member name="F:Security.Cryptography.OidGroup.HashAlgorithm">
<summary>
A group for OIDs that represent hashing algortihms. This maps to the native
CRYPT_HASH_ALG_OID_GROUP_ID group.
</summary>
</member>
<member name="F:Security.Cryptography.OidGroup.EncryptionAlgorithm">
<summary>
A group for OIDs that represent symmetric encryption algorithms. This maps to the native
CRYPT_ENCRYPT_ALG_OID_GROUP_ID group.
</summary>
</member>
<member name="F:Security.Cryptography.OidGroup.PublicKeyAlgorithm">
<summary>
A group for OIDs that represent asymmetric encryption algorithms. This maps to the native
CRYPT_PUBKEY_ALG_OID_GROUP_ID group.
</summary>
</member>
<member name="F:Security.Cryptography.OidGroup.SignatureAlgorithm">
<summary>
A group for OIDs that represent digital signature algorithms. This maps to the native
CRYPT_SIGN_ALG_OID_GROUP_ID group.
</summary>
</member>
<member name="F:Security.Cryptography.OidGroup.Attribute">
<summary>
A group for OIDs that represent RDN attributes. This maps to the native
CRYPT_RDN_ATTR_OID_GROUP_ID group.
</summary>
</member>
<member name="F:Security.Cryptography.OidGroup.ExtensionOrAttribute">
<summary>
A group for OIDs that represent X.509 certificate extensions or attributes. This maps to
the native CRYPT_EXT_OR_ATTR_OID_GROUP_ID group.
</summary>
</member>
<member name="F:Security.Cryptography.OidGroup.EnhancedKeyUsage">
<summary>
A group for OIDs that represent X.509 certificate enhanced key usages. This maps to the
native CRYPT_ENHKEY_USAGE_OID_GROUP_ID group.
</summary>
</member>
<member name="F:Security.Cryptography.OidGroup.Policy">
<summary>
A group for OIDs that represent policies. This maps to the native CRYPT_POLICY_OID_GROUP_ID
group.
</summary>
</member>
<member name="F:Security.Cryptography.OidGroup.Template">
<summary>
A group for OIDs that represent templates. This maps to the native
CRYPT_TEMPLATE_OID_GROUP_ID group.
</summary>
</member>
<member name="F:Security.Cryptography.OidGroup.KeyDerivationFunction">
<summary>
A group for OIDS that represent key derivation algorithms. This maps to the native
CRYPT_KDF_OID_GROUP_ID group.
</summary>
</member>
<member name="T:Security.Cryptography.OidRegistrationOptions">
<summary>
The OidRegistrationOptions enumeration has flags used to control how a new OID is registered on
the machine with the <see cref="M:Security.Cryptography.Oid2.Register(Security.Cryptography.OidRegistrationOptions)"/> API.
</summary>
</member>
<member name="F:Security.Cryptography.OidRegistrationOptions.None">
<summary>
The OID is installed after the built in OIDs
</summary>
</member>
<member name="F:Security.Cryptography.OidRegistrationOptions.InstallBeforeDefaultEntries">
<summary>
The OID is installed before the built in OIDs. This maps to the native
CRYPT_INSTALL_OID_INFO_BEFORE_FLAG option.
</summary>
</member>
<member name="T:Security.Cryptography.CapiNative">
<summary>
Native wrappers for CAPI APIs.
The general pattern for this interop layer is that the CapiNative type exports a wrapper method
for consumers of the interop methods. This wrapper method puts a managed face on the raw
P/Invokes, by translating from native structures to managed types and converting from error
codes to exceptions.
The native definitions here are generally found in wincrypt.h
</summary>
</member>
<member name="M:Security.Cryptography.CapiNative.ReadBlob(Security.Cryptography.CapiNative.CRYPTOAPI_BLOB)">
<summary>
Read a CAPI blob into a managed byte array
</summary>