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

◆ BuildPublicKey()

override PublicKey System.Security.Cryptography.X509Certificates.ECDsaX509SignatureGenerator.BuildPublicKey ( )
inlineprotected

Definition at line 47 of file ECDsaX509SignatureGenerator.cs.

48 {
49 ECParameters eCParameters = _key.ExportParameters(includePrivateParameters: false);
50 if (!eCParameters.Curve.IsNamed)
51 {
53 }
54 string text = eCParameters.Curve.Oid.Value;
55 if (string.IsNullOrEmpty(text))
56 {
57 string friendlyName = eCParameters.Curve.Oid.FriendlyName;
58 text = friendlyName switch
59 {
60 "nistP256" => "1.2.840.10045.3.1.7",
61 "nistP384" => "1.3.132.0.34",
62 "nistP521" => "1.3.132.0.35",
63 _ => new Oid(friendlyName).Value,
64 };
65 }
66 AsnWriter asnWriter = new AsnWriter(AsnEncodingRules.DER);
67 asnWriter.WriteObjectIdentifier(text);
68 byte[] rawData = asnWriter.Encode();
69 byte[] array = new byte[1 + eCParameters.Q.X.Length + eCParameters.Q.Y.Length];
70 array[0] = 4;
71 Buffer.BlockCopy(eCParameters.Q.X, 0, array, 1, eCParameters.Q.X.Length);
72 Buffer.BlockCopy(eCParameters.Q.Y, 0, array, 1 + eCParameters.Q.X.Length, eCParameters.Q.Y.Length);
73 Oid ecPublicKeyOid = System.Security.Cryptography.Oids.EcPublicKeyOid;
74 return new PublicKey(ecPublicKeyOid, new AsnEncodedData(ecPublicKeyOid, rawData), new AsnEncodedData(ecPublicKeyOid, array));
75 }
void WriteObjectIdentifier(string oidValue, Asn1Tag? tag=null)
Definition AsnWriter.cs:954
int Encode(Span< byte > destination)
Definition AsnWriter.cs:195
static string Cryptography_ECC_NamedCurvesOnly
Definition SR.cs:56
Definition SR.cs:7
virtual ECParameters ExportParameters(bool includePrivateParameters)
Definition ECDsa.cs:29

References System.Security.Cryptography.X509Certificates.ECDsaX509SignatureGenerator._key, System.array, System.Buffer.BlockCopy(), System.SR.Cryptography_ECC_NamedCurvesOnly, System.Security.Cryptography.ECParameters.Curve, System.Security.Cryptography.Oids.EcPublicKeyOid, System.Formats.Asn1.AsnWriter.Encode(), System.Security.Cryptography.ECDsa.ExportParameters(), System.Security.Cryptography.Oid.FriendlyName, System.Security.Cryptography.ECCurve.IsNamed, System.Security.Cryptography.ECCurve.Oid, System.Security.Cryptography.X509Certificates.X509SignatureGenerator.PublicKey, System.Security.Cryptography.ECParameters.Q, System.text, System.Security.Cryptography.Oid.Value, System.Formats.Asn1.AsnWriter.WriteObjectIdentifier(), System.Security.Cryptography.ECPoint.X, and System.Security.Cryptography.ECPoint.Y.