private static JWTHeader GetHeader(VssSigningCredentials credentials, bool allowExpired)
        {
            //note credentials are allowed to be null here, see ValidateSigningCredentials
            JWTHeader header = new JWTHeader();

            JWTAlgorithm alg = JsonWebTokenUtilities.ValidateSigningCredentials(credentials, allowExpired);

            header.Algorithm = alg;

            if (alg != JWTAlgorithm.None)
            {
                // Some signing credentials may need to set headers for the JWT
                var jwtHeaderProvider = credentials as IJsonWebTokenHeaderProvider;
                if (jwtHeaderProvider != null)
                {
                    jwtHeaderProvider.SetHeaders(header);
                }
            }

            return(header);
        }
        private static byte[] GetSignature(JWTHeader header, JWTPayload payload, VssSigningCredentials credentials, bool allowExpired)
        {
            JWTAlgorithm alg = JsonWebTokenUtilities.ValidateSigningCredentials(credentials, allowExpired);

            return(GetSignature(header, payload, alg, credentials));
        }