code: func interpolationFuncRsaDecrypt() ast.Function {
  	return ast.Function{
  		ArgTypes:   []ast.Type{ast.TypeString, ast.TypeString},
  		ReturnType: ast.TypeString,
  		Callback: func(args []interface{}) (interface{}, error) {
  			s := args[0].(string)
  			key := args[1].(string)
  
  			b, err := base64.StdEncoding.DecodeString(s)
  			if err != nil {
  				return "", fmt.Errorf("Failed to decode input %q: cipher text must be base64-encoded", s)
  			}
  
  			block, _ := pem.Decode([]byte(key))
  			if block == nil {
  				return "", fmt.Errorf("Failed to read key %q: no key found", key)
  			}
  			if block.Headers["Proc-Type"] == "4,ENCRYPTED" {
  				return "", fmt.Errorf(
  					"Failed to read key %q: password protected keys are\n"+
  						"not supported. Please decrypt the key prior to use.", key)
  			}
  
  			x509Key, err := x509.ParsePKCS1PrivateKey(block.Bytes)
  			if err != nil {
  				return "", err
  			}
  
  			out, err := rsa.DecryptPKCS1v15(nil, x509Key, b)
  			if err != nil {
  				return "", err
  			}
  
  			return string(out), nil
  		},
  	}
  }
docs: // interpolationFuncRsaDecrypt implements the "rsadecrypt" function that does
  // RSA decryption.