/// <summary>
 /// Converts low level CK_MECHANISM_INFO structure to high level MechanismInfo class
 /// </summary>
 /// <param name="mechanism">Mechanism</param>
 /// <param name="ck_mechanism_info">Low level CK_MECHANISM_INFO structure</param>
 internal MechanismInfo(CKM mechanism, LowLevelAPI.CK_MECHANISM_INFO ck_mechanism_info)
 {
     _mechanism      = mechanism;
     _minKeySize     = ck_mechanism_info.MinKeySize;
     _maxKeySize     = ck_mechanism_info.MaxKeySize;
     _mechanismFlags = new MechanismFlags(ck_mechanism_info.Flags);
 }
Beispiel #2
0
        /// <summary>
        /// Obtains information about a particular mechanism possibly supported by a token
        /// </summary>
        /// <param name="mechanism">Mechanism</param>
        /// <returns>Information about mechanism</returns>
        public MechanismInfo GetMechanismInfo(CKM mechanism)
        {
            LowLevelAPI.CK_MECHANISM_INFO mechanismInfo = new LowLevelAPI.CK_MECHANISM_INFO();
            CKR rv = _p11.C_GetMechanismInfo(_slotId, mechanism, ref mechanismInfo);

            if (rv != CKR.CKR_OK)
            {
                throw new Pkcs11Exception("C_GetMechanismInfo", rv);
            }

            return(new MechanismInfo(mechanism, mechanismInfo));
        }