Ejemplo n.º 1
0
 /// <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
     });
 }
Ejemplo n.º 2
0
 /// <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);
     }
 }
Ejemplo n.º 3
0
        /// <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)));
        }