/// <summary> /// Imports the specified RSAParameters. /// </summary> /// <param name="parameters">The parameters for RSA.</param> public void ImportParameters(RSAParameters parameters) { bool fIncludePrivate = parameters.D != null; int cntAttribs = fIncludePrivate ? 10 : 4; CryptokiAttribute[] attribs = new CryptokiAttribute[cntAttribs]; attribs[0] = new CryptokiAttribute(CryptokiAttribute.CryptokiType.Class, Utility.ConvertToBytes((int)(fIncludePrivate ? CryptokiClass.PRIVATE_KEY : CryptokiClass.PUBLIC_KEY))); attribs[1] = new CryptokiAttribute(CryptokiAttribute.CryptokiType.KeyType, Utility.ConvertToBytes((int)CryptoKey.KeyType.RSA)); attribs[2] = new CryptokiAttribute(CryptokiAttribute.CryptokiType.Modulus, parameters.Modulus); attribs[3] = new CryptokiAttribute(CryptokiAttribute.CryptokiType.PublicExponent, parameters.Exponent); if (fIncludePrivate) { attribs[4] = new CryptokiAttribute(CryptokiAttribute.CryptokiType.PrivateExponent, parameters.D); attribs[5] = new CryptokiAttribute(CryptokiAttribute.CryptokiType.Exponent1, parameters.DP); attribs[6] = new CryptokiAttribute(CryptokiAttribute.CryptokiType.Exponent2, parameters.DQ); attribs[7] = new CryptokiAttribute(CryptokiAttribute.CryptokiType.Coefficent, parameters.InverseQ); attribs[8] = new CryptokiAttribute(CryptokiAttribute.CryptokiType.Prime1, parameters.P); attribs[9] = new CryptokiAttribute(CryptokiAttribute.CryptokiType.Prime2, parameters.Q); } KeyPair = CryptoKey.LoadKey(m_session, attribs); OwnsKeyPair = true; }
// // public methods // /// <summary> /// Imports the specified DSAParameters. /// </summary> /// <param name="parameters">The parameters for DSA.</param> public void ImportParameters(DSAParameters parameters) { bool fIncludePrivate = parameters.X != null; int cntAttribs = fIncludePrivate ? 7 : 6; CryptokiAttribute[] attribs = new CryptokiAttribute[cntAttribs]; attribs[0] = new CryptokiAttribute(CryptokiAttribute.CryptokiType.Class, Utility.ConvertToBytes((int)(fIncludePrivate ? CryptokiClass.PRIVATE_KEY : CryptokiClass.PUBLIC_KEY))); attribs[1] = new CryptokiAttribute(CryptokiAttribute.CryptokiType.KeyType, Utility.ConvertToBytes((int)CryptoKey.KeyType.DSA)); attribs[2] = new CryptokiAttribute(CryptokiAttribute.CryptokiType.Prime, parameters.P); attribs[3] = new CryptokiAttribute(CryptokiAttribute.CryptokiType.Subprime, parameters.Q); attribs[4] = new CryptokiAttribute(CryptokiAttribute.CryptokiType.Base, parameters.G); attribs[5] = new CryptokiAttribute(CryptokiAttribute.CryptokiType.PublicExponent, parameters.Y); if (fIncludePrivate) { attribs[6] = new CryptokiAttribute(CryptokiAttribute.CryptokiType.PrivateExponent, parameters.X); } KeyPair = CryptoKey.LoadKey(m_session, attribs); OwnsKeyPair = true; }