///<param name = "the_curveID">identifier for the curve</param> ///<param name = "the_keySize">Size in bits of the key</param> ///<param name = "the_kdf">the default KDF and hash algorithm used in secret sharing operations(One of SchemeMgf1, SchemeKdf1Sp80056a, SchemeKdf2, SchemeKdf1Sp800108, NullKdfScheme)</param> ///<param name = "the_sign">If not TPM_ALG_NULL, this is the mandatory signature scheme that is required to be used with this curve.(One of KeySchemeEcdh, KeySchemeEcmqv, SigSchemeRsassa, SigSchemeRsapss, SigSchemeEcdsa, SigSchemeEcdaa, SigSchemeSm2, SigSchemeEcschnorr, EncSchemeRsaes, EncSchemeOaep, SchemeHash, NullAsymScheme)</param> ///<param name = "the_p">Fp (the modulus)</param> ///<param name = "the_a">coefficient of the linear term in the curve equation</param> ///<param name = "the_b">constant term for curve equation</param> ///<param name = "the_gX">x coordinate of base point G</param> ///<param name = "the_gY">y coordinate of base point G</param> ///<param name = "the_n">order of G</param> ///<param name = "the_h">cofactor (a size of zero indicates a cofactor of 1)</param> public AlgorithmDetailEcc( EccCurve the_curveID, ushort the_keySize, IKdfSchemeUnion the_kdf, IAsymSchemeUnion the_sign, byte[] the_p, byte[] the_a, byte[] the_b, byte[] the_gX, byte[] the_gY, byte[] the_n, byte[] the_h ) { this.curveID = the_curveID; this.keySize = the_keySize; this.kdf = the_kdf; this.sign = the_sign; this.p = the_p; this.a = the_a; this.b = the_b; this.gX = the_gX; this.gY = the_gY; this.n = the_n; this.h = the_h; }
///<param name = "the_symmetric">for a restricted decryption key, shall be set to a supported symmetric algorithm, key size. and mode. if the key is not a restricted decryption key, this field shall be set to TPM_ALG_NULL.</param> ///<param name = "the_scheme">If the sign attribute of the key is SET, then this shall be a valid signing scheme. NOTE If the sign parameter in curveID indicates a mandatory scheme, then this field shall have the same value. If the decrypt attribute of the key is SET, then this shall be a valid key exchange scheme or TPM_ALG_NULL. If the key is a Storage Key, then this field shall be TPM_ALG_NULL.(One of KeySchemeEcdh, KeySchemeEcmqv, SigSchemeRsassa, SigSchemeRsapss, SigSchemeEcdsa, SigSchemeEcdaa, SigSchemeSm2, SigSchemeEcschnorr, EncSchemeRsaes, EncSchemeOaep, SchemeHash, NullAsymScheme)</param> ///<param name = "the_curveID">ECC curve ID</param> ///<param name = "the_kdf">an optional key derivation scheme for generating a symmetric key from a Z value If the kdf parameter associated with curveID is not TPM_ALG_NULL then this is required to be NULL. NOTE There are currently no commands where this parameter has effect and, in the reference code, this field needs to be set to TPM_ALG_NULL.(One of SchemeMgf1, SchemeKdf1Sp80056a, SchemeKdf2, SchemeKdf1Sp800108, NullKdfScheme)</param> public EccParms( SymDefObject the_symmetric, IAsymSchemeUnion the_scheme, EccCurve the_curveID, IKdfSchemeUnion the_kdf ) { this.symmetric = the_symmetric; this.scheme = the_scheme; this.curveID = the_curveID; this.kdf = the_kdf; }
///<param name = "the_details">scheme parameters(One of SchemeMgf1, SchemeKdf1Sp80056a, SchemeKdf2, SchemeKdf1Sp800108, NullKdfScheme)</param> public KdfScheme( IKdfSchemeUnion the_details ) { this.details = the_details; }