async Task IAsynchronousNonceStore.PutNonceAsync(string nonce, CancellationToken cancellationToken)
        {
            if (string.IsNullOrEmpty(nonce))
            {
                throw new ArgumentNullException(nameof(nonce));
            }

            var cache = this.cacheResolver.GetAsyncCache(typeof(INonce));

            var nonceObject = new DefaultNonce(nonce);
            await cache.PutAsync(nonce, nonceObject.GetProperties(), cancellationToken).ConfigureAwait(false);
        }
        void ISynchronousNonceStore.PutNonce(string nonce)
        {
            if (string.IsNullOrEmpty(nonce))
            {
                throw new ArgumentNullException(nameof(nonce));
            }

            var cache = this.cacheResolver.GetSyncCache(typeof(INonce));

            var nonceObject = new DefaultNonce(nonce);
            cache.Put(nonce, nonceObject.GetProperties());
        }
        void ISynchronousNonceStore.PutNonce(string nonce)
        {
            if (string.IsNullOrEmpty(nonce))
            {
                throw new ArgumentNullException(nameof(nonce));
            }

            var cache = this.cacheResolver.GetSyncCache(typeof(INonce));

            var nonceObject = new DefaultNonce(nonce);

            cache.Put(nonce, nonceObject.GetProperties());
        }
        async Task IAsynchronousNonceStore.PutNonceAsync(string nonce, CancellationToken cancellationToken)
        {
            if (string.IsNullOrEmpty(nonce))
            {
                throw new ArgumentNullException(nameof(nonce));
            }

            var cache = this.cacheResolver.GetAsyncCache(typeof(INonce));

            var nonceObject = new DefaultNonce(nonce);
            await cache.PutAsync(nonce, nonceObject.GetProperties(), cancellationToken).ConfigureAwait(false);
        }