/// <summary> /// Compare params /// </summary> /// <param name="parameters"></param> /// <param name="other"></param> /// <returns></returns> public static bool SameAs(this EccParams parameters, EccParams other) { if (parameters == null) { return(other == null); } if (other == null) { return(false); } if (other.Curve != parameters.Curve) { return(false); } if (!KeyEx.SameNoLeadingZeros(other.X, parameters.X)) { return(false); } if (!KeyEx.SameNoLeadingZeros(other.Y, parameters.Y)) { return(false); } if (!KeyEx.SameNoLeadingZeros(other.T, parameters.T)) { return(false); } if (!KeyEx.SameNoLeadingZeros(other.D, parameters.D)) { return(false); } return(true); }
/// <summary> /// Converts a WebKey of type RSA or RSAHSM to a RSA parameter object /// </summary> /// <param name="parameters"></param> /// <param name="includePrivateParameters">Tells if private material /// must be included.</param> /// <returns>An RSA parameter</returns> public static RSAParameters ToRSAParameters(this RsaParams parameters, bool includePrivateParameters = true) { KeyEx.VerifyNonZero(parameters.N); KeyEx.VerifyNonZero(parameters.E); if (!includePrivateParameters) { return(new RSAParameters { Modulus = KeyEx.RemoveLeadingZeros(parameters.N), Exponent = KeyEx.ForceLength(parameters.E, 4) }); } var num = KeyEx.RemoveLeadingZeros(parameters.N).Length * 8; return(new RSAParameters { Modulus = KeyEx.RemoveLeadingZeros(parameters.N), Exponent = KeyEx.ForceLength(parameters.E, 4), D = KeyEx.ForceLength(parameters.D, num / 8), DP = KeyEx.ForceLength(parameters.DP, num / 16), DQ = KeyEx.ForceLength(parameters.DQ, num / 16), InverseQ = KeyEx.ForceLength(parameters.QI, num / 16), P = KeyEx.ForceLength(parameters.P, num / 16), Q = KeyEx.ForceLength(parameters.Q, num / 16) }); }
/// <summary> /// Remove leading zeros from all RSA parameters. /// </summary> public static RsaParams Canonicalize(this RsaParams parameters) { return(new RsaParams { N = KeyEx.RemoveLeadingZeros(parameters.N), E = KeyEx.RemoveLeadingZeros(parameters.E), D = KeyEx.RemoveLeadingZeros(parameters.D), DP = KeyEx.RemoveLeadingZeros(parameters.DP), DQ = KeyEx.RemoveLeadingZeros(parameters.DQ), QI = KeyEx.RemoveLeadingZeros(parameters.QI), P = KeyEx.RemoveLeadingZeros(parameters.P), Q = KeyEx.RemoveLeadingZeros(parameters.Q), T = parameters.T }); }
/// <summary> /// Compare params /// </summary> /// <param name="parameters"></param> /// <param name="other"></param> /// <returns></returns> public static bool SameAs(this RsaParams parameters, RsaParams other) { if (parameters == null) { return(other == null); } if (other == null) { return(false); } if (!KeyEx.SameNoLeadingZeros(other.D, parameters.D)) { return(false); } if (!KeyEx.SameNoLeadingZeros(other.DP, parameters.DP)) { return(false); } if (!KeyEx.SameNoLeadingZeros(other.DQ, parameters.DQ)) { return(false); } if (!KeyEx.SameNoLeadingZeros(other.E, parameters.E)) { return(false); } if (!KeyEx.SameNoLeadingZeros(other.N, parameters.N)) { return(false); } if (!KeyEx.SameNoLeadingZeros(other.P, parameters.P)) { return(false); } if (!KeyEx.SameNoLeadingZeros(other.Q, parameters.Q)) { return(false); } if (!KeyEx.SameNoLeadingZeros(other.QI, parameters.QI)) { return(false); } if (!KeyEx.SameNoLeadingZeros(other.T, parameters.T)) { return(false); } return(true); }
/// <summary> /// Compare params /// </summary> /// <param name="parameters"></param> /// <param name="other"></param> /// <returns></returns> public static bool SameAs(this AesParams parameters, AesParams other) { if (parameters == null) { return(other == null); } if (other == null) { return(false); } if (!KeyEx.SameNoLeadingZeros(other.K, parameters.K)) { return(false); } if (!KeyEx.SameNoLeadingZeros(other.T, parameters.T)) { return(false); } return(true); }
/// <summary> /// Converts a WebKey of type EC or EC-HSM to an EC parameter object. /// </summary> /// <param name="ecParameters"></param> /// <param name="includePrivateParameters">private material must be /// included.</param> /// <returns>An EC parameter object</returns> public static ECParameters ToECParameters(this EccParams ecParameters, bool includePrivateParameters = true) { KeyEx.VerifyNonZero(ecParameters.X); KeyEx.VerifyNonZero(ecParameters.Y); var keyParameterSize = ecParameters.Curve.GetKeyParameterSize(); if (includePrivateParameters && ecParameters.D != null) { KeyEx.VerifyNonZero(ecParameters.D); ecParameters.D = KeyEx.ForceLength(ecParameters.D, keyParameterSize); } return(new ECParameters { Curve = ecParameters.Curve.ToECCurve(), D = ecParameters.D, Q = new ECPoint { X = KeyEx.ForceLength(ecParameters.X, keyParameterSize), Y = KeyEx.ForceLength(ecParameters.Y, keyParameterSize) } }); }