Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ WriteEncryptedPkcs8() [6/6]

static AsnWriter System.Security.Cryptography.KeyFormatHelper.WriteEncryptedPkcs8 ( ReadOnlySpan< char > password,
ReadOnlySpan< byte > passwordBytes,
AsnWriter pkcs8Writer,
PbeParameters pbeParameters )
inlinestaticprivate

Definition at line 35 of file KeyFormatHelper.cs.

36 {
37 System.Security.Cryptography.PasswordBasedEncryption.InitiateEncryption(pbeParameters, out var cipher, out var hmacOid, out var encryptionAlgorithmOid, out var isPkcs);
38 Span<byte> span = default(Span<byte>);
39 AsnWriter asnWriter = null;
40 Span<byte> span2 = stackalloc byte[cipher.BlockSize / 8];
41 Span<byte> span3 = stackalloc byte[16];
42 checked
43 {
44 byte[] array = System.Security.Cryptography.CryptoPool.Rent(pkcs8Writer.GetEncodedLength() + unchecked(cipher.BlockSize / 8));
45 try
46 {
47 RandomNumberGenerator.Fill(span3);
48 int length = System.Security.Cryptography.PasswordBasedEncryption.Encrypt(password, passwordBytes, cipher, isPkcs, pkcs8Writer, pbeParameters, span3, array, span2);
49 span = array.AsSpan(0, length);
50 asnWriter = new AsnWriter(AsnEncodingRules.DER);
51 asnWriter.PushSequence();
52 System.Security.Cryptography.PasswordBasedEncryption.WritePbeAlgorithmIdentifier(asnWriter, isPkcs, encryptionAlgorithmOid, span3, pbeParameters.IterationCount, hmacOid, span2);
53 asnWriter.WriteOctetString(span);
54 asnWriter.PopSequence();
55 return asnWriter;
56 }
57 finally
58 {
59 CryptographicOperations.ZeroMemory(span);
61 cipher.Dispose();
62 }
63 }
64 }
void WriteOctetString(ReadOnlySpan< byte > value, Asn1Tag? tag=null)
Definition AsnWriter.cs:904
Scope PushSequence(Asn1Tag? tag=null)
void PopSequence(Asn1Tag? tag=null)
static void Return(byte[] array, int clearSize=-1)
Definition CryptoPool.cs:12
static byte[] Rent(int minimumLength)
Definition CryptoPool.cs:7
static void InitiateEncryption(PbeParameters pbeParameters, out SymmetricAlgorithm cipher, out string hmacOid, out string encryptionAlgorithmOid, out bool isPkcs12)
static unsafe int Encrypt(ReadOnlySpan< char > password, ReadOnlySpan< byte > passwordBytes, SymmetricAlgorithm cipher, bool isPkcs12, AsnWriter source, PbeParameters pbeParameters, ReadOnlySpan< byte > salt, byte[] destination, Span< byte > ivDest)
static void WritePbeAlgorithmIdentifier(AsnWriter writer, bool isPkcs12, string encryptionAlgorithmOid, Span< byte > salt, int iterationCount, string hmacOid, Span< byte > iv)

References System.array, System.Security.Cryptography.PasswordBasedEncryption.Encrypt(), System.Security.Cryptography.RandomNumberGenerator.Fill(), System.Formats.Asn1.AsnWriter.GetEncodedLength(), System.Security.Cryptography.PasswordBasedEncryption.InitiateEncryption(), System.Security.Cryptography.PbeParameters.IterationCount, System.length, System.Formats.Asn1.AsnWriter.PopSequence(), System.Formats.Asn1.AsnWriter.PushSequence(), System.Security.Cryptography.CryptoPool.Rent(), System.Security.Cryptography.CryptoPool.Return(), System.Formats.Asn1.AsnWriter.WriteOctetString(), System.Security.Cryptography.PasswordBasedEncryption.WritePbeAlgorithmIdentifier(), and System.Security.Cryptography.CryptographicOperations.ZeroMemory().