/// <summary> /// Exports the private component of the keypair as a DTO object. /// </summary> /// <returns>Private key as <see cref="ECKey"/> DTO.</returns> public ECKey GetPrivateKey() { return(new ECKey { PublicComponent = false, CurveProviderName = String.Copy(CurveProviderName), CurveName = String.Copy(CurveName), EncodedKey = EncodedPrivateKey.DeepCopy(), AdditionalData = AdditionalData.DeepCopy(), ConfirmationCanary = null }); }
/// <inheritdoc /> public override int GetHashCode() { unchecked { int hashCode = CurveProviderName.ToLowerInvariant().GetHashCode(); hashCode = (hashCode * 397) ^ CurveName.ToLowerInvariant().GetHashCode(); hashCode = (hashCode * 397) ^ EncodedPublicKey.GetHashCodeExt(); hashCode = (hashCode * 397) ^ (EncodedPrivateKey != null ? EncodedPrivateKey.GetHashCodeExt() : 0); hashCode = (hashCode * 397) ^ (AdditionalData != null ? AdditionalData.GetHashCodeExt() : 0); hashCode = (hashCode * 397) ^ (ConfirmationCanary != null ? ConfirmationCanary.GetHashCodeExt() : 0); return(hashCode); } }
/// <inheritdoc /> public bool Equals(ECKeypair other, bool constantTime) { if (ReferenceEquals(null, other)) { return(false); } if (ReferenceEquals(this, other)) { return(true); } if (constantTime == false) { return(String.Equals(CurveProviderName, other.CurveProviderName, StringComparison.OrdinalIgnoreCase) && String.Equals(CurveName, other.CurveName, StringComparison.OrdinalIgnoreCase) && EncodedPublicKey.SequenceEqualShortCircuiting(other.EncodedPublicKey) && (EncodedPrivateKey == null ? other.EncodedPrivateKey == null : EncodedPrivateKey.SequenceEqualShortCircuiting(other.EncodedPrivateKey)) && (AdditionalData == null ? other.AdditionalData == null : AdditionalData.SequenceEqualShortCircuiting(other.AdditionalData)) && (ConfirmationCanary == null ? other.ConfirmationCanary == null : ConfirmationCanary.SequenceEqualShortCircuiting(other.ConfirmationCanary))); } return(String.Equals(CurveProviderName, other.CurveProviderName, StringComparison.OrdinalIgnoreCase) && String.Equals(CurveName, other.CurveName, StringComparison.OrdinalIgnoreCase) && EncodedPublicKey.SequenceEqualConstantTime(other.EncodedPublicKey) && (EncodedPrivateKey == null ? other.EncodedPrivateKey == null : EncodedPrivateKey.SequenceEqualConstantTime(other.EncodedPrivateKey)) && (AdditionalData == null ? other.AdditionalData == null : AdditionalData.SequenceEqualConstantTime(other.AdditionalData)) && (ConfirmationCanary == null ? other.ConfirmationCanary == null : ConfirmationCanary.SequenceEqualConstantTime(other.ConfirmationCanary))); }