whole_func_string: function sign (input, algorithm, secret) {
    const alg = algorithmMap[algorithm]
  
    if (!alg) {
      throw new Error(errorMap['002'].message)
    }
  
    const type = typeMap[algorithm]
    let signature
  
    switch (type) {
      case 'hmac':
        signature = hmacSign(input, alg, secret)
        break
      case 'sign':
        signature = rsaSign(input, alg, secret)
        break
      default:
        signature = hmacSign(input, alg, secret)
        break
    }
  
    return signature
  }
func_code_string: function sign (input, algorithm, secret) {
    const alg = algorithmMap[algorithm]
  
    if (!alg) {
      throw new Error(errorMap['002'].message)
    }
  
    const type = typeMap[algorithm]
    let signature
  
    switch (type) {
      case 'hmac':
        signature = hmacSign(input, alg, secret)
        break
      case 'sign':
        signature = rsaSign(input, alg, secret)
        break
      default:
        signature = hmacSign(input, alg, secret)
        break
    }
  
    return signature
  }
func_documentation_string: sign abstract method
  @param  {String} input     sign input
  @param  {String} algorithm sign algorithm
  @param  {String} secret    sign secret
  @return {String}           signature