// public async Task<PrivateKey> GetOrAdd(PrivateKey key) // { // if (key == null) // { // throw new ArgumentNullException(nameof(key)); // } // var original = key.Id > 0 ? await _db.PrivateKeys.FindAsync(key.Id) : !string.IsNullOrWhiteSpace(key.Value) ? await _db.PrivateKeys.FirstOrDefaultAsync(k => k.Type == key.Type && k.Format == key.Format && k.Value == key.Value) : null; // if (original == null) // { // if (!key.PublicKeyId.HasValue || key.PublicKeyId.Value == 0) // { // throw new ArgumentOutOfRangeException(); // } // key.WhenAdded = DateTime.UtcNow; // await _db.PrivateKeys.AddAsync(key); // await _db.SaveChangesAsync(); // original = key; // } // return original; // } private string ComputeFingerPrint(PublicKey key, FingerPrintType type) { var authType = _typeHandlers[key.Type][key.Format]; using (var alg = GetHashAlgorithm(type)) { return(authType.ComputeFingerPrint(key, alg)); } }
private HashAlgorithm GetHashAlgorithm(FingerPrintType type) { switch (type) { case FingerPrintType.MD5: return(MD5.Create()); case FingerPrintType.SHA1: return(SHA1.Create()); } throw new ArgumentOutOfRangeException(); }