示例#1
0
        /// <summary>
        /// Get my private key
        /// </summary>
        /// <param name="keyType">Key type</param>
        /// <param name="me">Me</param>
        /// <returns>Private key</returns>
        public async Task <string> GetPrivateKeyAsync(KeyTypeEnum keyType)
        {
            this.logger.LogDebug($"Start load {keyType.ToString()} private key from MemoryCache...");

            try
            {
                var key = this.memoryCache.Get <CipherKey>(CacheKeyFactory.GetKeyCipher(keyType));

                if (key != null)
                {
                    this.logger.LogDebug($"Successfully load {keyType.ToString()} private key from MemoryCache. {key.ToString()}");
                    return(await Task.FromResult(key?.PrivateKey));
                }
                else
                {
                    this.logger.LogWarning($"Failed to load {keyType.ToString()} private key from MemoryCache.");
                    throw new NullReferenceException($"No available {keyType.ToString()} private key");
                }
            }
            catch (Exception ex)
            {
                this.logger.LogError(ex, $"{nameof(KeyManager)} error");
                await this.showAllSavedKeyTypes();

                return(string.Empty);
            }
        }
示例#2
0
        /// <summary>
        /// Create a default RSA public key
        /// </summary>
        /// <param name="receiver">The target receiver</param>
        /// <param name="isSender">Is </param>
        /// <returns>CipherKey object</returns>
        /// <remarks>This method will be used when cannot get receiver's public key from KMS</remarks>
        public async Task <CipherKey> CreateDefaultAsymmetricKey(KeyTypeEnum keyType, bool isIncludePrivateKey = true)
        {
            switch (keyType)
            {
            case KeyTypeEnum.RSA:
                using (var rsa = new RsaService())
                {
                    return(await rsa.CreateKeyAsync());
                }

            default:
                throw new NotImplementedException();
            }
        }
示例#3
0
        /// <summary>
        /// Get current working key
        /// </summary>
        /// <param name="keyType">Key type</param>
        /// <returns>CipherKey object</returns>
        public async Task <CipherKey> GetKeyAsync(KeyTypeEnum keyType)
        {
            this.logger.LogDebug($"Start load my {keyType.ToString()} key from MemoryCache.");

            try
            {
                var key = this.memoryCache.Get <CipherKey>(CacheKeyFactory.GetKeyCipher(keyType));

                this.logger.LogDebug($"Successfully load {keyType.ToString()} key from MemoryCache. {key.ToString()}");
                return(await Task.FromResult(key));
            }
            catch (Exception ex)
            {
                this.logger.LogError(ex, $"{nameof(KeyManager)} error");
                await this.showAllSavedKeyTypes();

                return(null);
            }
        }
示例#4
0
        public string ProvideKey(KeyTypeEnum keyType, object[] parameters, IHttpContextAccessor httpContextAccessor, string inParamKey)
        {
            string result;

            switch (keyType)
            {
            case KeyTypeEnum.FirstParam:
                result = parameters[0]?.ToString();
                break;

            case KeyTypeEnum.SecondParam:
                result = parameters[1]?.ToString();
                break;

            case KeyTypeEnum.ThirdParam:
                result = parameters[2]?.ToString();
                break;

            case KeyTypeEnum.AllParam:
                result = string.Join("-", parameters.Select(x => ConvertString(x)));
                break;

            case KeyTypeEnum.InParam:
                result = GetInParam(parameters, inParamKey);
                break;

            case KeyTypeEnum.ClientIp:
                result = GetIp(httpContextAccessor);
                break;

            default:
                result = string.Empty;
                break;
            }
            return(result);
        }
 /// <summary>
 /// Key for Secret key
 /// </summary>
 /// <return>Cache key</return>
 public static string GetKeyCipher(KeyTypeEnum keyType) => $"{KeyPrefixCipher}-{keyType.ToString()}";
示例#6
0
 protected ComparisonKey(KeyTypeEnum keyType, LibraryKey libraryKey)
 {
     LibraryKey = libraryKey;
     KeyType    = keyType;
 }
 public PrimaryKeyAttribute(KeyTypeEnum keyType = KeyTypeEnum.Manual)
 {
     this.KeyType = keyType;
 }
示例#8
0
 public Task LoadKeyAsync(byte[] mifareKey, KeyTypeEnum keySlotNumber = 0)
 {
     return(Reader.LoadKeyAsync(mifareKey, keySlotNumber));
 }
示例#9
0
 private async Task SaveKeyAsync <T>(KeyTypeEnum keyType, T key)
 {
     this.memoryCache.Set(CacheKeyFactory.GetKeyCipher(keyType), key);
     this.logger.LogDebug($"Successfully sync {keyType.ToString()} key(s) from KMS.");
     await Task.CompletedTask;
 }
示例#10
0
 public Task Authenticate(int sector, int datablock, KeyTypeEnum keytype)
 {
     return(mfStdAccess.Authenticate(GetblockAddress(sector, datablock),
                                     (keytype == KeyTypeEnum.KeyA) ? GeneralAuthenticate.GeneralAuthenticateKeyType.MifareKeyA : GeneralAuthenticate.GeneralAuthenticateKeyType.PicoTagPassKeyB,
                                     (byte)keytype));
 }
示例#11
0
 public Task LoadKeyAsync(byte[] mifareKey, KeyTypeEnum keySlotNumber = 0)
 {
     return(mfStdAccess.LoadKeyAsync(mifareKey, (byte)keySlotNumber));
 }